diff options
| author | markus <> | 2002-09-05 12:51:50 +0000 |
|---|---|---|
| committer | markus <> | 2002-09-05 12:51:50 +0000 |
| commit | 15b5d84f9da2ce4bfae8580e56e34a859f74ad71 (patch) | |
| tree | bf939e82d7fd73cc8a01cf6959002209972091bc /src/lib/libcrypto/des/str2key.c | |
| parent | 027351f729b9e837200dae6e1520cda6577ab930 (diff) | |
| download | openbsd-15b5d84f9da2ce4bfae8580e56e34a859f74ad71.tar.gz openbsd-15b5d84f9da2ce4bfae8580e56e34a859f74ad71.tar.bz2 openbsd-15b5d84f9da2ce4bfae8580e56e34a859f74ad71.zip | |
import openssl-0.9.7-beta1
Diffstat (limited to '')
| -rw-r--r-- | src/lib/libcrypto/des/str2key.c | 70 |
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 | ||
| 61 | extern int des_check_key; | 61 | void DES_string_to_key(const char *str, DES_cblock *key) |
| 62 | |||
| 63 | void des_string_to_key(str, key) | ||
| 64 | char *str; | ||
| 65 | des_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 | ||
| 103 | void des_string_to_2keys(str, key1, key2) | 101 | void DES_string_to_2keys(const char *str, DES_cblock *key1, DES_cblock *key2) |
| 104 | char *str; | ||
| 105 | des_cblock (*key1); | ||
| 106 | des_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 | } |
