Here are patches to move

  security/ophcrack
  security/chntpw
  security/samdump2

from the ancient des_old.h to the des.h API.  These three ports use
more or less the same code, so the patches look similar as well.
Basically this just manually expands the defines in <openssl/des_old.h>,
so it shouldn't change the generated code.

ok?

Index: chntpw/patches/patch-chntpw_c
===================================================================
RCS file: chntpw/patches/patch-chntpw_c
diff -N chntpw/patches/patch-chntpw_c
--- /dev/null   1 Jan 1970 00:00:00 -0000
+++ chntpw/patches/patch-chntpw_c       14 Apr 2014 19:02:09 -0000
@@ -0,0 +1,100 @@
+$OpenBSD$
+--- chntpw.c.orig      Sun Jun 27 21:50:13 2010
++++ chntpw.c   Mon Apr 14 20:11:02 2014
+@@ -141,7 +141,7 @@ void str_to_key(unsigned char *str,unsigned char *key)
+       for (i=0;i<8;i++) {
+               key[i] = (key[i]<<1);
+       }
+-      DES_set_odd_parity((des_cblock *)key);
++      DES_set_odd_parity((DES_cblock *)key);
+ }
+ 
+ /*
+@@ -186,16 +186,12 @@ void sid_to_key2(uint32_t sid,unsigned char deskey[8])
+ 
+ void E1(uchar *k, uchar *d, uchar *out)
+ {
+-  des_key_schedule ks;
+-  des_cblock deskey;
++  DES_key_schedule ks;
++  DES_cblock deskey;
+ 
+   str_to_key(k,(uchar *)deskey);
+-#ifdef __FreeBSD__
+-  des_set_key(&deskey,ks);
+-#else /* __FreeBsd__ */
+-  des_set_key((des_cblock *)deskey,ks);
+-#endif /* __FreeBsd__ */
+-  des_ecb_encrypt((des_cblock *)d,(des_cblock *)out, ks, DES_ENCRYPT);
++  DES_set_key((DES_cblock *)deskey,&ks);
++  DES_ecb_encrypt((DES_cblock *)d,(DES_cblock *)out, &ks, DES_ENCRYPT);
+ }
+ 
+ 
+@@ -503,8 +499,8 @@ char *change_pw(char *buf, int rid, int vlen, int stat
+    int dontchange = 0;
+    struct user_V *v;
+ 
+-   des_key_schedule ks1, ks2;
+-   des_cblock deskey1, deskey2;
++   DES_key_schedule ks1, ks2;
++   DES_cblock deskey1, deskey2;
+ 
+    MD4_CTX context;
+    unsigned char digest[16];
+@@ -622,21 +618,21 @@ char *change_pw(char *buf, int rid, int vlen, int stat
+ 
+    /* Get the two decrpt keys. */
+    sid_to_key1(rid,(unsigned char *)deskey1);
+-   des_set_key((des_cblock *)deskey1,ks1);
++   DES_set_key((DES_cblock *)deskey1,&ks1);
+    sid_to_key2(rid,(unsigned char *)deskey2);
+-   des_set_key((des_cblock *)deskey2,ks2);
++   DES_set_key((DES_cblock *)deskey2,&ks2);
+    
+    /* Decrypt the NT md4 password hash as two 8 byte blocks. */
+-   des_ecb_encrypt((des_cblock *)(vp+ntpw_offs ),
+-                 (des_cblock *)md4, ks1, DES_DECRYPT);
+-   des_ecb_encrypt((des_cblock *)(vp+ntpw_offs + 8),
+-                 (des_cblock *)&md4[8], ks2, DES_DECRYPT);
++   DES_ecb_encrypt((DES_cblock *)(vp+ntpw_offs ),
++                 (DES_cblock *)md4, &ks1, DES_DECRYPT);
++   DES_ecb_encrypt((DES_cblock *)(vp+ntpw_offs + 8),
++                 (DES_cblock *)&md4[8], &ks2, DES_DECRYPT);
+ 
+    /* Decrypt the lanman password hash as two 8 byte blocks. */
+-   des_ecb_encrypt((des_cblock *)(vp+lmpw_offs),
+-                 (des_cblock *)lanman, ks1, DES_DECRYPT);
+-   des_ecb_encrypt((des_cblock *)(vp+lmpw_offs + 8),
+-                 (des_cblock *)&lanman[8], ks2, DES_DECRYPT);
++   DES_ecb_encrypt((DES_cblock *)(vp+lmpw_offs),
++                 (DES_cblock *)lanman, &ks1, DES_DECRYPT);
++   DES_ecb_encrypt((DES_cblock *)(vp+lmpw_offs + 8),
++                 (DES_cblock *)&lanman[8], &ks2, DES_DECRYPT);
+       
+    if (gverbose) {
+      hexprnt("MD4 hash     : ",(unsigned char *)md4,16);
+@@ -704,15 +700,15 @@ char *change_pw(char *buf, int rid, int vlen, int stat
+      if (gverbose) hexprnt("NEW LANMAN hash : ",(unsigned char *)lanman,16);
+      
+      /* Encrypt the NT md4 password hash as two 8 byte blocks. */
+-     des_ecb_encrypt((des_cblock *)digest,
+-                   (des_cblock *)despw, ks1, DES_ENCRYPT);
+-     des_ecb_encrypt((des_cblock *)(digest+8),
+-                   (des_cblock *)&despw[8], ks2, DES_ENCRYPT);
++     DES_ecb_encrypt((DES_cblock *)digest,
++                   (DES_cblock *)despw, &ks1, DES_ENCRYPT);
++     DES_ecb_encrypt((DES_cblock *)(digest+8),
++                   (DES_cblock *)&despw[8], &ks2, DES_ENCRYPT);
+      
+-     des_ecb_encrypt((des_cblock *)lanman,
+-                   (des_cblock *)newlandes, ks1, DES_ENCRYPT);
+-     des_ecb_encrypt((des_cblock *)(lanman+8),
+-                   (des_cblock *)&newlandes[8], ks2, DES_ENCRYPT);
++     DES_ecb_encrypt((DES_cblock *)lanman,
++                   (DES_cblock *)newlandes, &ks1, DES_ENCRYPT);
++     DES_ecb_encrypt((DES_cblock *)(lanman+8),
++                   (DES_cblock *)&newlandes[8], &ks2, DES_ENCRYPT);
+      
+      if (gverbose) {
+        hexprnt("NEW DES crypt   : ",(unsigned char *)despw,16);
Index: ophcrack/patches/patch-src_lmtable_c
===================================================================
RCS file: ophcrack/patches/patch-src_lmtable_c
diff -N ophcrack/patches/patch-src_lmtable_c
--- /dev/null   1 Jan 1970 00:00:00 -0000
+++ ophcrack/patches/patch-src_lmtable_c        14 Apr 2014 19:02:09 -0000
@@ -0,0 +1,25 @@
+$OpenBSD$
+--- src/lmtable.c.orig Tue Jun  4 09:42:47 2013
++++ src/lmtable.c      Mon Apr 14 20:43:25 2014
+@@ -470,8 +470,8 @@ void lmtable_mkredux(table_t *tbl, uchar_t *hash, ucha
+ /*-------------------------------------------------------------------------*/
+ void lmtable_mkhash(uchar_t *pwd, uchar_t *hash) {
+   uchar_t key[8];
+-  des_key_schedule ks;
+-  des_cblock *magic = (des_cblock*)lmmagic;
++  DES_key_schedule ks;
++  DES_cblock *magic = (DES_cblock*)lmmagic;
+   
+   key[0] = pwd[0];
+   key[1] = (pwd[0] << 7) | (pwd[1] >> 1);
+@@ -482,7 +482,7 @@ void lmtable_mkhash(uchar_t *pwd, uchar_t *hash) {
+   key[6] = (pwd[5] << 2) | (pwd[6] >> 6);
+   key[7] = (pwd[6] << 1) ;
+ 
+-  des_set_odd_parity(&key);
+-  des_set_key(&key, ks);
+-  des_ecb_encrypt(magic, (des_cblock*)hash, ks, DES_ENCRYPT);
++  DES_set_odd_parity(&key);
++  DES_set_key(&key, &ks);
++  DES_ecb_encrypt(magic, (DES_cblock*)hash, &ks, DES_ENCRYPT);
+ }
Index: ophcrack/patches/patch-src_samdump2_samdump2_c
===================================================================
RCS file: /cvs/ports/security/ophcrack/patches/patch-src_samdump2_samdump2_c,v
retrieving revision 1.1
diff -u -p -r1.1 patch-src_samdump2_samdump2_c
--- ophcrack/patches/patch-src_samdump2_samdump2_c      20 May 2012 20:13:39 
-0000      1.1
+++ ophcrack/patches/patch-src_samdump2_samdump2_c      14 Apr 2014 19:02:09 
-0000
@@ -1,6 +1,6 @@
 $OpenBSD: patch-src_samdump2_samdump2_c,v 1.1 2012/05/20 20:13:39 naddy Exp $
---- src/samdump2/samdump2.c.orig       Sat May 19 20:24:35 2012
-+++ src/samdump2/samdump2.c    Sat May 19 20:24:41 2012
+--- src/samdump2/samdump2.c.orig       Tue Jun  4 09:42:47 2013
++++ src/samdump2/samdump2.c    Mon Apr 14 20:40:55 2014
 @@ -41,7 +41,7 @@
  #ifdef BYTE_ORDER
  #if BYTE_ORDER == LITTLE_ENDIAN
@@ -10,3 +10,68 @@ $OpenBSD: patch-src_samdump2_samdump2_c,
  #else
  #warning "Doesn't define a standard ENDIAN type"
  #endif
+@@ -72,7 +72,7 @@ void str_to_key(unsigned char *str,unsigned char *key)
+       for (i=0;i<8;i++) {
+               key[i] = (key[i]<<1);
+       }
+-      des_set_odd_parity((des_cblock *)key);
++      DES_set_odd_parity((DES_cblock *)key);
+ }
+ 
+ /*
+@@ -210,8 +210,8 @@ unsigned char* utf16_to_utf8 (unsigned char *dest, uns
+   unsigned char hbootkey[0x20];
+   
+   /* Des */
+-  des_key_schedule ks1, ks2;
+-  des_cblock deskey1, deskey2;
++  DES_key_schedule ks1, ks2;
++  DES_cblock deskey1, deskey2;
+   
+   int i, j;
+   
+@@ -419,15 +419,15 @@ unsigned char* utf16_to_utf8 (unsigned char *dest, uns
+       
+       /* Get the two decrpt keys. */
+       sid_to_key1(rid,(unsigned char *)deskey1);
+-      des_set_key_checked((des_cblock *)deskey1,ks1);
++      DES_set_key_checked((DES_cblock *)deskey1,&ks1);
+       sid_to_key2(rid,(unsigned char *)deskey2);
+-      des_set_key_unchecked((des_cblock *)deskey2,ks2);
++      DES_set_key_unchecked((DES_cblock *)deskey2,&ks2);
+       
+       /* Decrypt the lanman password hash as two 8 byte blocks. */
+-      des_ecb_encrypt((des_cblock *)obfkey,
+-                    (des_cblock *)fb, ks1, DES_DECRYPT);
+-      des_ecb_encrypt((des_cblock *)(obfkey + 8),
+-                    (des_cblock *)&fb[8], ks2, DES_DECRYPT);
++      DES_ecb_encrypt((DES_cblock *)obfkey,
++                    (DES_cblock *)fb, &ks1, DES_DECRYPT);
++      DES_ecb_encrypt((DES_cblock *)(obfkey + 8),
++                    (DES_cblock *)&fb[8], &ks2, DES_DECRYPT);
+       
+       
+       
+@@ -472,16 +472,16 @@ unsigned char* utf16_to_utf8 (unsigned char *dest, uns
+       if (lm_size != 0x14) {
+       /* Get the two decrpt keys. */
+       sid_to_key1(rid,(unsigned char *)deskey1);
+-      des_set_key((des_cblock *)deskey1,ks1);
++      DES_set_key((DES_cblock *)deskey1,&ks1);
+       sid_to_key2(rid,(unsigned char *)deskey2);
+-      des_set_key((des_cblock *)deskey2,ks2);
++      DES_set_key((DES_cblock *)deskey2,&ks2);
+       }
+ 
+       /* Decrypt the NT md4 password hash as two 8 byte blocks. */
+-      des_ecb_encrypt((des_cblock *)obfkey,
+-                    (des_cblock *)fb, ks1, DES_DECRYPT);
+-      des_ecb_encrypt((des_cblock *)(obfkey + 8),
+-                    (des_cblock *)&fb[8], ks2, DES_DECRYPT);
++      DES_ecb_encrypt((DES_cblock *)obfkey,
++                    (DES_cblock *)fb, &ks1, DES_DECRYPT);
++      DES_ecb_encrypt((DES_cblock *)(obfkey + 8),
++                    (DES_cblock *)&fb[8], &ks2, DES_DECRYPT);
+       
+       /* sf27 wrap to sf25 */
+       //sf27( obfkey, (int*)&rid, fb );
Index: samdump2/patches/patch-samdump2_c
===================================================================
RCS file: /cvs/ports/security/samdump2/patches/patch-samdump2_c,v
retrieving revision 1.1.1.1
diff -u -p -r1.1.1.1 patch-samdump2_c
--- samdump2/patches/patch-samdump2_c   2 Jun 2009 08:36:02 -0000       1.1.1.1
+++ samdump2/patches/patch-samdump2_c   14 Apr 2014 19:02:09 -0000
@@ -1,16 +1,82 @@
 $OpenBSD: patch-samdump2_c,v 1.1.1.1 2009/06/02 08:36:02 benoit Exp $
---- samdump2.c.orig    Thu Oct  2 15:44:47 2008
-+++ samdump2.c Thu May 28 23:24:23 2009
-@@ -41,7 +41,12 @@
+--- samdump2.c.orig    Fri Apr 20 14:27:00 2012
++++ samdump2.c Mon Apr 14 20:00:36 2014
+@@ -41,8 +41,13 @@
  #ifdef BYTE_ORDER
  #if BYTE_ORDER == LITTLE_ENDIAN
  #elif BYTE_ORDER == BIG_ENDIAN
 +#ifndef __OpenBSD__
  #include <byteswap.h>
-+#else
+ #else
 +#include <sys/endian.h>
 +#define __bswap_32 __swap32
 +#endif
- #else
++#else
  #warning "Doesn't define a standard ENDIAN type"
  #endif
+ #else
+@@ -72,7 +77,7 @@ void str_to_key(unsigned char *str,unsigned char *key)
+       for (i=0;i<8;i++) {
+               key[i] = (key[i]<<1);
+       }
+-      des_set_odd_parity((des_cblock *)key);
++      DES_set_odd_parity((DES_cblock *)key);
+ }
+ 
+ /*
+@@ -210,8 +215,8 @@ unsigned char* utf16_to_utf8 (unsigned char *dest, uns
+   unsigned char hbootkey[0x20];
+   
+   /* Des */
+-  des_key_schedule ks1, ks2;
+-  des_cblock deskey1, deskey2;
++  DES_key_schedule ks1, ks2;
++  DES_cblock deskey1, deskey2;
+   
+   int i, j;
+   
+@@ -419,15 +424,15 @@ unsigned char* utf16_to_utf8 (unsigned char *dest, uns
+       
+       /* Get the two decrpt keys. */
+       sid_to_key1(rid,(unsigned char *)deskey1);
+-      des_set_key_checked((des_cblock *)deskey1,ks1);
++      DES_set_key_checked((DES_cblock *)deskey1,&ks1);
+       sid_to_key2(rid,(unsigned char *)deskey2);
+-      des_set_key_unchecked((des_cblock *)deskey2,ks2);
++      DES_set_key_unchecked((DES_cblock *)deskey2,&ks2);
+       
+       /* Decrypt the lanman password hash as two 8 byte blocks. */
+-      des_ecb_encrypt((des_cblock *)obfkey,
+-                    (des_cblock *)fb, ks1, DES_DECRYPT);
+-      des_ecb_encrypt((des_cblock *)(obfkey + 8),
+-                    (des_cblock *)&fb[8], ks2, DES_DECRYPT);
++      DES_ecb_encrypt((DES_cblock *)obfkey,
++                    (DES_cblock *)fb, &ks1, DES_DECRYPT);
++      DES_ecb_encrypt((DES_cblock *)(obfkey + 8),
++                    (DES_cblock *)&fb[8], &ks2, DES_DECRYPT);
+       
+       
+       
+@@ -472,16 +477,16 @@ unsigned char* utf16_to_utf8 (unsigned char *dest, uns
+       if (lm_size != 0x14) {
+       /* Get the two decrpt keys. */
+       sid_to_key1(rid,(unsigned char *)deskey1);
+-      des_set_key((des_cblock *)deskey1,ks1);
++      DES_set_key((DES_cblock *)deskey1,&ks1);
+       sid_to_key2(rid,(unsigned char *)deskey2);
+-      des_set_key((des_cblock *)deskey2,ks2);
++      DES_set_key((DES_cblock *)deskey2,&ks2);
+       }
+ 
+       /* Decrypt the NT md4 password hash as two 8 byte blocks. */
+-      des_ecb_encrypt((des_cblock *)obfkey,
+-                    (des_cblock *)fb, ks1, DES_DECRYPT);
+-      des_ecb_encrypt((des_cblock *)(obfkey + 8),
+-                    (des_cblock *)&fb[8], ks2, DES_DECRYPT);
++      DES_ecb_encrypt((DES_cblock *)obfkey,
++                    (DES_cblock *)fb, &ks1, DES_DECRYPT);
++      DES_ecb_encrypt((DES_cblock *)(obfkey + 8),
++                    (DES_cblock *)&fb[8], &ks2, DES_DECRYPT);
+       
+       /* sf27 wrap to sf25 */
+       //sf27( obfkey, (int*)&rid, fb );

-- 
Christian "naddy" Weisgerber                          na...@mips.inka.de

Reply via email to