]> git.ipfire.org Git - thirdparty/nettle.git/commitdiff
* des.c (des_fix_parity): New function.
authorNiels Möller <nisse@lysator.liu.se>
Sat, 8 Sep 2001 22:26:37 +0000 (00:26 +0200)
committerNiels Möller <nisse@lysator.liu.se>
Sat, 8 Sep 2001 22:26:37 +0000 (00:26 +0200)
Rev: src/nettle/des.c:1.4
Rev: src/nettle/des.h:1.6

des.c
des.h

diff --git a/des.c b/des.c
index c95f08b6d1f990b91e5ec020d38a1eb3fa2c7cdb..28f4f503d12328fd277f85757906aa9b4c966191 100644 (file)
--- 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 51d65f028db1f001d0daea4425934d1e3d1a94f0..9903f034174ae9479740f7fc2ffa57dee607bec7 100644 (file)
--- 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 */