diff options
Diffstat (limited to 'src/lib/libcrypto/des')
-rw-r--r-- | src/lib/libcrypto/des/Makefile.ssl | 14 | ||||
-rw-r--r-- | src/lib/libcrypto/des/cbc3_enc.c | 20 | ||||
-rw-r--r-- | src/lib/libcrypto/des/des.c | 22 | ||||
-rw-r--r-- | src/lib/libcrypto/des/des.h | 7 | ||||
-rw-r--r-- | src/lib/libcrypto/des/des_locl.h | 10 | ||||
-rw-r--r-- | src/lib/libcrypto/des/des_opts.c | 10 | ||||
-rw-r--r-- | src/lib/libcrypto/des/destest.c | 81 | ||||
-rw-r--r-- | src/lib/libcrypto/des/enc_read.c | 4 | ||||
-rw-r--r-- | src/lib/libcrypto/des/enc_writ.c | 13 | ||||
-rw-r--r-- | src/lib/libcrypto/des/fcrypt.c | 10 | ||||
-rw-r--r-- | src/lib/libcrypto/des/fcrypt_b.c | 2 | ||||
-rw-r--r-- | src/lib/libcrypto/des/rand_key.c | 153 | ||||
-rw-r--r-- | src/lib/libcrypto/des/read_pwd.c | 19 | ||||
-rw-r--r-- | src/lib/libcrypto/des/rpc_enc.c | 2 | ||||
-rw-r--r-- | src/lib/libcrypto/des/set_key.c | 37 | ||||
-rw-r--r-- | src/lib/libcrypto/des/speed.c | 10 | ||||
-rw-r--r-- | src/lib/libcrypto/des/str2key.c | 20 |
17 files changed, 213 insertions, 221 deletions
diff --git a/src/lib/libcrypto/des/Makefile.ssl b/src/lib/libcrypto/des/Makefile.ssl index 7f9600cf02..41976655e9 100644 --- a/src/lib/libcrypto/des/Makefile.ssl +++ b/src/lib/libcrypto/des/Makefile.ssl | |||
@@ -15,6 +15,7 @@ MAKE= make -f Makefile.ssl | |||
15 | MAKEDEPEND= $(TOP)/util/domd $(TOP) | 15 | MAKEDEPEND= $(TOP)/util/domd $(TOP) |
16 | MAKEFILE= Makefile.ssl | 16 | MAKEFILE= Makefile.ssl |
17 | AR= ar r | 17 | AR= ar r |
18 | RANLIB= ranlib | ||
18 | DES_ENC= des_enc.o fcrypt_b.o | 19 | DES_ENC= des_enc.o fcrypt_b.o |
19 | # or use | 20 | # or use |
20 | #DES_ENC= dx86-elf.o yx86-elf.o | 21 | #DES_ENC= dx86-elf.o yx86-elf.o |
@@ -162,14 +163,15 @@ enc_read.o: ../../include/openssl/bio.h ../../include/openssl/buffer.h | |||
162 | enc_read.o: ../../include/openssl/crypto.h ../../include/openssl/des.h | 163 | enc_read.o: ../../include/openssl/crypto.h ../../include/openssl/des.h |
163 | enc_read.o: ../../include/openssl/e_os.h ../../include/openssl/e_os2.h | 164 | enc_read.o: ../../include/openssl/e_os.h ../../include/openssl/e_os2.h |
164 | enc_read.o: ../../include/openssl/err.h ../../include/openssl/opensslconf.h | 165 | enc_read.o: ../../include/openssl/err.h ../../include/openssl/opensslconf.h |
165 | enc_read.o: ../../include/openssl/opensslv.h ../../include/openssl/stack.h | 166 | enc_read.o: ../../include/openssl/opensslv.h ../../include/openssl/safestack.h |
166 | enc_read.o: ../cryptlib.h des_locl.h | 167 | enc_read.o: ../../include/openssl/stack.h ../cryptlib.h des_locl.h |
167 | enc_writ.o: ../../include/openssl/bio.h ../../include/openssl/buffer.h | 168 | enc_writ.o: ../../include/openssl/bio.h ../../include/openssl/buffer.h |
168 | enc_writ.o: ../../include/openssl/crypto.h ../../include/openssl/des.h | 169 | enc_writ.o: ../../include/openssl/crypto.h ../../include/openssl/des.h |
169 | enc_writ.o: ../../include/openssl/e_os.h ../../include/openssl/e_os2.h | 170 | enc_writ.o: ../../include/openssl/e_os.h ../../include/openssl/e_os2.h |
170 | enc_writ.o: ../../include/openssl/err.h ../../include/openssl/opensslconf.h | 171 | enc_writ.o: ../../include/openssl/err.h ../../include/openssl/opensslconf.h |
171 | enc_writ.o: ../../include/openssl/opensslv.h ../../include/openssl/rand.h | 172 | enc_writ.o: ../../include/openssl/opensslv.h ../../include/openssl/rand.h |
172 | enc_writ.o: ../../include/openssl/stack.h ../cryptlib.h des_locl.h | 173 | enc_writ.o: ../../include/openssl/safestack.h ../../include/openssl/stack.h |
174 | enc_writ.o: ../cryptlib.h des_locl.h | ||
173 | fcrypt.o: ../../include/openssl/des.h ../../include/openssl/des.h | 175 | fcrypt.o: ../../include/openssl/des.h ../../include/openssl/des.h |
174 | fcrypt.o: ../../include/openssl/e_os2.h ../../include/openssl/e_os2.h | 176 | fcrypt.o: ../../include/openssl/e_os2.h ../../include/openssl/e_os2.h |
175 | fcrypt.o: ../../include/openssl/opensslconf.h | 177 | fcrypt.o: ../../include/openssl/opensslconf.h |
@@ -187,15 +189,15 @@ pcbc_enc.o: ../../include/openssl/opensslconf.h des_locl.h | |||
187 | qud_cksm.o: ../../include/openssl/des.h ../../include/openssl/e_os2.h | 189 | qud_cksm.o: ../../include/openssl/des.h ../../include/openssl/e_os2.h |
188 | qud_cksm.o: ../../include/openssl/opensslconf.h des_locl.h | 190 | qud_cksm.o: ../../include/openssl/opensslconf.h des_locl.h |
189 | rand_key.o: ../../include/openssl/des.h ../../include/openssl/e_os2.h | 191 | rand_key.o: ../../include/openssl/des.h ../../include/openssl/e_os2.h |
190 | rand_key.o: ../../include/openssl/opensslconf.h des_locl.h | 192 | rand_key.o: ../../include/openssl/opensslconf.h ../../include/openssl/rand.h |
191 | read2pwd.o: ../../include/openssl/des.h ../../include/openssl/e_os2.h | 193 | read2pwd.o: ../../include/openssl/des.h ../../include/openssl/e_os2.h |
192 | read2pwd.o: ../../include/openssl/opensslconf.h des_locl.h | 194 | read2pwd.o: ../../include/openssl/opensslconf.h des_locl.h |
193 | read_pwd.o: ../../include/openssl/bio.h ../../include/openssl/buffer.h | 195 | read_pwd.o: ../../include/openssl/bio.h ../../include/openssl/buffer.h |
194 | read_pwd.o: ../../include/openssl/crypto.h ../../include/openssl/des.h | 196 | read_pwd.o: ../../include/openssl/crypto.h ../../include/openssl/des.h |
195 | read_pwd.o: ../../include/openssl/e_os.h ../../include/openssl/e_os2.h | 197 | read_pwd.o: ../../include/openssl/e_os.h ../../include/openssl/e_os2.h |
196 | read_pwd.o: ../../include/openssl/err.h ../../include/openssl/opensslconf.h | 198 | read_pwd.o: ../../include/openssl/err.h ../../include/openssl/opensslconf.h |
197 | read_pwd.o: ../../include/openssl/opensslv.h ../../include/openssl/stack.h | 199 | read_pwd.o: ../../include/openssl/opensslv.h ../../include/openssl/safestack.h |
198 | read_pwd.o: ../cryptlib.h des_locl.h | 200 | read_pwd.o: ../../include/openssl/stack.h ../cryptlib.h des_locl.h |
199 | rpc_enc.o: ../../include/openssl/des.h ../../include/openssl/e_os2.h | 201 | rpc_enc.o: ../../include/openssl/des.h ../../include/openssl/e_os2.h |
200 | rpc_enc.o: ../../include/openssl/opensslconf.h des_locl.h des_ver.h rpc_des.h | 202 | rpc_enc.o: ../../include/openssl/opensslconf.h des_locl.h des_ver.h rpc_des.h |
201 | set_key.o: ../../include/openssl/des.h ../../include/openssl/e_os2.h | 203 | set_key.o: ../../include/openssl/des.h ../../include/openssl/e_os2.h |
diff --git a/src/lib/libcrypto/des/cbc3_enc.c b/src/lib/libcrypto/des/cbc3_enc.c index 3863a676d4..527e74f3de 100644 --- a/src/lib/libcrypto/des/cbc3_enc.c +++ b/src/lib/libcrypto/des/cbc3_enc.c | |||
@@ -58,7 +58,7 @@ | |||
58 | 58 | ||
59 | #include "des_locl.h" | 59 | #include "des_locl.h" |
60 | 60 | ||
61 | /* HAS BUGS? DON'T USE - this is only present for use in des.c */ | 61 | /* HAS BUGS! DON'T USE - this is only present for use in des.c */ |
62 | void des_3cbc_encrypt(des_cblock *input, des_cblock *output, long length, | 62 | void des_3cbc_encrypt(des_cblock *input, des_cblock *output, long length, |
63 | des_key_schedule ks1, des_key_schedule ks2, des_cblock *iv1, | 63 | des_key_schedule ks1, des_key_schedule ks2, des_cblock *iv1, |
64 | des_cblock *iv2, int enc) | 64 | des_cblock *iv2, int enc) |
@@ -69,11 +69,14 @@ void des_3cbc_encrypt(des_cblock *input, des_cblock *output, long length, | |||
69 | 69 | ||
70 | if (enc == DES_ENCRYPT) | 70 | if (enc == DES_ENCRYPT) |
71 | { | 71 | { |
72 | des_cbc_encrypt(input,output,length,ks1,iv1,enc); | 72 | des_cbc_encrypt((unsigned char*)input, |
73 | (unsigned char*)output,length,ks1,iv1,enc); | ||
73 | if (length >= sizeof(des_cblock)) | 74 | if (length >= sizeof(des_cblock)) |
74 | memcpy(niv1,output[off],sizeof(des_cblock)); | 75 | memcpy(niv1,output[off],sizeof(des_cblock)); |
75 | des_cbc_encrypt(output,output,l8,ks2,iv1,!enc); | 76 | des_cbc_encrypt((unsigned char*)output, |
76 | des_cbc_encrypt(output,output,l8,ks1,iv2, enc); | 77 | (unsigned char*)output,l8,ks2,iv1,!enc); |
78 | des_cbc_encrypt((unsigned char*)output, | ||
79 | (unsigned char*)output,l8,ks1,iv2,enc); | ||
77 | if (length >= sizeof(des_cblock)) | 80 | if (length >= sizeof(des_cblock)) |
78 | memcpy(niv2,output[off],sizeof(des_cblock)); | 81 | memcpy(niv2,output[off],sizeof(des_cblock)); |
79 | } | 82 | } |
@@ -81,11 +84,14 @@ void des_3cbc_encrypt(des_cblock *input, des_cblock *output, long length, | |||
81 | { | 84 | { |
82 | if (length >= sizeof(des_cblock)) | 85 | if (length >= sizeof(des_cblock)) |
83 | memcpy(niv2,input[off],sizeof(des_cblock)); | 86 | memcpy(niv2,input[off],sizeof(des_cblock)); |
84 | des_cbc_encrypt(input,output,l8,ks1,iv2,enc); | 87 | des_cbc_encrypt((unsigned char*)input, |
85 | des_cbc_encrypt(output,output,l8,ks2,iv1,!enc); | 88 | (unsigned char*)output,l8,ks1,iv2,enc); |
89 | des_cbc_encrypt((unsigned char*)output, | ||
90 | (unsigned char*)output,l8,ks2,iv1,!enc); | ||
86 | if (length >= sizeof(des_cblock)) | 91 | if (length >= sizeof(des_cblock)) |
87 | memcpy(niv1,output[off],sizeof(des_cblock)); | 92 | memcpy(niv1,output[off],sizeof(des_cblock)); |
88 | des_cbc_encrypt(output,output,length,ks1,iv1, enc); | 93 | des_cbc_encrypt((unsigned char*)output, |
94 | (unsigned char*)output,length,ks1,iv1,enc); | ||
89 | } | 95 | } |
90 | memcpy(*iv1,niv1,sizeof(des_cblock)); | 96 | memcpy(*iv1,niv1,sizeof(des_cblock)); |
91 | memcpy(*iv2,niv2,sizeof(des_cblock)); | 97 | memcpy(*iv2,niv2,sizeof(des_cblock)); |
diff --git a/src/lib/libcrypto/des/des.c b/src/lib/libcrypto/des/des.c index b2d7f0da78..91d7153b34 100644 --- a/src/lib/libcrypto/des/des.c +++ b/src/lib/libcrypto/des/des.c | |||
@@ -325,25 +325,25 @@ void usage(void) | |||
325 | "des <options> [input-file [output-file]]", | 325 | "des <options> [input-file [output-file]]", |
326 | "options:", | 326 | "options:", |
327 | "-v : des(1) version number", | 327 | "-v : des(1) version number", |
328 | "-e : encrypt using sunOS compatible user key to DES key conversion.", | 328 | "-e : encrypt using SunOS compatible user key to DES key conversion.", |
329 | "-E : encrypt ", | 329 | "-E : encrypt ", |
330 | "-d : decrypt using sunOS compatible user key to DES key conversion.", | 330 | "-d : decrypt using SunOS compatible user key to DES key conversion.", |
331 | "-D : decrypt ", | 331 | "-D : decrypt ", |
332 | "-c[ckname] : generate a cbc_cksum using sunOS compatible user key to", | 332 | "-c[ckname] : generate a cbc_cksum using SunOS compatible user key to", |
333 | " DES key conversion and output to ckname (stdout default,", | 333 | " DES key conversion and output to ckname (stdout default,", |
334 | " stderr if data being output on stdout). The checksum is", | 334 | " stderr if data being output on stdout). The checksum is", |
335 | " generated before encryption and after decryption if used", | 335 | " generated before encryption and after decryption if used", |
336 | " in conjunction with -[eEdD].", | 336 | " in conjunction with -[eEdD].", |
337 | "-C[ckname] : generate a cbc_cksum as for -c but compatible with -[ED].", | 337 | "-C[ckname] : generate a cbc_cksum as for -c but compatible with -[ED].", |
338 | "-k key : use key 'key'", | 338 | "-k key : use key 'key'", |
339 | "-h : the key that is entered will be a hexidecimal number", | 339 | "-h : the key that is entered will be a hexadecimal number", |
340 | " that is used directly as the des key", | 340 | " that is used directly as the des key", |
341 | "-u[uuname] : input file is uudecoded if -[dD] or output uuencoded data if -[eE]", | 341 | "-u[uuname] : input file is uudecoded if -[dD] or output uuencoded data if -[eE]", |
342 | " (uuname is the filename to put in the uuencode header).", | 342 | " (uuname is the filename to put in the uuencode header).", |
343 | "-b : encrypt using DES in ecb encryption mode, the defaut is cbc mode.", | 343 | "-b : encrypt using DES in ecb encryption mode, the default is cbc mode.", |
344 | "-3 : encrypt using tripple DES encryption. This uses 2 keys", | 344 | "-3 : encrypt using triple DES encryption. This uses 2 keys", |
345 | " generated from the input key. If the input key is less", | 345 | " generated from the input key. If the input key is less", |
346 | " than 8 characters long, this is equivelent to normal", | 346 | " than 8 characters long, this is equivalent to normal", |
347 | " encryption. Default is triple cbc, -b makes it triple ecb.", | 347 | " encryption. Default is triple cbc, -b makes it triple ecb.", |
348 | NULL | 348 | NULL |
349 | }; | 349 | }; |
@@ -425,7 +425,7 @@ void doencryption(void) | |||
425 | else | 425 | else |
426 | k2[i-8]=k; | 426 | k2[i-8]=k; |
427 | } | 427 | } |
428 | des_set_key(&k2,ks2); | 428 | des_set_key_unchecked(&k2,ks2); |
429 | memset(k2,0,sizeof(k2)); | 429 | memset(k2,0,sizeof(k2)); |
430 | } | 430 | } |
431 | else if (longk || flag3) | 431 | else if (longk || flag3) |
@@ -433,7 +433,7 @@ void doencryption(void) | |||
433 | if (flag3) | 433 | if (flag3) |
434 | { | 434 | { |
435 | des_string_to_2keys(key,&kk,&k2); | 435 | des_string_to_2keys(key,&kk,&k2); |
436 | des_set_key(&k2,ks2); | 436 | des_set_key_unchecked(&k2,ks2); |
437 | memset(k2,0,sizeof(k2)); | 437 | memset(k2,0,sizeof(k2)); |
438 | } | 438 | } |
439 | else | 439 | else |
@@ -455,7 +455,7 @@ void doencryption(void) | |||
455 | kk[i]=key[i]|0x80; | 455 | kk[i]=key[i]|0x80; |
456 | } | 456 | } |
457 | 457 | ||
458 | des_set_key(&kk,ks); | 458 | des_set_key_unchecked(&kk,ks); |
459 | memset(key,0,sizeof(key)); | 459 | memset(key,0,sizeof(key)); |
460 | memset(kk,0,sizeof(kk)); | 460 | memset(kk,0,sizeof(kk)); |
461 | /* woops - A bug that does not showup under unix :-( */ | 461 | /* woops - A bug that does not showup under unix :-( */ |
@@ -484,7 +484,7 @@ void doencryption(void) | |||
484 | if (feof(DES_IN)) | 484 | if (feof(DES_IN)) |
485 | { | 485 | { |
486 | for (i=7-rem; i>0; i--) | 486 | for (i=7-rem; i>0; i--) |
487 | RAND_bytes(buf + l++, 1); | 487 | RAND_pseudo_bytes(buf + l++, 1); |
488 | buf[l++]=rem; | 488 | buf[l++]=rem; |
489 | ex=1; | 489 | ex=1; |
490 | len+=rem; | 490 | len+=rem; |
diff --git a/src/lib/libcrypto/des/des.h b/src/lib/libcrypto/des/des.h index 67f90aaf17..98a9c4127c 100644 --- a/src/lib/libcrypto/des/des.h +++ b/src/lib/libcrypto/des/des.h | |||
@@ -186,15 +186,20 @@ void des_pcbc_encrypt(const unsigned char *input,unsigned char *output, | |||
186 | DES_LONG des_quad_cksum(const unsigned char *input,des_cblock output[], | 186 | DES_LONG des_quad_cksum(const unsigned char *input,des_cblock output[], |
187 | long length,int out_count,des_cblock *seed); | 187 | long length,int out_count,des_cblock *seed); |
188 | void des_random_seed(des_cblock *key); | 188 | void des_random_seed(des_cblock *key); |
189 | void des_random_key(des_cblock *ret); | 189 | int des_random_key(des_cblock *ret); |
190 | int des_read_password(des_cblock *key,const char *prompt,int verify); | 190 | int des_read_password(des_cblock *key,const char *prompt,int verify); |
191 | int des_read_2passwords(des_cblock *key1,des_cblock *key2, | 191 | int des_read_2passwords(des_cblock *key1,des_cblock *key2, |
192 | const char *prompt,int verify); | 192 | const char *prompt,int verify); |
193 | int des_read_pw_string(char *buf,int length,const char *prompt,int verify); | 193 | int des_read_pw_string(char *buf,int length,const char *prompt,int verify); |
194 | void des_set_odd_parity(des_cblock *key); | 194 | void des_set_odd_parity(des_cblock *key); |
195 | int des_is_weak_key(const_des_cblock *key); | 195 | int des_is_weak_key(const_des_cblock *key); |
196 | /* des_set_key (= set_key = des_key_sched = key_sched) calls | ||
197 | * des_set_key_checked if global variable des_check_key is set, | ||
198 | * des_set_key_unchecked otherwise. */ | ||
196 | int des_set_key(const_des_cblock *key,des_key_schedule schedule); | 199 | int des_set_key(const_des_cblock *key,des_key_schedule schedule); |
197 | int des_key_sched(const_des_cblock *key,des_key_schedule schedule); | 200 | int des_key_sched(const_des_cblock *key,des_key_schedule schedule); |
201 | int des_set_key_checked(const_des_cblock *key,des_key_schedule schedule); | ||
202 | void des_set_key_unchecked(const_des_cblock *key,des_key_schedule schedule); | ||
198 | void des_string_to_key(const char *str,des_cblock *key); | 203 | void des_string_to_key(const char *str,des_cblock *key); |
199 | void des_string_to_2keys(const char *str,des_cblock *key1,des_cblock *key2); | 204 | void des_string_to_2keys(const char *str,des_cblock *key1,des_cblock *key2); |
200 | void des_cfb64_encrypt(const unsigned char *in,unsigned char *out,long length, | 205 | void des_cfb64_encrypt(const unsigned char *in,unsigned char *out,long length, |
diff --git a/src/lib/libcrypto/des/des_locl.h b/src/lib/libcrypto/des/des_locl.h index d6ea17cb68..4dfed199a7 100644 --- a/src/lib/libcrypto/des/des_locl.h +++ b/src/lib/libcrypto/des/des_locl.h | |||
@@ -72,7 +72,11 @@ | |||
72 | 72 | ||
73 | #ifndef MSDOS | 73 | #ifndef MSDOS |
74 | #if !defined(VMS) || defined(__DECC) | 74 | #if !defined(VMS) || defined(__DECC) |
75 | #include OPENSSL_UNISTD | 75 | #ifdef OPENSSL_UNISTD |
76 | # include OPENSSL_UNISTD | ||
77 | #else | ||
78 | # include <unistd.h> | ||
79 | #endif | ||
76 | #include <math.h> | 80 | #include <math.h> |
77 | #endif | 81 | #endif |
78 | #endif | 82 | #endif |
@@ -178,14 +182,14 @@ | |||
178 | #endif | 182 | #endif |
179 | 183 | ||
180 | /* The changes to this macro may help or hinder, depending on the | 184 | /* The changes to this macro may help or hinder, depending on the |
181 | * compiler and the achitecture. gcc2 always seems to do well :-). | 185 | * compiler and the architecture. gcc2 always seems to do well :-). |
182 | * Inspired by Dana How <how@isl.stanford.edu> | 186 | * Inspired by Dana How <how@isl.stanford.edu> |
183 | * DO NOT use the alternative version on machines with 8 byte longs. | 187 | * DO NOT use the alternative version on machines with 8 byte longs. |
184 | * It does not seem to work on the Alpha, even when DES_LONG is 4 | 188 | * It does not seem to work on the Alpha, even when DES_LONG is 4 |
185 | * bytes, probably an issue of accessing non-word aligned objects :-( */ | 189 | * bytes, probably an issue of accessing non-word aligned objects :-( */ |
186 | #ifdef DES_PTR | 190 | #ifdef DES_PTR |
187 | 191 | ||
188 | /* It recently occured to me that 0^0^0^0^0^0^0 == 0, so there | 192 | /* It recently occurred to me that 0^0^0^0^0^0^0 == 0, so there |
189 | * is no reason to not xor all the sub items together. This potentially | 193 | * is no reason to not xor all the sub items together. This potentially |
190 | * saves a register since things can be xored directly into L */ | 194 | * saves a register since things can be xored directly into L */ |
191 | 195 | ||
diff --git a/src/lib/libcrypto/des/des_opts.c b/src/lib/libcrypto/des/des_opts.c index 746c456f8f..b2ca7ac31d 100644 --- a/src/lib/libcrypto/des/des_opts.c +++ b/src/lib/libcrypto/des/des_opts.c | |||
@@ -434,17 +434,17 @@ int main(int argc, char **argv) | |||
434 | } | 434 | } |
435 | 435 | ||
436 | #ifndef TIMES | 436 | #ifndef TIMES |
437 | fprintf(stderr,"To get the most acurate results, try to run this\n"); | 437 | fprintf(stderr,"To get the most accurate results, try to run this\n"); |
438 | fprintf(stderr,"program when this computer is idle.\n"); | 438 | fprintf(stderr,"program when this computer is idle.\n"); |
439 | #endif | 439 | #endif |
440 | 440 | ||
441 | des_set_key(&key,sch); | 441 | des_set_key_unchecked(&key,sch); |
442 | des_set_key(&key2,sch2); | 442 | des_set_key_unchecked(&key2,sch2); |
443 | des_set_key(&key3,sch3); | 443 | des_set_key_unchecked(&key3,sch3); |
444 | 444 | ||
445 | #ifndef SIGALRM | 445 | #ifndef SIGALRM |
446 | fprintf(stderr,"First we calculate the approximate speed ...\n"); | 446 | fprintf(stderr,"First we calculate the approximate speed ...\n"); |
447 | des_set_key(&key,sch); | 447 | des_set_key_unchecked(&key,sch); |
448 | count=10; | 448 | count=10; |
449 | do { | 449 | do { |
450 | long i; | 450 | long i; |
diff --git a/src/lib/libcrypto/des/destest.c b/src/lib/libcrypto/des/destest.c index 5a04fc9298..9ad4ecb072 100644 --- a/src/lib/libcrypto/des/destest.c +++ b/src/lib/libcrypto/des/destest.c | |||
@@ -234,7 +234,7 @@ static unsigned char cipher_ecb2[NUM_TESTS-1][8]={ | |||
234 | {0x08,0xD7,0xB4,0xFB,0x62,0x9D,0x08,0x85}}; | 234 | {0x08,0xD7,0xB4,0xFB,0x62,0x9D,0x08,0x85}}; |
235 | 235 | ||
236 | static unsigned char cbc_key [8]={0x01,0x23,0x45,0x67,0x89,0xab,0xcd,0xef}; | 236 | static unsigned char cbc_key [8]={0x01,0x23,0x45,0x67,0x89,0xab,0xcd,0xef}; |
237 | static unsigned char cbc2_key[8]={0xf0,0xe1,0xd2,0xc3,0xb4,0xa5,0x96,0x87}; | 237 | static unsigned char cbc2_key[8]={0xf1,0xe0,0xd3,0xc2,0xb5,0xa4,0x97,0x86}; |
238 | static unsigned char cbc3_key[8]={0xfe,0xdc,0xba,0x98,0x76,0x54,0x32,0x10}; | 238 | static unsigned char cbc3_key[8]={0xfe,0xdc,0xba,0x98,0x76,0x54,0x32,0x10}; |
239 | static unsigned char cbc_iv [8]={0xfe,0xdc,0xba,0x98,0x76,0x54,0x32,0x10}; | 239 | static unsigned char cbc_iv [8]={0xfe,0xdc,0xba,0x98,0x76,0x54,0x32,0x10}; |
240 | /* Changed the following text constant to binary so it will work on ebcdic | 240 | /* Changed the following text constant to binary so it will work on ebcdic |
@@ -254,12 +254,24 @@ static unsigned char cbc_ok[32]={ | |||
254 | 0x46,0x8e,0x91,0x15,0x78,0x88,0xba,0x68, | 254 | 0x46,0x8e,0x91,0x15,0x78,0x88,0xba,0x68, |
255 | 0x1d,0x26,0x93,0x97,0xf7,0xfe,0x62,0xb4}; | 255 | 0x1d,0x26,0x93,0x97,0xf7,0xfe,0x62,0xb4}; |
256 | 256 | ||
257 | #ifdef SCREW_THE_PARITY | ||
258 | #error "SCREW_THE_PARITY is not ment to be defined." | ||
259 | #error "Original vectors are preserved for reference only." | ||
260 | static unsigned char cbc2_key[8]={0xf0,0xe1,0xd2,0xc3,0xb4,0xa5,0x96,0x87}; | ||
257 | static unsigned char xcbc_ok[32]={ | 261 | static unsigned char xcbc_ok[32]={ |
258 | 0x86,0x74,0x81,0x0D,0x61,0xA4,0xA5,0x48, | 262 | 0x86,0x74,0x81,0x0D,0x61,0xA4,0xA5,0x48, |
259 | 0xB9,0x93,0x03,0xE1,0xB8,0xBB,0xBD,0xBD, | 263 | 0xB9,0x93,0x03,0xE1,0xB8,0xBB,0xBD,0xBD, |
260 | 0x64,0x30,0x0B,0xB9,0x06,0x65,0x81,0x76, | 264 | 0x64,0x30,0x0B,0xB9,0x06,0x65,0x81,0x76, |
261 | 0x04,0x1D,0x77,0x62,0x17,0xCA,0x2B,0xD2, | 265 | 0x04,0x1D,0x77,0x62,0x17,0xCA,0x2B,0xD2, |
262 | }; | 266 | }; |
267 | #else | ||
268 | static unsigned char xcbc_ok[32]={ | ||
269 | 0x84,0x6B,0x29,0x14,0x85,0x1E,0x9A,0x29, | ||
270 | 0x54,0x73,0x2F,0x8A,0xA0,0xA6,0x11,0xC1, | ||
271 | 0x15,0xCD,0xC2,0xD7,0x95,0x1B,0x10,0x53, | ||
272 | 0xA6,0x3C,0x5E,0x03,0xB2,0x1A,0xA3,0xC4, | ||
273 | }; | ||
274 | #endif | ||
263 | 275 | ||
264 | static unsigned char cbc3_ok[32]={ | 276 | static unsigned char cbc3_ok[32]={ |
265 | 0x3F,0xE3,0x01,0xC9,0x62,0xAC,0x01,0xD0, | 277 | 0x3F,0xE3,0x01,0xC9,0x62,0xAC,0x01,0xD0, |
@@ -309,8 +321,8 @@ static unsigned char ofb_cipher[24]= | |||
309 | 0x3d,0x6d,0x5b,0xe3,0x25,0x5a,0xf8,0xc3 | 321 | 0x3d,0x6d,0x5b,0xe3,0x25,0x5a,0xf8,0xc3 |
310 | }; | 322 | }; |
311 | 323 | ||
312 | DES_LONG cbc_cksum_ret=0xB462FEF7L; | 324 | static DES_LONG cbc_cksum_ret=0xB462FEF7L; |
313 | unsigned char cbc_cksum_data[8]={0x1D,0x26,0x93,0x97,0xf7,0xfe,0x62,0xb4}; | 325 | static unsigned char cbc_cksum_data[8]={0x1D,0x26,0x93,0x97,0xf7,0xfe,0x62,0xb4}; |
314 | 326 | ||
315 | static char *pt(unsigned char *p); | 327 | static char *pt(unsigned char *p); |
316 | static int cfb_test(int bits, unsigned char *cfb_cipher); | 328 | static int cfb_test(int bits, unsigned char *cfb_cipher); |
@@ -331,17 +343,17 @@ int main(int argc, char *argv[]) | |||
331 | 343 | ||
332 | #ifndef NO_DESCBCM | 344 | #ifndef NO_DESCBCM |
333 | printf("Doing cbcm\n"); | 345 | printf("Doing cbcm\n"); |
334 | if ((j=des_key_sched(&cbc_key,ks)) != 0) | 346 | if ((j=des_set_key_checked(&cbc_key,ks)) != 0) |
335 | { | 347 | { |
336 | printf("Key error %d\n",j); | 348 | printf("Key error %d\n",j); |
337 | err=1; | 349 | err=1; |
338 | } | 350 | } |
339 | if ((j=des_key_sched(&cbc2_key,ks2)) != 0) | 351 | if ((j=des_set_key_checked(&cbc2_key,ks2)) != 0) |
340 | { | 352 | { |
341 | printf("Key error %d\n",j); | 353 | printf("Key error %d\n",j); |
342 | err=1; | 354 | err=1; |
343 | } | 355 | } |
344 | if ((j=des_key_sched(&cbc3_key,ks3)) != 0) | 356 | if ((j=des_set_key_checked(&cbc3_key,ks3)) != 0) |
345 | { | 357 | { |
346 | printf("Key error %d\n",j); | 358 | printf("Key error %d\n",j); |
347 | err=1; | 359 | err=1; |
@@ -385,11 +397,7 @@ int main(int argc, char *argv[]) | |||
385 | printf("Doing ecb\n"); | 397 | printf("Doing ecb\n"); |
386 | for (i=0; i<NUM_TESTS; i++) | 398 | for (i=0; i<NUM_TESTS; i++) |
387 | { | 399 | { |
388 | if ((j=des_key_sched(&key_data[i],ks)) != 0) | 400 | des_set_key_unchecked(&key_data[i],ks); |
389 | { | ||
390 | printf("Key error %2d:%d\n",i+1,j); | ||
391 | err=1; | ||
392 | } | ||
393 | memcpy(in,plain_data[i],8); | 401 | memcpy(in,plain_data[i],8); |
394 | memset(out,0,8); | 402 | memset(out,0,8); |
395 | memset(outin,0,8); | 403 | memset(outin,0,8); |
@@ -415,21 +423,9 @@ int main(int argc, char *argv[]) | |||
415 | printf("Doing ede ecb\n"); | 423 | printf("Doing ede ecb\n"); |
416 | for (i=0; i<(NUM_TESTS-1); i++) | 424 | for (i=0; i<(NUM_TESTS-1); i++) |
417 | { | 425 | { |
418 | if ((j=des_key_sched(&key_data[i],ks)) != 0) | 426 | des_set_key_unchecked(&key_data[i],ks); |
419 | { | 427 | des_set_key_unchecked(&key_data[i+1],ks2); |
420 | err=1; | 428 | des_set_key_unchecked(&key_data[i+2],ks3); |
421 | printf("Key error %2d:%d\n",i+1,j); | ||
422 | } | ||
423 | if ((j=des_key_sched(&key_data[i+1],ks2)) != 0) | ||
424 | { | ||
425 | printf("Key error %2d:%d\n",i+2,j); | ||
426 | err=1; | ||
427 | } | ||
428 | if ((j=des_key_sched(&key_data[i+2],ks3)) != 0) | ||
429 | { | ||
430 | printf("Key error %2d:%d\n",i+3,j); | ||
431 | err=1; | ||
432 | } | ||
433 | memcpy(in,plain_data[i],8); | 429 | memcpy(in,plain_data[i],8); |
434 | memset(out,0,8); | 430 | memset(out,0,8); |
435 | memset(outin,0,8); | 431 | memset(outin,0,8); |
@@ -453,7 +449,7 @@ int main(int argc, char *argv[]) | |||
453 | #endif | 449 | #endif |
454 | 450 | ||
455 | printf("Doing cbc\n"); | 451 | printf("Doing cbc\n"); |
456 | if ((j=des_key_sched(&cbc_key,ks)) != 0) | 452 | if ((j=des_set_key_checked(&cbc_key,ks)) != 0) |
457 | { | 453 | { |
458 | printf("Key error %d\n",j); | 454 | printf("Key error %d\n",j); |
459 | err=1; | 455 | err=1; |
@@ -464,7 +460,10 @@ int main(int argc, char *argv[]) | |||
464 | des_ncbc_encrypt(cbc_data,cbc_out,strlen((char *)cbc_data)+1,ks, | 460 | des_ncbc_encrypt(cbc_data,cbc_out,strlen((char *)cbc_data)+1,ks, |
465 | &iv3,DES_ENCRYPT); | 461 | &iv3,DES_ENCRYPT); |
466 | if (memcmp(cbc_out,cbc_ok,32) != 0) | 462 | if (memcmp(cbc_out,cbc_ok,32) != 0) |
463 | { | ||
467 | printf("cbc_encrypt encrypt error\n"); | 464 | printf("cbc_encrypt encrypt error\n"); |
465 | err=1; | ||
466 | } | ||
468 | 467 | ||
469 | memcpy(iv3,cbc_iv,sizeof(cbc_iv)); | 468 | memcpy(iv3,cbc_iv,sizeof(cbc_iv)); |
470 | des_ncbc_encrypt(cbc_out,cbc_in,strlen((char *)cbc_data)+1,ks, | 469 | des_ncbc_encrypt(cbc_out,cbc_in,strlen((char *)cbc_data)+1,ks, |
@@ -477,7 +476,7 @@ int main(int argc, char *argv[]) | |||
477 | 476 | ||
478 | #ifndef LIBDES_LIT | 477 | #ifndef LIBDES_LIT |
479 | printf("Doing desx cbc\n"); | 478 | printf("Doing desx cbc\n"); |
480 | if ((j=des_key_sched(&cbc_key,ks)) != 0) | 479 | if ((j=des_set_key_checked(&cbc_key,ks)) != 0) |
481 | { | 480 | { |
482 | printf("Key error %d\n",j); | 481 | printf("Key error %d\n",j); |
483 | err=1; | 482 | err=1; |
@@ -490,6 +489,7 @@ int main(int argc, char *argv[]) | |||
490 | if (memcmp(cbc_out,xcbc_ok,32) != 0) | 489 | if (memcmp(cbc_out,xcbc_ok,32) != 0) |
491 | { | 490 | { |
492 | printf("des_xcbc_encrypt encrypt error\n"); | 491 | printf("des_xcbc_encrypt encrypt error\n"); |
492 | err=1; | ||
493 | } | 493 | } |
494 | memcpy(iv3,cbc_iv,sizeof(cbc_iv)); | 494 | memcpy(iv3,cbc_iv,sizeof(cbc_iv)); |
495 | des_xcbc_encrypt(cbc_out,cbc_in,strlen((char *)cbc_data)+1,ks, | 495 | des_xcbc_encrypt(cbc_out,cbc_in,strlen((char *)cbc_data)+1,ks, |
@@ -502,17 +502,17 @@ int main(int argc, char *argv[]) | |||
502 | #endif | 502 | #endif |
503 | 503 | ||
504 | printf("Doing ede cbc\n"); | 504 | printf("Doing ede cbc\n"); |
505 | if ((j=des_key_sched(&cbc_key,ks)) != 0) | 505 | if ((j=des_set_key_checked(&cbc_key,ks)) != 0) |
506 | { | 506 | { |
507 | printf("Key error %d\n",j); | 507 | printf("Key error %d\n",j); |
508 | err=1; | 508 | err=1; |
509 | } | 509 | } |
510 | if ((j=des_key_sched(&cbc2_key,ks2)) != 0) | 510 | if ((j=des_set_key_checked(&cbc2_key,ks2)) != 0) |
511 | { | 511 | { |
512 | printf("Key error %d\n",j); | 512 | printf("Key error %d\n",j); |
513 | err=1; | 513 | err=1; |
514 | } | 514 | } |
515 | if ((j=des_key_sched(&cbc3_key,ks3)) != 0) | 515 | if ((j=des_set_key_checked(&cbc3_key,ks3)) != 0) |
516 | { | 516 | { |
517 | printf("Key error %d\n",j); | 517 | printf("Key error %d\n",j); |
518 | err=1; | 518 | err=1; |
@@ -543,7 +543,7 @@ int main(int argc, char *argv[]) | |||
543 | 543 | ||
544 | #ifndef LIBDES_LIT | 544 | #ifndef LIBDES_LIT |
545 | printf("Doing pcbc\n"); | 545 | printf("Doing pcbc\n"); |
546 | if ((j=des_key_sched(&cbc_key,ks)) != 0) | 546 | if ((j=des_set_key_checked(&cbc_key,ks)) != 0) |
547 | { | 547 | { |
548 | printf("Key error %d\n",j); | 548 | printf("Key error %d\n",j); |
549 | err=1; | 549 | err=1; |
@@ -606,7 +606,7 @@ int main(int argc, char *argv[]) | |||
606 | printf("done\n"); | 606 | printf("done\n"); |
607 | 607 | ||
608 | printf("Doing ofb\n"); | 608 | printf("Doing ofb\n"); |
609 | des_key_sched(&ofb_key,ks); | 609 | des_set_key_checked(&ofb_key,ks); |
610 | memcpy(ofb_tmp,ofb_iv,sizeof(ofb_iv)); | 610 | memcpy(ofb_tmp,ofb_iv,sizeof(ofb_iv)); |
611 | des_ofb_encrypt(plain,ofb_buf1,64,sizeof(plain)/8,ks,&ofb_tmp); | 611 | des_ofb_encrypt(plain,ofb_buf1,64,sizeof(plain)/8,ks,&ofb_tmp); |
612 | if (memcmp(ofb_cipher,ofb_buf1,sizeof(ofb_buf1)) != 0) | 612 | if (memcmp(ofb_cipher,ofb_buf1,sizeof(ofb_buf1)) != 0) |
@@ -635,7 +635,7 @@ plain[8+4], plain[8+5], plain[8+6], plain[8+7]); | |||
635 | } | 635 | } |
636 | 636 | ||
637 | printf("Doing ofb64\n"); | 637 | printf("Doing ofb64\n"); |
638 | des_key_sched(&ofb_key,ks); | 638 | des_set_key_checked(&ofb_key,ks); |
639 | memcpy(ofb_tmp,ofb_iv,sizeof(ofb_iv)); | 639 | memcpy(ofb_tmp,ofb_iv,sizeof(ofb_iv)); |
640 | memset(ofb_buf1,0,sizeof(ofb_buf1)); | 640 | memset(ofb_buf1,0,sizeof(ofb_buf1)); |
641 | memset(ofb_buf2,0,sizeof(ofb_buf1)); | 641 | memset(ofb_buf2,0,sizeof(ofb_buf1)); |
@@ -660,7 +660,7 @@ plain[8+4], plain[8+5], plain[8+6], plain[8+7]); | |||
660 | } | 660 | } |
661 | 661 | ||
662 | printf("Doing ede_ofb64\n"); | 662 | printf("Doing ede_ofb64\n"); |
663 | des_key_sched(&ofb_key,ks); | 663 | des_set_key_checked(&ofb_key,ks); |
664 | memcpy(ofb_tmp,ofb_iv,sizeof(ofb_iv)); | 664 | memcpy(ofb_tmp,ofb_iv,sizeof(ofb_iv)); |
665 | memset(ofb_buf1,0,sizeof(ofb_buf1)); | 665 | memset(ofb_buf1,0,sizeof(ofb_buf1)); |
666 | memset(ofb_buf2,0,sizeof(ofb_buf1)); | 666 | memset(ofb_buf2,0,sizeof(ofb_buf1)); |
@@ -686,7 +686,7 @@ plain[8+4], plain[8+5], plain[8+6], plain[8+7]); | |||
686 | } | 686 | } |
687 | 687 | ||
688 | printf("Doing cbc_cksum\n"); | 688 | printf("Doing cbc_cksum\n"); |
689 | des_key_sched(&cbc_key,ks); | 689 | des_set_key_checked(&cbc_key,ks); |
690 | cs=des_cbc_cksum(cbc_data,&cret,strlen((char *)cbc_data),ks,&cbc_iv); | 690 | cs=des_cbc_cksum(cbc_data,&cret,strlen((char *)cbc_data),ks,&cbc_iv); |
691 | if (cs != cbc_cksum_ret) | 691 | if (cs != cbc_cksum_ret) |
692 | { | 692 | { |
@@ -795,8 +795,7 @@ plain[8+4], plain[8+5], plain[8+6], plain[8+7]); | |||
795 | err=1; | 795 | err=1; |
796 | } | 796 | } |
797 | printf("\n"); | 797 | printf("\n"); |
798 | exit(err); | 798 | return(err); |
799 | return(0); | ||
800 | } | 799 | } |
801 | 800 | ||
802 | static char *pt(unsigned char *p) | 801 | static char *pt(unsigned char *p) |
@@ -825,7 +824,7 @@ static int cfb_test(int bits, unsigned char *cfb_cipher) | |||
825 | des_key_schedule ks; | 824 | des_key_schedule ks; |
826 | int i,err=0; | 825 | int i,err=0; |
827 | 826 | ||
828 | des_key_sched(&cfb_key,ks); | 827 | des_set_key_checked(&cfb_key,ks); |
829 | memcpy(cfb_tmp,cfb_iv,sizeof(cfb_iv)); | 828 | memcpy(cfb_tmp,cfb_iv,sizeof(cfb_iv)); |
830 | des_cfb_encrypt(plain,cfb_buf1,bits,sizeof(plain),ks,&cfb_tmp, | 829 | des_cfb_encrypt(plain,cfb_buf1,bits,sizeof(plain),ks,&cfb_tmp, |
831 | DES_ENCRYPT); | 830 | DES_ENCRYPT); |
@@ -854,7 +853,7 @@ static int cfb64_test(unsigned char *cfb_cipher) | |||
854 | des_key_schedule ks; | 853 | des_key_schedule ks; |
855 | int err=0,i,n; | 854 | int err=0,i,n; |
856 | 855 | ||
857 | des_key_sched(&cfb_key,ks); | 856 | des_set_key_checked(&cfb_key,ks); |
858 | memcpy(cfb_tmp,cfb_iv,sizeof(cfb_iv)); | 857 | memcpy(cfb_tmp,cfb_iv,sizeof(cfb_iv)); |
859 | n=0; | 858 | n=0; |
860 | des_cfb64_encrypt(plain,cfb_buf1,12,ks,&cfb_tmp,&n,DES_ENCRYPT); | 859 | des_cfb64_encrypt(plain,cfb_buf1,12,ks,&cfb_tmp,&n,DES_ENCRYPT); |
@@ -887,7 +886,7 @@ static int ede_cfb64_test(unsigned char *cfb_cipher) | |||
887 | des_key_schedule ks; | 886 | des_key_schedule ks; |
888 | int err=0,i,n; | 887 | int err=0,i,n; |
889 | 888 | ||
890 | des_key_sched(&cfb_key,ks); | 889 | des_set_key_checked(&cfb_key,ks); |
891 | memcpy(cfb_tmp,cfb_iv,sizeof(cfb_iv)); | 890 | memcpy(cfb_tmp,cfb_iv,sizeof(cfb_iv)); |
892 | n=0; | 891 | n=0; |
893 | des_ede3_cfb64_encrypt(plain,cfb_buf1,12,ks,ks,ks,&cfb_tmp,&n, | 892 | des_ede3_cfb64_encrypt(plain,cfb_buf1,12,ks,ks,ks,&cfb_tmp,&n, |
diff --git a/src/lib/libcrypto/des/enc_read.c b/src/lib/libcrypto/des/enc_read.c index 694970ccd2..7399ff7269 100644 --- a/src/lib/libcrypto/des/enc_read.c +++ b/src/lib/libcrypto/des/enc_read.c | |||
@@ -147,7 +147,7 @@ int des_enc_read(int fd, void *buf, int len, des_key_schedule sched, | |||
147 | /* first - get the length */ | 147 | /* first - get the length */ |
148 | while (net_num < HDRSIZE) | 148 | while (net_num < HDRSIZE) |
149 | { | 149 | { |
150 | i=read(fd,&(net[net_num]),HDRSIZE-net_num); | 150 | i=read(fd,(void *)&(net[net_num]),HDRSIZE-net_num); |
151 | #ifdef EINTR | 151 | #ifdef EINTR |
152 | if ((i == -1) && (errno == EINTR)) continue; | 152 | if ((i == -1) && (errno == EINTR)) continue; |
153 | #endif | 153 | #endif |
@@ -169,7 +169,7 @@ int des_enc_read(int fd, void *buf, int len, des_key_schedule sched, | |||
169 | net_num=0; | 169 | net_num=0; |
170 | while (net_num < rnum) | 170 | while (net_num < rnum) |
171 | { | 171 | { |
172 | i=read(fd,&(net[net_num]),rnum-net_num); | 172 | i=read(fd,(void *)&(net[net_num]),rnum-net_num); |
173 | #ifdef EINTR | 173 | #ifdef EINTR |
174 | if ((i == -1) && (errno == EINTR)) continue; | 174 | if ((i == -1) && (errno == EINTR)) continue; |
175 | #endif | 175 | #endif |
diff --git a/src/lib/libcrypto/des/enc_writ.c b/src/lib/libcrypto/des/enc_writ.c index ba3f0822ef..4d3452724e 100644 --- a/src/lib/libcrypto/des/enc_writ.c +++ b/src/lib/libcrypto/des/enc_writ.c | |||
@@ -130,12 +130,12 @@ int des_enc_write(int fd, const void *_buf, int len, | |||
130 | { | 130 | { |
131 | cp=shortbuf; | 131 | cp=shortbuf; |
132 | memcpy(shortbuf,buf,len); | 132 | memcpy(shortbuf,buf,len); |
133 | RAND_bytes(shortbuf+len, 8-len); | 133 | RAND_pseudo_bytes(shortbuf+len, 8-len); |
134 | rnum=8; | 134 | rnum=8; |
135 | } | 135 | } |
136 | else | 136 | else |
137 | { | 137 | { |
138 | cp=(unsigned char*)buf; | 138 | cp=buf; |
139 | rnum=((len+7)/8*8); /* round up to nearest eight */ | 139 | rnum=((len+7)/8*8); /* round up to nearest eight */ |
140 | } | 140 | } |
141 | 141 | ||
@@ -152,13 +152,16 @@ int des_enc_write(int fd, const void *_buf, int len, | |||
152 | for (j=0; j<outnum; j+=i) | 152 | for (j=0; j<outnum; j+=i) |
153 | { | 153 | { |
154 | /* eay 26/08/92 I was not doing writing from where we | 154 | /* eay 26/08/92 I was not doing writing from where we |
155 | * got upto. */ | 155 | * got up to. */ |
156 | i=write(fd,&(outbuf[j]),outnum-j); | 156 | i=write(fd,(void *)&(outbuf[j]),outnum-j); |
157 | if (i == -1) | 157 | if (i == -1) |
158 | { | 158 | { |
159 | #ifdef EINTR | ||
159 | if (errno == EINTR) | 160 | if (errno == EINTR) |
160 | i=0; | 161 | i=0; |
161 | else /* This is really a bad error - very bad | 162 | else |
163 | #endif | ||
164 | /* This is really a bad error - very bad | ||
162 | * It will stuff-up both ends. */ | 165 | * It will stuff-up both ends. */ |
163 | return(-1); | 166 | return(-1); |
164 | } | 167 | } |
diff --git a/src/lib/libcrypto/des/fcrypt.c b/src/lib/libcrypto/des/fcrypt.c index f36746b376..fa1b8aa34a 100644 --- a/src/lib/libcrypto/des/fcrypt.c +++ b/src/lib/libcrypto/des/fcrypt.c | |||
@@ -1,7 +1,7 @@ | |||
1 | /* NOCW */ | 1 | /* NOCW */ |
2 | #include <stdio.h> | 2 | #include <stdio.h> |
3 | 3 | ||
4 | /* This version of crypt has been developed from my MIT compatable | 4 | /* This version of crypt has been developed from my MIT compatible |
5 | * DES library. | 5 | * DES library. |
6 | * The library is available at pub/Crypto/DES at ftp.psy.uq.oz.au | 6 | * The library is available at pub/Crypto/DES at ftp.psy.uq.oz.au |
7 | * Eric Young (eay@cryptsoft.com) | 7 | * Eric Young (eay@cryptsoft.com) |
@@ -11,7 +11,7 @@ | |||
11 | * I have included directive PARA for shared memory computers. | 11 | * I have included directive PARA for shared memory computers. |
12 | * I have included a directive LONGCRYPT to using this routine to cipher | 12 | * I have included a directive LONGCRYPT to using this routine to cipher |
13 | * passwords with more then 8 bytes like HP-UX 10.x it used. The MAXPLEN | 13 | * passwords with more then 8 bytes like HP-UX 10.x it used. The MAXPLEN |
14 | * definition is the maximum of lenght of password and can changed. I have | 14 | * definition is the maximum of length of password and can changed. I have |
15 | * defined 24. | 15 | * defined 24. |
16 | */ | 16 | */ |
17 | 17 | ||
@@ -103,8 +103,8 @@ char *ret; | |||
103 | * returns *\0XXXXXXXXX | 103 | * returns *\0XXXXXXXXX |
104 | * The \0 makes the string look like * so the pwd "*" would | 104 | * The \0 makes the string look like * so the pwd "*" would |
105 | * crypt to "*". This was found when replacing the crypt in | 105 | * crypt to "*". This was found when replacing the crypt in |
106 | * our shared libraries. People found that the disbled | 106 | * our shared libraries. People found that the disabled |
107 | * accounts effectivly had no passwd :-(. */ | 107 | * accounts effectively had no passwd :-(. */ |
108 | x=ret[0]=((salt[0] == '\0')?'A':salt[0]); | 108 | x=ret[0]=((salt[0] == '\0')?'A':salt[0]); |
109 | Eswap0=con_salt[x]<<2; | 109 | Eswap0=con_salt[x]<<2; |
110 | x=ret[1]=((salt[1] == '\0')?'A':salt[1]); | 110 | x=ret[1]=((salt[1] == '\0')?'A':salt[1]); |
@@ -123,7 +123,7 @@ r=(r+7)/8; | |||
123 | for (; i<8; i++) | 123 | for (; i<8; i++) |
124 | key[i]=0; | 124 | key[i]=0; |
125 | 125 | ||
126 | des_set_key((des_cblock *)(key),ks); | 126 | des_set_key_unchecked(&key,ks); |
127 | fcrypt_body(&(out[0]),ks,Eswap0,Eswap1); | 127 | fcrypt_body(&(out[0]),ks,Eswap0,Eswap1); |
128 | 128 | ||
129 | ll=out[0]; l2c(ll,b); | 129 | ll=out[0]; l2c(ll,b); |
diff --git a/src/lib/libcrypto/des/fcrypt_b.c b/src/lib/libcrypto/des/fcrypt_b.c index 9cbea97c1f..83c94054e3 100644 --- a/src/lib/libcrypto/des/fcrypt_b.c +++ b/src/lib/libcrypto/des/fcrypt_b.c | |||
@@ -58,7 +58,7 @@ | |||
58 | 58 | ||
59 | #include <stdio.h> | 59 | #include <stdio.h> |
60 | 60 | ||
61 | /* This version of crypt has been developed from my MIT compatable | 61 | /* This version of crypt has been developed from my MIT compatible |
62 | * DES library. | 62 | * DES library. |
63 | * The library is available at pub/Crypto/DES at ftp.psy.uq.oz.au | 63 | * The library is available at pub/Crypto/DES at ftp.psy.uq.oz.au |
64 | * Eric Young (eay@cryptsoft.com) | 64 | * Eric Young (eay@cryptsoft.com) |
diff --git a/src/lib/libcrypto/des/rand_key.c b/src/lib/libcrypto/des/rand_key.c index fc11792cda..7816a8f25c 100644 --- a/src/lib/libcrypto/des/rand_key.c +++ b/src/lib/libcrypto/des/rand_key.c | |||
@@ -1,114 +1,69 @@ | |||
1 | /* crypto/des/rand_key.c */ | 1 | /* crypto/des/rand_key.c */ |
2 | /* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com) | 2 | /* ==================================================================== |
3 | * All rights reserved. | 3 | * Copyright (c) 1998-2000 The OpenSSL Project. All rights reserved. |
4 | * | 4 | * |
5 | * This package is an SSL implementation written | ||
6 | * by Eric Young (eay@cryptsoft.com). | ||
7 | * The implementation was written so as to conform with Netscapes SSL. | ||
8 | * | ||
9 | * This library is free for commercial and non-commercial use as long as | ||
10 | * the following conditions are aheared to. The following conditions | ||
11 | * apply to all code found in this distribution, be it the RC4, RSA, | ||
12 | * lhash, DES, etc., code; not just the SSL code. The SSL documentation | ||
13 | * included with this distribution is covered by the same copyright terms | ||
14 | * except that the holder is Tim Hudson (tjh@cryptsoft.com). | ||
15 | * | ||
16 | * Copyright remains Eric Young's, and as such any Copyright notices in | ||
17 | * the code are not to be removed. | ||
18 | * If this package is used in a product, Eric Young should be given attribution | ||
19 | * as the author of the parts of the library used. | ||
20 | * This can be in the form of a textual message at program startup or | ||
21 | * in documentation (online or textual) provided with the package. | ||
22 | * | ||
23 | * Redistribution and use in source and binary forms, with or without | 5 | * Redistribution and use in source and binary forms, with or without |
24 | * modification, are permitted provided that the following conditions | 6 | * modification, are permitted provided that the following conditions |
25 | * are met: | 7 | * are met: |
26 | * 1. Redistributions of source code must retain the copyright | 8 | * |
27 | * notice, this list of conditions and the following disclaimer. | 9 | * 1. Redistributions of source code must retain the above copyright |
10 | * notice, this list of conditions and the following disclaimer. | ||
11 | * | ||
28 | * 2. Redistributions in binary form must reproduce the above copyright | 12 | * 2. Redistributions in binary form must reproduce the above copyright |
29 | * notice, this list of conditions and the following disclaimer in the | 13 | * notice, this list of conditions and the following disclaimer in |
30 | * documentation and/or other materials provided with the distribution. | 14 | * the documentation and/or other materials provided with the |
31 | * 3. All advertising materials mentioning features or use of this software | 15 | * distribution. |
32 | * must display the following acknowledgement: | 16 | * |
33 | * "This product includes cryptographic software written by | 17 | * 3. All advertising materials mentioning features or use of this |
34 | * Eric Young (eay@cryptsoft.com)" | 18 | * software must display the following acknowledgment: |
35 | * The word 'cryptographic' can be left out if the rouines from the library | 19 | * "This product includes software developed by the OpenSSL Project |
36 | * being used are not cryptographic related :-). | 20 | * for use in the OpenSSL Toolkit. (http://www.openssl.org/)" |
37 | * 4. If you include any Windows specific code (or a derivative thereof) from | 21 | * |
38 | * the apps directory (application code) you must include an acknowledgement: | 22 | * 4. The names "OpenSSL Toolkit" and "OpenSSL Project" must not be used to |
39 | * "This product includes software written by Tim Hudson (tjh@cryptsoft.com)" | 23 | * endorse or promote products derived from this software without |
40 | * | 24 | * prior written permission. For written permission, please contact |
41 | * THIS SOFTWARE IS PROVIDED BY ERIC YOUNG ``AS IS'' AND | 25 | * openssl-core@openssl.org. |
42 | * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE | 26 | * |
43 | * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE | 27 | * 5. Products derived from this software may not be called "OpenSSL" |
44 | * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE | 28 | * nor may "OpenSSL" appear in their names without prior written |
45 | * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL | 29 | * permission of the OpenSSL Project. |
46 | * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS | 30 | * |
47 | * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) | 31 | * 6. Redistributions of any form whatsoever must retain the following |
48 | * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT | 32 | * acknowledgment: |
49 | * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY | 33 | * "This product includes software developed by the OpenSSL Project |
50 | * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF | 34 | * for use in the OpenSSL Toolkit (http://www.openssl.org/)" |
51 | * SUCH DAMAGE. | 35 | * |
52 | * | 36 | * THIS SOFTWARE IS PROVIDED BY THE OpenSSL PROJECT ``AS IS'' AND ANY |
53 | * The licence and distribution terms for any publically available version or | 37 | * EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE |
54 | * derivative of this code cannot be changed. i.e. this code cannot simply be | 38 | * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR |
55 | * copied and put under another distribution licence | 39 | * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE OpenSSL PROJECT OR |
56 | * [including the GNU Public Licence.] | 40 | * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, |
41 | * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT | ||
42 | * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; | ||
43 | * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) | ||
44 | * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, | ||
45 | * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) | ||
46 | * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED | ||
47 | * OF THE POSSIBILITY OF SUCH DAMAGE. | ||
48 | * ==================================================================== | ||
49 | * | ||
50 | * This product includes cryptographic software written by Eric Young | ||
51 | * (eay@cryptsoft.com). This product includes software written by Tim | ||
52 | * Hudson (tjh@cryptsoft.com). | ||
53 | * | ||
57 | */ | 54 | */ |
58 | 55 | ||
59 | #include "des_locl.h" | 56 | #include <openssl/des.h> |
60 | #include <time.h> | 57 | #include <openssl/rand.h> |
61 | |||
62 | static int seed=0; | ||
63 | static des_cblock init; | ||
64 | 58 | ||
65 | void des_random_seed(des_cblock *key) | 59 | void des_random_seed(des_cblock *key) |
66 | { | 60 | { |
67 | memcpy(&init,key,sizeof(des_cblock)); | 61 | RAND_seed(key, sizeof(des_cblock)); |
68 | seed=1; | ||
69 | } | 62 | } |
70 | 63 | ||
71 | void des_random_key(des_cblock *ret) | 64 | int des_random_key(des_cblock *ret) |
72 | { | 65 | { |
73 | des_key_schedule ks; | 66 | int r = RAND_bytes((unsigned char *)ret, sizeof(des_cblock)); |
74 | static DES_LONG c=0; | 67 | des_set_odd_parity(ret); |
75 | static unsigned short pid=0; | 68 | return r; |
76 | static des_cblock data={0x01,0x23,0x45,0x67,0x89,0xab,0xcd,0xef}; | ||
77 | des_cblock key; | ||
78 | unsigned char *p; | ||
79 | DES_LONG t; | ||
80 | int i; | ||
81 | |||
82 | #ifdef MSDOS | ||
83 | pid=1; | ||
84 | #else | ||
85 | if (!pid) pid=getpid(); | ||
86 | #endif | ||
87 | p=key; | ||
88 | if (seed) | ||
89 | { | ||
90 | for (i=0; i<8; i++) | ||
91 | { | ||
92 | data[i] ^= init[i]; | ||
93 | init[i]=0; | ||
94 | } | ||
95 | seed=0; | ||
96 | } | ||
97 | t=(DES_LONG)time(NULL); | ||
98 | l2c(t,p); | ||
99 | t=(DES_LONG)((pid)|((c++)<<16)); | ||
100 | l2c(t,p); | ||
101 | |||
102 | des_set_odd_parity(&data); | ||
103 | des_set_key(&data,ks); | ||
104 | des_cbc_cksum(key,&key,sizeof(key),ks,&data); | ||
105 | |||
106 | des_set_odd_parity(&key); | ||
107 | des_set_key(&key,ks); | ||
108 | des_cbc_cksum(key,&data,sizeof(key),ks,&key); | ||
109 | |||
110 | memcpy(ret,data,sizeof(key)); | ||
111 | memset(key,0,sizeof(key)); | ||
112 | memset(ks,0,sizeof(ks)); | ||
113 | t=0; | ||
114 | } | 69 | } |
diff --git a/src/lib/libcrypto/des/read_pwd.c b/src/lib/libcrypto/des/read_pwd.c index fed49652c0..fa2d67da64 100644 --- a/src/lib/libcrypto/des/read_pwd.c +++ b/src/lib/libcrypto/des/read_pwd.c | |||
@@ -58,7 +58,11 @@ | |||
58 | 58 | ||
59 | #if !defined(MSDOS) && !defined(VMS) && !defined(WIN32) | 59 | #if !defined(MSDOS) && !defined(VMS) && !defined(WIN32) |
60 | #include <openssl/opensslconf.h> | 60 | #include <openssl/opensslconf.h> |
61 | #include OPENSSL_UNISTD | 61 | #ifdef OPENSSL_UNISTD |
62 | # include OPENSSL_UNISTD | ||
63 | #else | ||
64 | # include <unistd.h> | ||
65 | #endif | ||
62 | /* If unistd.h defines _POSIX_VERSION, we conclude that we | 66 | /* If unistd.h defines _POSIX_VERSION, we conclude that we |
63 | * are on a POSIX system and have sigaction and termios. */ | 67 | * are on a POSIX system and have sigaction and termios. */ |
64 | #if defined(_POSIX_VERSION) | 68 | #if defined(_POSIX_VERSION) |
@@ -123,7 +127,7 @@ | |||
123 | #undef SGTTY | 127 | #undef SGTTY |
124 | #endif | 128 | #endif |
125 | 129 | ||
126 | #if !defined(TERMIO) && !defined(TERMIOS) && !defined(VMS) && !defined(MSDOS) | 130 | #if !defined(TERMIO) && !defined(TERMIOS) && !defined(VMS) && !defined(MSDOS) && !defined(MAC_OS_pre_X) && !defined(MAC_OS_GUSI_SOURCE) |
127 | #undef TERMIOS | 131 | #undef TERMIOS |
128 | #undef TERMIO | 132 | #undef TERMIO |
129 | #define SGTTY | 133 | #define SGTTY |
@@ -153,7 +157,7 @@ | |||
153 | #define TTY_set(tty,data) ioctl(tty,TIOCSETP,data) | 157 | #define TTY_set(tty,data) ioctl(tty,TIOCSETP,data) |
154 | #endif | 158 | #endif |
155 | 159 | ||
156 | #if !defined(_LIBC) && !defined(MSDOS) && !defined(VMS) | 160 | #if !defined(_LIBC) && !defined(MSDOS) && !defined(VMS) && !defined(MAC_OS_pre_X) |
157 | #include <sys/ioctl.h> | 161 | #include <sys/ioctl.h> |
158 | #endif | 162 | #endif |
159 | 163 | ||
@@ -174,6 +178,15 @@ struct IOSB { | |||
174 | }; | 178 | }; |
175 | #endif | 179 | #endif |
176 | 180 | ||
181 | #if defined(MAC_OS_pre_X) || defined(MAC_OS_GUSI_SOURCE) | ||
182 | /* | ||
183 | * This one needs work. As a matter of fact the code is unoperational | ||
184 | * and this is only a trick to get it compiled. | ||
185 | * <appro@fy.chalmers.se> | ||
186 | */ | ||
187 | #define TTY_STRUCT int | ||
188 | #endif | ||
189 | |||
177 | #ifndef NX509_SIG | 190 | #ifndef NX509_SIG |
178 | #define NX509_SIG 32 | 191 | #define NX509_SIG 32 |
179 | #endif | 192 | #endif |
diff --git a/src/lib/libcrypto/des/rpc_enc.c b/src/lib/libcrypto/des/rpc_enc.c index c96c204147..32d96d5cae 100644 --- a/src/lib/libcrypto/des/rpc_enc.c +++ b/src/lib/libcrypto/des/rpc_enc.c | |||
@@ -66,7 +66,7 @@ int _des_crypt(char *buf, int len, struct desparams *desp) | |||
66 | des_key_schedule ks; | 66 | des_key_schedule ks; |
67 | int enc; | 67 | int enc; |
68 | 68 | ||
69 | des_set_key(&desp->des_key,ks); | 69 | des_set_key_unchecked(&desp->des_key,ks); |
70 | enc=(desp->des_dir == ENCRYPT)?DES_ENCRYPT:DES_DECRYPT; | 70 | enc=(desp->des_dir == ENCRYPT)?DES_ENCRYPT:DES_DECRYPT; |
71 | 71 | ||
72 | if (desp->des_mode == CBC) | 72 | if (desp->des_mode == CBC) |
diff --git a/src/lib/libcrypto/des/set_key.c b/src/lib/libcrypto/des/set_key.c index 52553a4c16..bbdc71ba6b 100644 --- a/src/lib/libcrypto/des/set_key.c +++ b/src/lib/libcrypto/des/set_key.c | |||
@@ -125,7 +125,7 @@ int des_is_weak_key(const_des_cblock *key) | |||
125 | int i; | 125 | int i; |
126 | 126 | ||
127 | for (i=0; i<NUM_WEAK_KEY; i++) | 127 | for (i=0; i<NUM_WEAK_KEY; i++) |
128 | /* Added == 0 to comparision, I obviously don't run | 128 | /* Added == 0 to comparison, I obviously don't run |
129 | * this section very often :-(, thanks to | 129 | * this section very often :-(, thanks to |
130 | * engineering@MorningStar.Com for the fix | 130 | * engineering@MorningStar.Com for the fix |
131 | * eay 93/06/29 | 131 | * eay 93/06/29 |
@@ -145,11 +145,34 @@ int des_is_weak_key(const_des_cblock *key) | |||
145 | #define HPERM_OP(a,t,n,m) ((t)=((((a)<<(16-(n)))^(a))&(m)),\ | 145 | #define HPERM_OP(a,t,n,m) ((t)=((((a)<<(16-(n)))^(a))&(m)),\ |
146 | (a)=(a)^(t)^(t>>(16-(n)))) | 146 | (a)=(a)^(t)^(t>>(16-(n)))) |
147 | 147 | ||
148 | int des_set_key(const_des_cblock *key, des_key_schedule schedule) | ||
149 | { | ||
150 | if (des_check_key) | ||
151 | { | ||
152 | return des_set_key_checked(key, schedule); | ||
153 | } | ||
154 | else | ||
155 | { | ||
156 | des_set_key_unchecked(key, schedule); | ||
157 | return 0; | ||
158 | } | ||
159 | } | ||
160 | |||
148 | /* return 0 if key parity is odd (correct), | 161 | /* return 0 if key parity is odd (correct), |
149 | * return -1 if key parity error, | 162 | * return -1 if key parity error, |
150 | * return -2 if illegal weak key. | 163 | * return -2 if illegal weak key. |
151 | */ | 164 | */ |
152 | int des_set_key(const_des_cblock *key, des_key_schedule schedule) | 165 | int des_set_key_checked(const_des_cblock *key, des_key_schedule schedule) |
166 | { | ||
167 | if (!check_parity(key)) | ||
168 | return(-1); | ||
169 | if (des_is_weak_key(key)) | ||
170 | return(-2); | ||
171 | des_set_key_unchecked(key, schedule); | ||
172 | return 0; | ||
173 | } | ||
174 | |||
175 | void des_set_key_unchecked(const_des_cblock *key, des_key_schedule schedule) | ||
153 | { | 176 | { |
154 | static int shifts2[16]={0,0,1,1,1,1,1,1,0,1,1,1,1,1,1,0}; | 177 | static int shifts2[16]={0,0,1,1,1,1,1,1,0,1,1,1,1,1,1,0}; |
155 | register DES_LONG c,d,t,s,t2; | 178 | register DES_LONG c,d,t,s,t2; |
@@ -157,15 +180,6 @@ int des_set_key(const_des_cblock *key, des_key_schedule schedule) | |||
157 | register DES_LONG *k; | 180 | register DES_LONG *k; |
158 | register int i; | 181 | register int i; |
159 | 182 | ||
160 | if (des_check_key) | ||
161 | { | ||
162 | if (!check_parity(key)) | ||
163 | return(-1); | ||
164 | |||
165 | if (des_is_weak_key(key)) | ||
166 | return(-2); | ||
167 | } | ||
168 | |||
169 | k = &schedule->ks.deslong[0]; | 183 | k = &schedule->ks.deslong[0]; |
170 | in = &(*key)[0]; | 184 | in = &(*key)[0]; |
171 | 185 | ||
@@ -225,7 +239,6 @@ int des_set_key(const_des_cblock *key, des_key_schedule schedule) | |||
225 | t2=((s>>16L)|(t&0xffff0000L)); | 239 | t2=((s>>16L)|(t&0xffff0000L)); |
226 | *(k++)=ROTATE(t2,26)&0xffffffffL; | 240 | *(k++)=ROTATE(t2,26)&0xffffffffL; |
227 | } | 241 | } |
228 | return(0); | ||
229 | } | 242 | } |
230 | 243 | ||
231 | int des_key_sched(const_des_cblock *key, des_key_schedule schedule) | 244 | int des_key_sched(const_des_cblock *key, des_key_schedule schedule) |
diff --git a/src/lib/libcrypto/des/speed.c b/src/lib/libcrypto/des/speed.c index da41abcb03..814b86f4ae 100644 --- a/src/lib/libcrypto/des/speed.c +++ b/src/lib/libcrypto/des/speed.c | |||
@@ -186,16 +186,16 @@ int main(int argc, char **argv) | |||
186 | #endif | 186 | #endif |
187 | 187 | ||
188 | #ifndef TIMES | 188 | #ifndef TIMES |
189 | printf("To get the most acurate results, try to run this\n"); | 189 | printf("To get the most accurate results, try to run this\n"); |
190 | printf("program when this computer is idle.\n"); | 190 | printf("program when this computer is idle.\n"); |
191 | #endif | 191 | #endif |
192 | 192 | ||
193 | des_set_key(&key2,sch2); | 193 | des_set_key_unchecked(&key2,sch2); |
194 | des_set_key(&key3,sch3); | 194 | des_set_key_unchecked(&key3,sch3); |
195 | 195 | ||
196 | #ifndef SIGALRM | 196 | #ifndef SIGALRM |
197 | printf("First we calculate the approximate speed ...\n"); | 197 | printf("First we calculate the approximate speed ...\n"); |
198 | des_set_key(&key,sch); | 198 | des_set_key_unchecked(&key,sch); |
199 | count=10; | 199 | count=10; |
200 | do { | 200 | do { |
201 | long i; | 201 | long i; |
@@ -225,7 +225,7 @@ int main(int argc, char **argv) | |||
225 | 225 | ||
226 | Time_F(START); | 226 | Time_F(START); |
227 | for (count=0,run=1; COND(ca); count++) | 227 | for (count=0,run=1; COND(ca); count++) |
228 | des_set_key(&key,sch); | 228 | des_set_key_unchecked(&key,sch); |
229 | d=Time_F(STOP); | 229 | d=Time_F(STOP); |
230 | printf("%ld set_key's in %.2f seconds\n",count,d); | 230 | printf("%ld set_key's in %.2f seconds\n",count,d); |
231 | a=((double)COUNT(ca))/d; | 231 | a=((double)COUNT(ca))/d; |
diff --git a/src/lib/libcrypto/des/str2key.c b/src/lib/libcrypto/des/str2key.c index 24841452f1..c6abb87201 100644 --- a/src/lib/libcrypto/des/str2key.c +++ b/src/lib/libcrypto/des/str2key.c | |||
@@ -58,8 +58,6 @@ | |||
58 | 58 | ||
59 | #include "des_locl.h" | 59 | #include "des_locl.h" |
60 | 60 | ||
61 | OPENSSL_EXTERN int des_check_key; | ||
62 | |||
63 | void des_string_to_key(const char *str, des_cblock *key) | 61 | void des_string_to_key(const char *str, des_cblock *key) |
64 | { | 62 | { |
65 | des_key_schedule ks; | 63 | des_key_schedule ks; |
@@ -88,11 +86,8 @@ void des_string_to_key(const char *str, des_cblock *key) | |||
88 | } | 86 | } |
89 | #endif | 87 | #endif |
90 | des_set_odd_parity(key); | 88 | des_set_odd_parity(key); |
91 | i=des_check_key; | 89 | des_set_key_unchecked(key,ks); |
92 | des_check_key=0; | 90 | des_cbc_cksum((const unsigned char*)str,key,length,ks,key); |
93 | des_set_key(key,ks); | ||
94 | des_check_key=i; | ||
95 | des_cbc_cksum((unsigned char*)str,key,length,ks,key); | ||
96 | memset(ks,0,sizeof(ks)); | 91 | memset(ks,0,sizeof(ks)); |
97 | des_set_odd_parity(key); | 92 | des_set_odd_parity(key); |
98 | } | 93 | } |
@@ -150,13 +145,10 @@ void des_string_to_2keys(const char *str, des_cblock *key1, des_cblock *key2) | |||
150 | #endif | 145 | #endif |
151 | des_set_odd_parity(key1); | 146 | des_set_odd_parity(key1); |
152 | des_set_odd_parity(key2); | 147 | des_set_odd_parity(key2); |
153 | i=des_check_key; | 148 | des_set_key_unchecked(key1,ks); |
154 | des_check_key=0; | 149 | des_cbc_cksum((const unsigned char*)str,key1,length,ks,key1); |
155 | des_set_key(key1,ks); | 150 | des_set_key_unchecked(key2,ks); |
156 | des_cbc_cksum((unsigned char*)str,key1,length,ks,key1); | 151 | des_cbc_cksum((const unsigned char*)str,key2,length,ks,key2); |
157 | des_set_key(key2,ks); | ||
158 | des_cbc_cksum((unsigned char*)str,key2,length,ks,key2); | ||
159 | des_check_key=i; | ||
160 | memset(ks,0,sizeof(ks)); | 152 | memset(ks,0,sizeof(ks)); |
161 | des_set_odd_parity(key1); | 153 | des_set_odd_parity(key1); |
162 | des_set_odd_parity(key2); | 154 | des_set_odd_parity(key2); |