From 7e12e96ec6601dd5f20f498e38126499c99f8705 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Niels=20M=C3=B6ller?= <nisse@lysator.liu.se> Date: Sun, 9 Sep 2001 00:26:37 +0200 Subject: [PATCH] * des.c (des_fix_parity): New function. Rev: src/nettle/des.c:1.4 Rev: src/nettle/des.h:1.6 --- des.c | 9 +++++++++ des.h | 30 +++++++++++++++++++++++++++++- 2 files changed, 38 insertions(+), 1 deletion(-) diff --git a/des.c b/des.c index c95f08b6..28f4f503 100644 --- a/des.c +++ b/des.c @@ -52,6 +52,15 @@ static char parity[] = { #include "parity.h" }; +void +des_fix_parity(unsigned length, uint8_t *dst, + const uint8_t *src) +{ + unsigned i; + for (i = 0; i<length; i++) + dst[i] = src[i] ^ (parity[src[i]] == 8); +} + int des_set_key(struct des_ctx *ctx, const uint8_t *key) { diff --git a/des.h b/des.h index 51d65f02..9903f034 100644 --- a/des.h +++ b/des.h @@ -1,6 +1,6 @@ /* des.h * - * The des block cipher. + * The des block cipher. And triple des. */ /* nettle, low-level cryptographics library @@ -65,4 +65,32 @@ des_decrypt(struct des_ctx *ctx, unsigned length, uint8_t *dst, const uint8_t *src); +void +des_fix_parity(unsigned length, uint8_t *dst, + const uint8_t *src); + +#define DES3_KEY_SIZE 24 +#define DES3_BLOCK_SIZE DES_BLOCK_SIZE + +struct des3_ctx +{ + struct des_ctx des[3]; + enum des_error status; +}; + + +/* On success, returns 1 and sets ctx->status to DES_OK (zero). On + * error, returns 0 and sets ctx->status accordingly. */ +int +des3_set_key(struct des3_ctx *ctx, const uint8_t *key); + +void +des3_encrypt(struct des3_ctx *ctx, + unsigned length, uint8_t *dst, + const uint8_t *src); +void +des3_decrypt(struct des3_ctx *ctx, + unsigned length, uint8_t *dst, + const uint8_t *src); + #endif /* NETTLE_DES_H_INCLUDED */ -- GitLab