forked from pool/openssl-1_1
40 lines
1.2 KiB
Diff
40 lines
1.2 KiB
Diff
|
Index: openssl-1.1.0c/crypto/rsa/rsa_gen.c
|
||
|
===================================================================
|
||
|
--- openssl-1.1.0c.orig/crypto/rsa/rsa_gen.c 2016-12-08 17:55:15.968669184 +0100
|
||
|
+++ openssl-1.1.0c/crypto/rsa/rsa_gen.c 2016-12-08 17:55:15.976669308 +0100
|
||
|
@@ -173,6 +173,12 @@ static int fips_rsa_builtin_keygen(RSA *
|
||
|
goto err;
|
||
|
}
|
||
|
|
||
|
+ BN_copy(rsa->e, e_value);
|
||
|
+
|
||
|
+ if (!BN_is_zero(rsa->p) && !BN_is_zero(rsa->q))
|
||
|
+ test = 1;
|
||
|
+
|
||
|
+retry:
|
||
|
/* prepare approximate minimum p and q */
|
||
|
if (!BN_set_word(r0, 0xB504F334))
|
||
|
goto err;
|
||
|
@@ -185,12 +191,6 @@ static int fips_rsa_builtin_keygen(RSA *
|
||
|
if (!BN_lshift(r3, r3, pbits - 100))
|
||
|
goto err;
|
||
|
|
||
|
- BN_copy(rsa->e, e_value);
|
||
|
-
|
||
|
- if (!BN_is_zero(rsa->p) && !BN_is_zero(rsa->q))
|
||
|
- test = 1;
|
||
|
-
|
||
|
- retry:
|
||
|
/* generate p and q */
|
||
|
for (i = 0; i < 5 * pbits; i++) {
|
||
|
ploop:
|
||
|
@@ -323,6 +323,8 @@ static int fips_rsa_builtin_keygen(RSA *
|
||
|
BN_free(pr0);
|
||
|
}
|
||
|
|
||
|
+ /* test 2^(bits/2) < d < LCM((p-1)*(q-1)) */
|
||
|
+ /* the LCM part is covered due to the generation by modulo above */
|
||
|
if (BN_num_bits(rsa->d) < pbits)
|
||
|
goto retry; /* d is too small */
|
||
|
|