Commit 94b83a3c authored by Niels Möller's avatar Niels Möller

(des_key_sched): Rewrote error checking logic for

the case of non-zero des_check_key.

Rev: nettle/des-compat.c:1.3
parent 05a0279a
...@@ -202,39 +202,15 @@ int des_check_key = 0; ...@@ -202,39 +202,15 @@ int des_check_key = 0;
int int
des_key_sched(const_des_cblock *key, des_key_schedule ctx) des_key_sched(const_des_cblock *key, des_key_schedule ctx)
{ {
des_cblock nkey; if (des_check_key && !des_check_parity (DES_KEY_SIZE, *key))
const uint8_t *pkey; /* Bad parity */
return -1;
if (des_check_key) if (!nettle_des_set_key(ctx, *key) && des_check_key)
pkey = *key; /* Weak key */
else return -2;
{
/* Fix the parity */ return 0;
nettle_des_fix_parity(DES_KEY_SIZE, nkey, *key);
pkey = nkey;
}
if (nettle_des_set_key(ctx, pkey))
return 0;
else switch(ctx->status)
{
case DES_BAD_PARITY:
if (des_check_key)
return -1;
else
/* We fixed the parity above */
abort();
case DES_WEAK_KEY:
if (des_check_key)
return -2;
/* Pretend the key was good */
ctx->status = DES_OK;
return 0;
default:
abort();
}
} }
int int
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment