DH_free(dh);
return ret;
}
+
+static int ffc_params_copy_mfail(void)
+{
+ int ret = 0;
+ FFC_PARAMS params, copy;
+ BIGNUM *p = NULL, *q = NULL, *g = NULL;
+
+ ossl_ffc_params_init(¶ms);
+ ossl_ffc_params_init(©);
+
+ if (!TEST_ptr(p = BN_bin2bn(dsa_2048_224_sha256_p,
+ sizeof(dsa_2048_224_sha256_p), NULL))
+ || !TEST_ptr(q = BN_bin2bn(dsa_2048_224_sha256_q,
+ sizeof(dsa_2048_224_sha256_q), NULL))
+ || !TEST_ptr(g = BN_bin2bn(dsa_2048_224_sha256_g,
+ sizeof(dsa_2048_224_sha256_g), NULL)))
+ goto err;
+
+ ossl_ffc_params_set0_pqg(¶ms, p, q, g);
+ p = q = g = NULL;
+ if (!TEST_true(ossl_ffc_params_set_seed(¶ms, dsa_2048_224_sha224_seed,
+ sizeof(dsa_2048_224_sha224_seed))))
+ goto err;
+
+ MFAIL_start();
+ ret = ossl_ffc_params_copy(©, ¶ms);
+ MFAIL_end();
+
+ if (!ret)
+ goto err;
+
+ ret = 1;
+err:
+ ossl_ffc_params_cleanup(¶ms);
+ if (ret)
+ ossl_ffc_params_cleanup(©);
+ BN_free(p);
+ BN_free(q);
+ BN_free(g);
+ return ret;
+}
#endif /* OPENSSL_NO_DH */
int setup_tests(void)
ADD_TEST(ffc_private_validate_test);
ADD_ALL_TESTS(ffc_private_gen_test, 10);
ADD_TEST(ffc_params_copy_test);
+ ADD_MFAIL_TEST(ffc_params_copy_mfail);
#endif /* OPENSSL_NO_DH */
return 1;
}