diff options
Diffstat (limited to 'src/pubkey/rsa/rsa.cpp')
-rw-r--r-- | src/pubkey/rsa/rsa.cpp | 13 |
1 files changed, 10 insertions, 3 deletions
diff --git a/src/pubkey/rsa/rsa.cpp b/src/pubkey/rsa/rsa.cpp index c606e5c53..b181cb9cc 100644 --- a/src/pubkey/rsa/rsa.cpp +++ b/src/pubkey/rsa/rsa.cpp @@ -57,12 +57,19 @@ RSA_PrivateKey::RSA_PrivateKey(RandomNumberGenerator& rng, e = exp; p = random_prime(rng, (bits + 1) / 2, e); q = random_prime(rng, bits - p.bits(), e); - d = inverse_mod(e, lcm(p - 1, q - 1)); - - PKCS8_load_hook(rng, true); + n = p * q; if(n.bits() != bits) throw Self_Test_Failure(algo_name() + " private key generation failed"); + + d = inverse_mod(e, lcm(p - 1, q - 1)); + d1 = d % (p - 1); + d2 = d % (q - 1); + c = inverse_mod(q, p); + + core = IF_Core(rng, e, n, d, p, q, d1, d2, c); + + gen_check(rng); } /* |