From 60000cebb5c0fdc6b9e9d9ff55258c5d73eb5110 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Henrik=20Grubbstr=C3=B6m=20=28Grubba=29?=
 <grubba@grubba.org>
Date: Sun, 17 Apr 2011 17:58:01 +0200
Subject: [PATCH] Nettle: Support new DES API in Nettle 2.1.

---
 src/post_modules/Nettle/cipher.cmod | 16 ++++++++++++++++
 1 file changed, 16 insertions(+)

diff --git a/src/post_modules/Nettle/cipher.cmod b/src/post_modules/Nettle/cipher.cmod
index 7e099d1368..b908825032 100644
--- a/src/post_modules/Nettle/cipher.cmod
+++ b/src/post_modules/Nettle/cipher.cmod
@@ -571,6 +571,12 @@ pike_des_set_key(void *c,
 
   if (!des_set_key(ctx, (const uint8_t *)key))
   {
+#ifndef DES_WEAK_KEY
+    /* Nettle 2.1 and later. */
+    if (!force)
+      Pike_error("DES_INFO: Key is weak.\n");
+#else
+    /* Nettle 2.0 and earlier. */
     switch (ctx->status)
     {
     case DES_WEAK_KEY:
@@ -588,6 +594,7 @@ pike_des_set_key(void *c,
     default:
       Pike_error("DES_INFO: Unexpected error, please send a bug report.\n");
     }
+#endif
   }
 }
 
@@ -746,6 +753,13 @@ pike_des3_set_key(void *c,
    * individual keys by ourself. */
   for (i = 0; i<3; i++, key += DES_KEY_SIZE)
     if (!des_set_key(&ctx->des[i], (const uint8_t *)key))
+    {
+#ifndef DES_WEAK_KEY
+      /* Nettle 2.1 and later. */
+      if (!force)
+	Pike_error("DES3_INFO: Key is weak.\n");
+#else
+      /* Nettle 2.0 and earlier. */
       switch (ctx->des[i].status)
       {
       case DES_WEAK_KEY:
@@ -762,6 +776,8 @@ pike_des3_set_key(void *c,
 	Pike_error("DES3_INFO: Key has bad parity.\n");
       default:
 	Pike_error("DES3_INFO: Unexpected error, please send a bug report.\n");
+      }
+#endif
     }
 }
 #define pike_des3_set_encrypt_key pike_des3_set_key
-- 
GitLab