diff options
| author | Richard Basch <probe@mit.edu> | 1995-11-28 20:08:53 +0000 |
|---|---|---|
| committer | Richard Basch <probe@mit.edu> | 1995-11-28 20:08:53 +0000 |
| commit | 13c25d984cbc5c95ee73c9872fd3de6cebcc75e9 (patch) | |
| tree | 041fa3468cee2a7b926fcbefc7b5cffb98b7b215 /src/lib/crypto | |
| parent | 7d339153b49875a6a3fc28705bb9c393fc420eb9 (diff) | |
| download | krb5-13c25d984cbc5c95ee73c9872fd3de6cebcc75e9.tar.gz krb5-13c25d984cbc5c95ee73c9872fd3de6cebcc75e9.tar.xz krb5-13c25d984cbc5c95ee73c9872fd3de6cebcc75e9.zip | |
Make sure that each DES key is strong. If not, xor first byte with 0xf0
git-svn-id: svn://anonsvn.mit.edu/krb5/trunk@7140 dc483132-0cff-0310-8789-dd5450dbe970
Diffstat (limited to 'src/lib/crypto')
| -rw-r--r-- | src/lib/crypto/des/d3_str2ky.c | 10 |
1 files changed, 8 insertions, 2 deletions
diff --git a/src/lib/crypto/des/d3_str2ky.c b/src/lib/crypto/des/d3_str2ky.c index 5f4d7a050..d83810d01 100644 --- a/src/lib/crypto/des/d3_str2ky.c +++ b/src/lib/crypto/des/d3_str2ky.c @@ -90,8 +90,11 @@ const krb5_data FAR * salt; return EINVAL; /* fix key parity */ - for (j = 0; j < keyblock->length/sizeof(mit_des_cblock); j++) + for (j = 0; j < keyblock->length/sizeof(mit_des_cblock); j++) { mit_des_fixup_key_parity(*((mit_des_cblock *)key+j)); + if (mit_des_is_weak_key(*((mit_des_cblock *)key+j))) + *((unsigned char *)((mit_des_cblock *)key+j)) ^= 0xf0; + } /* Now, CBC encrypt with itself */ (void) mit_des3_key_sched(*((mit_des3_cblock *)key), ks); @@ -111,8 +114,11 @@ const krb5_data FAR * salt; krb5_xfree(copystr); /* now fix up key parity again */ - for (j = 0; j < keyblock->length/sizeof(mit_des_cblock); j++) + for (j = 0; j < keyblock->length/sizeof(mit_des_cblock); j++) { mit_des_fixup_key_parity(*((mit_des_cblock *)key+j)); + if (mit_des_is_weak_key(*((mit_des_cblock *)key+j))) + *((unsigned char *)((mit_des_cblock *)key+j)) ^= 0xf0; + } return 0; } |
