summaryrefslogtreecommitdiff
path: root/security/isakmpd/patches/patch-ai
blob: 178923b2ac2fe8b51309c6e80927d04054615ee4 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
$NetBSD: patch-ai,v 1.1 2003/09/21 08:02:24 jmc Exp $

--- crypto.c.orig	2003-09-21 02:46:15.000000000 +0000
+++ crypto.c	2003-09-21 02:54:49.000000000 +0000
@@ -99,8 +99,13 @@
 des1_init (struct keystate *ks, u_int8_t *key, u_int16_t len)
 {
   /* des_set_key returns -1 for parity problems, and -2 for weak keys */
+#if OPENSSL_VERSION_NUMBER >= 0x0090702fL
+  DES_set_odd_parity (DC key);
+  switch (DES_set_key (DC key, &ks->ks_des[0]))
+#else
   des_set_odd_parity (DC key);
   switch (des_set_key (DC key, ks->ks_des[0]))
+#endif
     {
     case -2:
       return EWEAKKEY;
@@ -112,19 +117,37 @@
 void
 des1_encrypt (struct keystate *ks, u_int8_t *d, u_int16_t len)
 {
+#if OPENSSL_VERSION_NUMBER >= 0x0090702fL
+  DES_cbc_encrypt (DC d, DC d, len, &ks->ks_des[0], DC ks->riv, DES_ENCRYPT);
+#else
   des_cbc_encrypt (DC d, DC d, len, ks->ks_des[0], DC ks->riv, DES_ENCRYPT);
+#endif
 }
 
 void
 des1_decrypt (struct keystate *ks, u_int8_t *d, u_int16_t len)
 {
+#if OPENSSL_VERSION_NUMBER >= 0x0090702fL
+  DES_cbc_encrypt (DC d, DC d, len, &ks->ks_des[0], DC ks->riv, DES_DECRYPT);
+#else
   des_cbc_encrypt (DC d, DC d, len, ks->ks_des[0], DC ks->riv, DES_DECRYPT);
+#endif
 }
 
 #ifdef USE_TRIPLEDES
 enum cryptoerr
 des3_init (struct keystate *ks, u_int8_t *key, u_int16_t len)
 {
+#if OPENSSL_VERSION_NUMBER >= 0x0090702fL
+  DES_set_odd_parity (DC key);
+  DES_set_odd_parity (DC (key + 8));
+  DES_set_odd_parity (DC (key + 16));
+
+  /* As of the draft Tripe-DES does not check for weak keys */
+  DES_set_key (DC key, &ks->ks_des[0]);
+  DES_set_key (DC (key + 8), &ks->ks_des[1]);
+  DES_set_key (DC (key + 16), &ks->ks_des[2]);
+#else
   des_set_odd_parity (DC key);
   des_set_odd_parity (DC (key + 8));
   des_set_odd_parity (DC (key + 16));
@@ -133,6 +156,7 @@
   des_set_key (DC key, ks->ks_des[0]);
   des_set_key (DC (key + 8), ks->ks_des[1]);
   des_set_key (DC (key + 16), ks->ks_des[2]);
+#endif
 
   return EOKAY;
 }
@@ -143,8 +167,13 @@
   u_int8_t iv[MAXBLK];
 
   memcpy (iv, ks->riv, ks->xf->blocksize);
+#if OPENSSL_VERSION_NUMBER >= 0x0090702fL
+  DES_ede3_cbc_encrypt (DC data, DC data, len, &ks->ks_des[0], &ks->ks_des[1],
+			&ks->ks_des[2], DC iv, DES_ENCRYPT);
+#else
   des_ede3_cbc_encrypt (DC data, DC data, len, ks->ks_des[0], ks->ks_des[1],
 			ks->ks_des[2], DC iv, DES_ENCRYPT);
+#endif
 }
 
 void
@@ -153,8 +182,13 @@
   u_int8_t iv[MAXBLK];
 
   memcpy (iv, ks->riv, ks->xf->blocksize);
+#if OPENSSL_VERSION_NUMBER >= 0x0090702fL
+  DES_ede3_cbc_encrypt (DC data, DC data, len, &ks->ks_des[0], &ks->ks_des[1],
+			&ks->ks_des[2], DC iv, DES_DECRYPT);
+#else
   des_ede3_cbc_encrypt (DC data, DC data, len, ks->ks_des[0], ks->ks_des[1],
 			ks->ks_des[2], DC iv, DES_DECRYPT);
+#endif
 }
 #undef DC
 #endif /* USE_TRIPLEDES */