X-Git-Url: http://ftp.safe.ca/?a=blobdiff_plain;f=crypto%2Fdes_generic.c;h=5bd3ee345a64d8e60604a32097818a3a3d369a46;hb=857b409a48bdc33e824dff2d730e271b964e78bd;hp=f75eafe1a875122bfd2d16f735eae66cb2aff686;hpb=16d004a2eda7be2c6a2de63eca2ad3c6b57307b3;p=safe%2Fjmp%2Flinux-2.6 diff --git a/crypto/des_generic.c b/crypto/des_generic.c index f75eafe..5bd3ee3 100644 --- a/crypto/des_generic.c +++ b/crypto/des_generic.c @@ -628,7 +628,7 @@ static const u32 S8[64] = { * Choice 1 has operated on the key. * */ -static unsigned long ekey(u32 *pe, const u8 *k) +unsigned long des_ekey(u32 *pe, const u8 *k) { /* K&R: long is at least 32 bits */ unsigned long a, b, c, d, w; @@ -703,6 +703,7 @@ static unsigned long ekey(u32 *pe, const u8 *k) /* Zero if weak key */ return w; } +EXPORT_SYMBOL_GPL(des_ekey); /* * Decryption key expansion @@ -786,7 +787,7 @@ static int des_setkey(struct crypto_tfm *tfm, const u8 *key, int ret; /* Expand to tmp */ - ret = ekey(tmp, key); + ret = des_ekey(tmp, key); if (unlikely(ret == 0) && (*flags & CRYPTO_TFM_REQ_WEAK_KEY)) { *flags |= CRYPTO_TFM_RES_WEAK_KEY; @@ -867,15 +868,16 @@ static int des3_ede_setkey(struct crypto_tfm *tfm, const u8 *key, u32 *flags = &tfm->crt_flags; if (unlikely(!((K[0] ^ K[2]) | (K[1] ^ K[3])) || - !((K[2] ^ K[4]) | (K[3] ^ K[5])))) + !((K[2] ^ K[4]) | (K[3] ^ K[5]))) && + (*flags & CRYPTO_TFM_REQ_WEAK_KEY)) { - *flags |= CRYPTO_TFM_RES_BAD_KEY_SCHED; + *flags |= CRYPTO_TFM_RES_WEAK_KEY; return -EINVAL; } - ekey(expkey, key); expkey += DES_EXPKEY_WORDS; key += DES_KEY_SIZE; + des_ekey(expkey, key); expkey += DES_EXPKEY_WORDS; key += DES_KEY_SIZE; dkey(expkey, key); expkey += DES_EXPKEY_WORDS; key += DES_KEY_SIZE; - ekey(expkey, key); + des_ekey(expkey, key); return 0; } @@ -976,7 +978,7 @@ static struct crypto_alg des3_ede_alg = { MODULE_ALIAS("des3_ede"); -static int __init init(void) +static int __init des_generic_mod_init(void) { int ret = 0; @@ -991,14 +993,14 @@ out: return ret; } -static void __exit fini(void) +static void __exit des_generic_mod_fini(void) { crypto_unregister_alg(&des3_ede_alg); crypto_unregister_alg(&des_alg); } -module_init(init); -module_exit(fini); +module_init(des_generic_mod_init); +module_exit(des_generic_mod_fini); MODULE_LICENSE("GPL"); MODULE_DESCRIPTION("DES & Triple DES EDE Cipher Algorithms");