/* For generation callback */
OSSL_CALLBACK *cb;
void *cbarg;
+
+#if defined(FIPS_MODULE) && !defined(OPENSSL_NO_ACVP_TESTS)
+ /* ACVP test parameters */
+ OSSL_PARAM *acvp_test_params;
+#endif
};
static int rsa_gencb(int p, int n, BN_GENCB *cb)
params[0] = OSSL_PARAM_construct_int(OSSL_GEN_PARAM_POTENTIAL, &p);
params[1] = OSSL_PARAM_construct_int(OSSL_GEN_PARAM_ITERATION, &n);
-
return gctx->cb(params, gctx->cbarg);
}
&& !pss_params_fromdata(&gctx->pss_params, params, gctx->rsa_type,
gctx->libctx))
return 0;
+#if defined(FIPS_MODULE) && !defined(OPENSSL_NO_ACVP_TESTS)
+ /* Any ACVP test related parameters are copied into a params[] */
+ if (!rsa_acvp_test_gen_params_new(&gctx->acvp_test_params, params))
+ return 0;
+#endif
return 1;
}
if (gencb != NULL)
BN_GENCB_set(gencb, rsa_gencb, genctx);
+#if defined(FIPS_MODULE) && !defined(OPENSSL_NO_ACVP_TESTS)
+ if (gctx->acvp_test_params != NULL) {
+ if (!rsa_acvp_test_set_params(rsa_tmp, gctx->acvp_test_params))
+ goto err;
+ }
+#endif
+
if (!RSA_generate_multi_prime_key(rsa_tmp,
(int)gctx->nbits, (int)gctx->primes,
gctx->pub_exp, gencb))
if (gctx == NULL)
return;
-
+#if defined(FIPS_MODULE) && !defined(OPENSSL_NO_ACVP_TESTS)
+ rsa_acvp_test_gen_params_free(gctx->acvp_test_params);
+ gctx->acvp_test_params = NULL;
+#endif
BN_clear_free(gctx->pub_exp);
OPENSSL_free(gctx);
}