diff options
author | Jack Lloyd <[email protected]> | 2015-11-29 13:03:06 -0500 |
---|---|---|
committer | Jack Lloyd <[email protected]> | 2015-11-29 13:03:06 -0500 |
commit | e3db054e582c676e6f2752e216fa03fa408b3dff (patch) | |
tree | 265d44e7dd142eec065e5c7065bd9faaa8bdaee5 /src/lib/pubkey/elgamal | |
parent | ebf2164a972517ee405428d9d0641fe296aba745 (diff) |
Add more workfactor estimate helpers.
Specifically a named one for integer factorization (despite using same
formula as DL calc) which incorporates the k value from RFC 3766. Also
adds dl_exponent_size which returns the exponent size, this one ignores
k thus using a ~10 bit larger exponent than strictly necessary.
Adding in k downgrades 1024 bit RSA to exactly 80 bits, which is probably
about right.
Diffstat (limited to 'src/lib/pubkey/elgamal')
-rw-r--r-- | src/lib/pubkey/elgamal/elgamal.cpp | 4 |
1 files changed, 2 insertions, 2 deletions
diff --git a/src/lib/pubkey/elgamal/elgamal.cpp b/src/lib/pubkey/elgamal/elgamal.cpp index 5bcdd5689..4ff3cc47a 100644 --- a/src/lib/pubkey/elgamal/elgamal.cpp +++ b/src/lib/pubkey/elgamal/elgamal.cpp @@ -34,7 +34,7 @@ ElGamal_PrivateKey::ElGamal_PrivateKey(RandomNumberGenerator& rng, x = x_arg; if(x == 0) - x.randomize(rng, 2 * dl_work_factor(group_p().bits())); + x.randomize(rng, dl_exponent_size(group_p().bits())); y = power_mod(group_g(), x, group_p()); @@ -112,7 +112,7 @@ ElGamal_Encryption_Operation::raw_encrypt(const byte msg[], size_t msg_len, if(m >= p) throw Invalid_Argument("ElGamal encryption: Input is too large"); - BigInt k(rng, 2 * dl_work_factor(p.bits())); + BigInt k(rng, dl_exponent_size(p.bits())); BigInt a = powermod_g_p(k); BigInt b = mod_p.multiply(m, powermod_y_p(k)); |