summaryrefslogtreecommitdiff
path: root/src/lib/libcrypto/des/set_key.c
diff options
context:
space:
mode:
authorbeck <>2002-05-15 02:29:21 +0000
committerbeck <>2002-05-15 02:29:21 +0000
commitb64270d1e45fe7f3241e4c9b6ce60d5ac89bc2e9 (patch)
treefa27cf82a1250b64ed3bf5f4a18c7354d470bbcc /src/lib/libcrypto/des/set_key.c
parente471e1ea98d673597b182ea85f29e30c97cd08b5 (diff)
downloadopenbsd-b64270d1e45fe7f3241e4c9b6ce60d5ac89bc2e9.tar.gz
openbsd-b64270d1e45fe7f3241e4c9b6ce60d5ac89bc2e9.tar.bz2
openbsd-b64270d1e45fe7f3241e4c9b6ce60d5ac89bc2e9.zip
OpenSSL 0.9.7 stable 2002 05 08 merge
Diffstat (limited to 'src/lib/libcrypto/des/set_key.c')
-rw-r--r--src/lib/libcrypto/des/set_key.c43
1 files changed, 24 insertions, 19 deletions
diff --git a/src/lib/libcrypto/des/set_key.c b/src/lib/libcrypto/des/set_key.c
index 09afd4fc03..683916e71b 100644
--- a/src/lib/libcrypto/des/set_key.c
+++ b/src/lib/libcrypto/des/set_key.c
@@ -65,7 +65,7 @@
65 */ 65 */
66#include "des_locl.h" 66#include "des_locl.h"
67 67
68OPENSSL_GLOBAL int des_check_key=0; 68OPENSSL_IMPLEMENT_GLOBAL(int,DES_check_key); /* defaults to false */
69 69
70static const unsigned char odd_parity[256]={ 70static const unsigned char odd_parity[256]={
71 1, 1, 2, 2, 4, 4, 7, 7, 8, 8, 11, 11, 13, 13, 14, 14, 71 1, 1, 2, 2, 4, 4, 7, 7, 8, 8, 11, 11, 13, 13, 14, 14,
@@ -85,7 +85,7 @@ static const unsigned char odd_parity[256]={
85224,224,227,227,229,229,230,230,233,233,234,234,236,236,239,239, 85224,224,227,227,229,229,230,230,233,233,234,234,236,236,239,239,
86241,241,242,242,244,244,247,247,248,248,251,251,253,253,254,254}; 86241,241,242,242,244,244,247,247,248,248,251,251,253,253,254,254};
87 87
88void des_set_odd_parity(des_cblock *key) 88void DES_set_odd_parity(DES_cblock *key)
89 { 89 {
90 int i; 90 int i;
91 91
@@ -93,7 +93,7 @@ void des_set_odd_parity(des_cblock *key)
93 (*key)[i]=odd_parity[(*key)[i]]; 93 (*key)[i]=odd_parity[(*key)[i]];
94 } 94 }
95 95
96int des_check_key_parity(const_des_cblock *key) 96int DES_check_key_parity(const_DES_cblock *key)
97 { 97 {
98 int i; 98 int i;
99 99
@@ -115,7 +115,7 @@ int des_check_key_parity(const_des_cblock *key)
115 * (and actual cblock values). 115 * (and actual cblock values).
116 */ 116 */
117#define NUM_WEAK_KEY 16 117#define NUM_WEAK_KEY 16
118static des_cblock weak_keys[NUM_WEAK_KEY]={ 118static DES_cblock weak_keys[NUM_WEAK_KEY]={
119 /* weak keys */ 119 /* weak keys */
120 {0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01}, 120 {0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01},
121 {0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE}, 121 {0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE},
@@ -135,7 +135,7 @@ static des_cblock weak_keys[NUM_WEAK_KEY]={
135 {0xE0,0xFE,0xE0,0xFE,0xF1,0xFE,0xF1,0xFE}, 135 {0xE0,0xFE,0xE0,0xFE,0xF1,0xFE,0xF1,0xFE},
136 {0xFE,0xE0,0xFE,0xE0,0xFE,0xF1,0xFE,0xF1}}; 136 {0xFE,0xE0,0xFE,0xE0,0xFE,0xF1,0xFE,0xF1}};
137 137
138int des_is_weak_key(const_des_cblock *key) 138int DES_is_weak_key(const_DES_cblock *key)
139 { 139 {
140 int i; 140 int i;
141 141
@@ -146,7 +146,7 @@ int des_is_weak_key(const_des_cblock *key)
146 * eay 93/06/29 146 * eay 93/06/29
147 * Another problem, I was comparing only the first 4 147 * Another problem, I was comparing only the first 4
148 * bytes, 97/03/18 */ 148 * bytes, 97/03/18 */
149 if (memcmp(weak_keys[i],key,sizeof(des_cblock)) == 0) return(1); 149 if (memcmp(weak_keys[i],key,sizeof(DES_cblock)) == 0) return(1);
150 return(0); 150 return(0);
151 } 151 }
152 152
@@ -307,15 +307,15 @@ static const DES_LONG des_skb[8][64]={
307 0x00002822L,0x04002822L,0x00042822L,0x04042822L, 307 0x00002822L,0x04002822L,0x00042822L,0x04042822L,
308 }}; 308 }};
309 309
310int des_set_key(const_des_cblock *key, des_key_schedule schedule) 310int DES_set_key(const_DES_cblock *key, DES_key_schedule *schedule)
311 { 311 {
312 if (des_check_key) 312 if (DES_check_key)
313 { 313 {
314 return des_set_key_checked(key, schedule); 314 return DES_set_key_checked(key, schedule);
315 } 315 }
316 else 316 else
317 { 317 {
318 des_set_key_unchecked(key, schedule); 318 DES_set_key_unchecked(key, schedule);
319 return 0; 319 return 0;
320 } 320 }
321 } 321 }
@@ -324,17 +324,17 @@ int des_set_key(const_des_cblock *key, des_key_schedule schedule)
324 * return -1 if key parity error, 324 * return -1 if key parity error,
325 * return -2 if illegal weak key. 325 * return -2 if illegal weak key.
326 */ 326 */
327int des_set_key_checked(const_des_cblock *key, des_key_schedule schedule) 327int DES_set_key_checked(const_DES_cblock *key, DES_key_schedule *schedule)
328 { 328 {
329 if (!des_check_key_parity(key)) 329 if (!DES_check_key_parity(key))
330 return(-1); 330 return(-1);
331 if (des_is_weak_key(key)) 331 if (DES_is_weak_key(key))
332 return(-2); 332 return(-2);
333 des_set_key_unchecked(key, schedule); 333 DES_set_key_unchecked(key, schedule);
334 return 0; 334 return 0;
335 } 335 }
336 336
337void des_set_key_unchecked(const_des_cblock *key, des_key_schedule schedule) 337void DES_set_key_unchecked(const_DES_cblock *key, DES_key_schedule *schedule)
338 { 338 {
339 static int shifts2[16]={0,0,1,1,1,1,1,1,0,1,1,1,1,1,1,0}; 339 static int shifts2[16]={0,0,1,1,1,1,1,1,0,1,1,1,1,1,1,0};
340 register DES_LONG c,d,t,s,t2; 340 register DES_LONG c,d,t,s,t2;
@@ -342,7 +342,11 @@ void des_set_key_unchecked(const_des_cblock *key, des_key_schedule schedule)
342 register DES_LONG *k; 342 register DES_LONG *k;
343 register int i; 343 register int i;
344 344
345 k = &schedule->ks.deslong[0]; 345#if OPENBSD_DEV_CRYPTO
346 memcpy(schedule->key,key,sizeof schedule->key);
347 schedule->session=NULL;
348#endif
349 k = &schedule->ks->deslong[0];
346 in = &(*key)[0]; 350 in = &(*key)[0];
347 351
348 c2l(in,c); 352 c2l(in,c);
@@ -390,13 +394,14 @@ void des_set_key_unchecked(const_des_cblock *key, des_key_schedule schedule)
390 } 394 }
391 } 395 }
392 396
393int des_key_sched(const_des_cblock *key, des_key_schedule schedule) 397int DES_key_sched(const_DES_cblock *key, DES_key_schedule *schedule)
394 { 398 {
395 return(des_set_key(key,schedule)); 399 return(DES_set_key(key,schedule));
396 } 400 }
397 401/*
398#undef des_fixup_key_parity 402#undef des_fixup_key_parity
399void des_fixup_key_parity(des_cblock *key) 403void des_fixup_key_parity(des_cblock *key)
400 { 404 {
401 des_set_odd_parity(key); 405 des_set_odd_parity(key);
402 } 406 }
407*/