Restore the operation of extra_strong in ed25519_secret_key_generate

This commit is contained in:
Nick Mathewson 2014-08-26 23:15:14 -04:00
parent 006e6d3b6f
commit 22760c4899

View File

@ -21,10 +21,15 @@ int
ed25519_secret_key_generate(ed25519_secret_key_t *seckey_out, ed25519_secret_key_generate(ed25519_secret_key_t *seckey_out,
int extra_strong) int extra_strong)
{ {
(void) extra_strong; int r;
if (ed25519_ref10_seckey(seckey_out->seckey) < 0) uint8_t seed[32];
return -1; if (! extra_strong || crypto_strongest_rand(seed, sizeof(seed)) < 0)
return 0; crypto_rand((char*)seed, sizeof(seed));
r = ed25519_ref10_seckey_expand(seckey_out->seckey, seed);
memwipe(seed, 0, sizeof(seed));
return r < 0 ? -1 : 0;
} }
int int
@ -51,10 +56,10 @@ ed25519_public_key_generate(ed25519_public_key_t *pubkey_out,
int int
ed25519_keypair_generate(ed25519_keypair_t *keypair_out, int extra_strong) ed25519_keypair_generate(ed25519_keypair_t *keypair_out, int extra_strong)
{ {
(void) extra_strong; if (ed25519_secret_key_generate(&keypair_out->seckey, extra_strong) < 0)
return -1;
if (ed25519_ref10_keygen(keypair_out->pubkey.pubkey, if (ed25519_public_key_generate(&keypair_out->pubkey,
keypair_out->seckey.seckey)<0) &keypair_out->seckey)<0)
return -1; return -1;
return 0; return 0;
} }