summaryrefslogtreecommitdiffhomepage
path: root/genrsa.c
diff options
context:
space:
mode:
authorMatt Johnston <matt@ucc.asn.au>2020-10-15 19:55:15 +0800
committerMatt Johnston <matt@ucc.asn.au>2020-10-15 19:55:15 +0800
commit0e3e8db5bfca0c579be55e7580a46c593c1384be (patch)
tree2b1a718f633fb95c1f2d689a591cf9e8642697f3 /genrsa.c
parent78e17f6ee9a944430da3e517ee1fe384fd6b275b (diff)
parent17873e8c922eded2cec86184673a6d110df6403f (diff)
merge from main
--HG-- branch : fuzz
Diffstat (limited to 'genrsa.c')
-rw-r--r--genrsa.c11
1 files changed, 5 insertions, 6 deletions
diff --git a/genrsa.c b/genrsa.c
index e9aca76..71a46a6 100644
--- a/genrsa.c
+++ b/genrsa.c
@@ -53,10 +53,7 @@ dropbear_rsa_key * gen_rsa_priv_key(unsigned int size) {
m_mp_alloc_init_multi(&key->e, &key->n, &key->d, &key->p, &key->q, NULL);
m_mp_init_multi(&pminus, &lcm, &qminus, NULL);
- if (mp_set_int(key->e, RSA_E) != MP_OKAY) {
- fprintf(stderr, "RSA generation failed\n");
- exit(1);
- }
+ mp_set_ul(key->e, RSA_E);
while (1) {
getrsaprime(key->p, &pminus, key->e, size/16);
@@ -95,6 +92,7 @@ static void getrsaprime(mp_int* prime, mp_int *primeminus,
mp_int* rsa_e, unsigned int size_bytes) {
unsigned char *buf;
+ int trials;
DEF_MP_INT(temp_gcd);
buf = (unsigned char*)m_malloc(size_bytes);
@@ -108,8 +106,9 @@ static void getrsaprime(mp_int* prime, mp_int *primeminus,
bytes_to_mp(prime, buf, size_bytes);
- /* find the next integer which is prime, 8 round of miller-rabin */
- if (mp_prime_next_prime(prime, 8, 0) != MP_OKAY) {
+ /* find the next integer which is prime */
+ trials = mp_prime_rabin_miller_trials(mp_count_bits(prime));
+ if (mp_prime_next_prime(prime, trials, 0) != MP_OKAY) {
fprintf(stderr, "RSA generation failed\n");
exit(1);
}