summaryrefslogtreecommitdiff
path: root/src/lib/libcrypto/des/str2key.c
diff options
context:
space:
mode:
authormarkus <>2002-09-05 12:51:50 +0000
committermarkus <>2002-09-05 12:51:50 +0000
commit15b5d84f9da2ce4bfae8580e56e34a859f74ad71 (patch)
treebf939e82d7fd73cc8a01cf6959002209972091bc /src/lib/libcrypto/des/str2key.c
parent027351f729b9e837200dae6e1520cda6577ab930 (diff)
downloadopenbsd-15b5d84f9da2ce4bfae8580e56e34a859f74ad71.tar.gz
openbsd-15b5d84f9da2ce4bfae8580e56e34a859f74ad71.tar.bz2
openbsd-15b5d84f9da2ce4bfae8580e56e34a859f74ad71.zip
import openssl-0.9.7-beta1
Diffstat (limited to 'src/lib/libcrypto/des/str2key.c')
-rw-r--r--src/lib/libcrypto/des/str2key.c70
1 files changed, 36 insertions, 34 deletions
diff --git a/src/lib/libcrypto/des/str2key.c b/src/lib/libcrypto/des/str2key.c
index 3365c1bcf3..36c3f81d99 100644
--- a/src/lib/libcrypto/des/str2key.c
+++ b/src/lib/libcrypto/des/str2key.c
@@ -58,13 +58,9 @@
58 58
59#include "des_locl.h" 59#include "des_locl.h"
60 60
61extern int des_check_key; 61void DES_string_to_key(const char *str, DES_cblock *key)
62
63void des_string_to_key(str, key)
64char *str;
65des_cblock (*key);
66 { 62 {
67 des_key_schedule ks; 63 DES_key_schedule ks;
68 int i,length; 64 int i,length;
69 register unsigned char j; 65 register unsigned char j;
70 66
@@ -89,23 +85,22 @@ des_cblock (*key);
89 } 85 }
90 } 86 }
91#endif 87#endif
92 des_set_odd_parity((des_cblock *)key); 88 DES_set_odd_parity(key);
93 i=des_check_key; 89#ifdef EXPERIMENTAL_STR_TO_STRONG_KEY
94 des_check_key=0; 90 if(DES_is_weak_key(key))
95 des_set_key((des_cblock *)key,ks); 91 (*key)[7] ^= 0xF0;
96 des_check_key=i; 92 DES_set_key(key,&ks);
97 des_cbc_cksum((des_cblock *)str,(des_cblock *)key,(long)length,ks, 93#else
98 (des_cblock *)key); 94 DES_set_key_unchecked(key,&ks);
99 memset(ks,0,sizeof(ks)); 95#endif
100 des_set_odd_parity((des_cblock *)key); 96 DES_cbc_cksum((const unsigned char*)str,key,length,&ks,key);
97 memset(&ks,0,sizeof(ks));
98 DES_set_odd_parity(key);
101 } 99 }
102 100
103void des_string_to_2keys(str, key1, key2) 101void DES_string_to_2keys(const char *str, DES_cblock *key1, DES_cblock *key2)
104char *str;
105des_cblock (*key1);
106des_cblock (*key2);
107 { 102 {
108 des_key_schedule ks; 103 DES_key_schedule ks;
109 int i,length; 104 int i,length;
110 register unsigned char j; 105 register unsigned char j;
111 106
@@ -154,18 +149,25 @@ des_cblock (*key2);
154 } 149 }
155 if (length <= 8) memcpy(key2,key1,8); 150 if (length <= 8) memcpy(key2,key1,8);
156#endif 151#endif
157 des_set_odd_parity((des_cblock *)key1); 152 DES_set_odd_parity(key1);
158 des_set_odd_parity((des_cblock *)key2); 153 DES_set_odd_parity(key2);
159 i=des_check_key; 154#ifdef EXPERIMENTAL_STR_TO_STRONG_KEY
160 des_check_key=0; 155 if(DES_is_weak_key(key1))
161 des_set_key((des_cblock *)key1,ks); 156 (*key1)[7] ^= 0xF0;
162 des_cbc_cksum((des_cblock *)str,(des_cblock *)key1,(long)length,ks, 157 DES_set_key(key1,&ks);
163 (des_cblock *)key1); 158#else
164 des_set_key((des_cblock *)key2,ks); 159 DES_set_key_unchecked(key1,&ks);
165 des_cbc_cksum((des_cblock *)str,(des_cblock *)key2,(long)length,ks, 160#endif
166 (des_cblock *)key2); 161 DES_cbc_cksum((const unsigned char*)str,key1,length,&ks,key1);
167 des_check_key=i; 162#ifdef EXPERIMENTAL_STR_TO_STRONG_KEY
168 memset(ks,0,sizeof(ks)); 163 if(DES_is_weak_key(key2))
169 des_set_odd_parity(key1); 164 (*key2)[7] ^= 0xF0;
170 des_set_odd_parity(key2); 165 DES_set_key(key2,&ks);
166#else
167 DES_set_key_unchecked(key2,&ks);
168#endif
169 DES_cbc_cksum((const unsigned char*)str,key2,length,&ks,key2);
170 memset(&ks,0,sizeof(ks));
171 DES_set_odd_parity(key1);
172 DES_set_odd_parity(key2);
171 } 173 }