From 5f62a0c1ca89e9cf1d99058734a4f85ccbaa68e6 Mon Sep 17 00:00:00 2001
From: Daniel Stenberg <daniel@haxx.se>
Date: Thu, 12 Jun 2003 13:55:40 +0000
Subject: [PATCH] make it build with older OpenSSL

---
 lib/http_ntlm.c | 38 +++++++++++++++++++++++---------------
 1 file changed, 23 insertions(+), 15 deletions(-)

diff --git a/lib/http_ntlm.c b/lib/http_ntlm.c
index 639d147d3c..af0d960a7e 100644
--- a/lib/http_ntlm.c
+++ b/lib/http_ntlm.c
@@ -54,6 +54,14 @@
 #define DES_set_odd_parity des_set_odd_parity
 #define DES_set_key des_set_key
 #define DES_ecb_encrypt des_ecb_encrypt
+
+/* This is how things were done in the old days */#define DESKEY(x) x
+#define DESKEY(x) x
+#define DESKEYARG(x) x
+#else
+/* Modern version */
+#define DESKEYARG(x) *x
+#define DESKEY(x) &x
 #endif
 
 /* The last #include file should be: */
@@ -144,7 +152,7 @@ requests show that 0x18-0x1f seems to be the nonce anyway.
  * key schedule ks is also set.
  */
 static void setup_des_key(unsigned char *key_56,
-                          DES_key_schedule *ks)
+                          DES_key_schedule DESKEYARG(ks))
 {
   DES_cblock key;
 
@@ -170,19 +178,19 @@ static void calc_resp(unsigned char *keys,
                       unsigned char *plaintext,
                       unsigned char *results)
 {
-  des_key_schedule ks;
+  DES_key_schedule ks;
 
-  setup_des_key(keys, &ks);
-  DES_ecb_encrypt((DES_cblock*) plaintext, (DES_cblock*) results, &ks,
-                  DES_ENCRYPT);
+  setup_des_key(keys, DESKEY(ks));
+  DES_ecb_encrypt((DES_cblock*) plaintext, (DES_cblock*) results,
+                  DESKEY(ks), DES_ENCRYPT);
 
-  setup_des_key(keys+7, &ks);
-  DES_ecb_encrypt((DES_cblock*) plaintext, (DES_cblock*) (results+8), &ks,
-                  DES_ENCRYPT);
+  setup_des_key(keys+7, DESKEY(ks));
+  DES_ecb_encrypt((DES_cblock*) plaintext, (DES_cblock*) (results+8),
+                  DESKEY(ks), DES_ENCRYPT);
 
-  setup_des_key(keys+14, &ks);
-  DES_ecb_encrypt((DES_cblock*) plaintext, (DES_cblock*) (results+16), &ks,
-                  DES_ENCRYPT);
+  setup_des_key(keys+14, DESKEY(ks));
+  DES_ecb_encrypt((DES_cblock*) plaintext, (DES_cblock*) (results+16),
+                  DESKEY(ks), DES_ENCRYPT);
 }
 
 /*
@@ -215,12 +223,12 @@ static void mkhash(char *password,
 
     DES_key_schedule ks;
 
-    setup_des_key(pw, &ks);
-    DES_ecb_encrypt((DES_cblock *)magic, (DES_cblock *)lmbuffer, &ks,
+    setup_des_key(pw, DESKEY(ks));
+    DES_ecb_encrypt((DES_cblock *)magic, (DES_cblock *)lmbuffer, DESKEY(ks),
                     DES_ENCRYPT);
   
-    setup_des_key(pw+7, &ks);
-    DES_ecb_encrypt((DES_cblock *)magic, (DES_cblock *)lmbuffer+8, &ks,
+    setup_des_key(pw+7, DESKEY(ks));
+    DES_ecb_encrypt((DES_cblock *)magic, (DES_cblock *)lmbuffer+8, DESKEY(ks),
                     DES_ENCRYPT);
 
     memset(lmbuffer+16, 0, 5);
-- 
GitLab