From 4d69c8fd822b1ced53d9c1aaced7ed4c4e3fb196 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Love=20H=C3=B6rnquist=20=C3=85strand?= Date: Mon, 28 Apr 2008 10:30:28 +0000 Subject: [PATCH] Fixup key parity before going ahead and using the key. git-svn-id: svn://svn.h5l.se/heimdal/trunk/heimdal@23122 ec53bebd-3082-4978-b11e-865c3cabbd6b --- lib/hcrypto/evp.c | 15 ++++++++++++--- 1 file changed, 12 insertions(+), 3 deletions(-) diff --git a/lib/hcrypto/evp.c b/lib/hcrypto/evp.c index fd99ad1db..99933ccae 100644 --- a/lib/hcrypto/evp.c +++ b/lib/hcrypto/evp.c @@ -1050,10 +1050,19 @@ des_ede3_cbc_init(EVP_CIPHER_CTX *ctx, int encp) { struct des_ede3_cbc *k = ctx->cipher_data; + DES_cblock deskey; - DES_set_key_unchecked((DES_cblock *)(key), &k->ks[0]); - DES_set_key_unchecked((DES_cblock *)(key + 8), &k->ks[1]); - DES_set_key_unchecked((DES_cblock *)(key + 16), &k->ks[2]); + memcpy(&deskey, key, sizeof(deskey)); + DES_set_odd_parity(&deskey); + DES_set_key_unchecked(&deskey, &k->ks[0]); + + memcpy(&deskey, key + 8, sizeof(deskey)); + DES_set_odd_parity(&deskey); + DES_set_key_unchecked(&deskey, &k->ks[1]); + + memcpy(&deskey, key + 16, sizeof(deskey)); + DES_set_odd_parity(&deskey); + DES_set_key_unchecked(&deskey, &k->ks[2]); return 1; }