@@ -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