Skip to content

Commit 0aacffd

Browse files
committed
linuxkm rsa: retry wc_MakeRsaKey if not prime.
1 parent b2143a8 commit 0aacffd

1 file changed

Lines changed: 33 additions & 3 deletions

File tree

linuxkm/lkcapi_rsa_glue.c

Lines changed: 33 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2075,7 +2075,17 @@ static int linuxkm_test_rsa_driver(const char * driver, int nbits)
20752075
}
20762076
#endif /* WC_RSA_BLINDING */
20772077

2078-
ret = wc_MakeRsaKey(key, nbits, WC_RSA_EXPONENT, &rng);
2078+
for (;;) {
2079+
/* Retry if not prime. */
2080+
ret = wc_MakeRsaKey(key, nbits, WC_RSA_EXPONENT, &rng);
2081+
#ifdef HAVE_FIPS
2082+
if (ret == WC_NO_ERR_TRACE(PRIME_GEN_E)) {
2083+
continue;
2084+
}
2085+
#endif
2086+
break;
2087+
}
2088+
20792089
if (ret) {
20802090
pr_err("error: make rsa key returned: %d\n", ret);
20812091
goto test_rsa_end;
@@ -2431,7 +2441,17 @@ static int linuxkm_test_pkcs1pad_driver(const char * driver, int nbits,
24312441
}
24322442
#endif /* WC_RSA_BLINDING */
24332443

2434-
ret = wc_MakeRsaKey(key, nbits, WC_RSA_EXPONENT, &rng);
2444+
for (;;) {
2445+
/* Retry if not prime. */
2446+
ret = wc_MakeRsaKey(key, nbits, WC_RSA_EXPONENT, &rng);
2447+
#ifdef HAVE_FIPS
2448+
if (ret == WC_NO_ERR_TRACE(PRIME_GEN_E)) {
2449+
continue;
2450+
}
2451+
#endif
2452+
break;
2453+
}
2454+
24352455
if (ret) {
24362456
pr_err("error: make rsa key returned: %d\n", ret);
24372457
test_rc = ret;
@@ -2929,7 +2949,17 @@ static int linuxkm_test_pkcs1_driver(const char * driver, int nbits,
29292949
}
29302950
#endif /* WC_RSA_BLINDING */
29312951

2932-
ret = wc_MakeRsaKey(key, nbits, WC_RSA_EXPONENT, &rng);
2952+
for (;;) {
2953+
/* Retry if not prime. */
2954+
ret = wc_MakeRsaKey(key, nbits, WC_RSA_EXPONENT, &rng);
2955+
#ifdef HAVE_FIPS
2956+
if (ret == WC_NO_ERR_TRACE(PRIME_GEN_E)) {
2957+
continue;
2958+
}
2959+
#endif
2960+
break;
2961+
}
2962+
29332963
if (ret) {
29342964
pr_err("error: make rsa key returned: %d\n", ret);
29352965
test_rc = ret;

0 commit comments

Comments
 (0)