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
This commit is contained in:
Love Hörnquist Åstrand
2008-04-28 10:30:28 +00:00
parent a660d3251f
commit 4d69c8fd82

View File

@@ -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;
}