Commit d318587d8f for openssl.org
commit d318587d8f979eaa706ff7e1a22e7a450f198fd2
Author: Jakub Zelenka <jakub.zelenka@openssl.foundation>
Date: Mon Jun 1 23:28:57 2026 +0200
evp: add test_set_get_raw_keys_mfail to evp extra tests
Reviewed-by: Norbert Pocs <norbertp@openssl.org>
Reviewed-by: Tomas Mraz <tomas@openssl.foundation>
MergeDate: Thu Jun 11 16:00:16 2026
(Merged from https://github.com/openssl/openssl/pull/31356)
diff --git a/test/evp_extra_test.c b/test/evp_extra_test.c
index d020f91aff..3033255103 100644
--- a/test/evp_extra_test.c
+++ b/test/evp_extra_test.c
@@ -3414,6 +3414,49 @@ static int test_set_get_raw_keys(int tst)
&& test_set_get_raw_keys_int(tst, 1, 1);
}
+static int test_set_get_raw_keys_mfail(int idx)
+{
+ const uint8_t *in;
+ size_t inlen, len = 0;
+ EVP_PKEY *pkey = NULL;
+ unsigned char *buf = NULL;
+ unsigned char *privalloc = NULL;
+ const char *name;
+ int ok = 0;
+ int ret = 0;
+
+ name = keys[idx].name != NULL ? keys[idx].name : OBJ_nid2sn(keys[idx].type);
+ inlen = keys[idx].privlen;
+ in = keys[idx].priv;
+#ifndef OPENSSL_NO_ML_KEM
+ if (in == ml_kem_seed) {
+ if (!TEST_true(ml_kem_seed_to_priv(name, in, inlen, &privalloc, &inlen)))
+ goto err;
+ in = privalloc;
+ }
+#endif
+
+ MFAIL_start();
+ pkey = EVP_PKEY_new_raw_private_key_ex(testctx, name, NULL, in, inlen);
+ if (pkey != NULL
+ && EVP_PKEY_get_raw_private_key(pkey, NULL, &len)
+ && (buf = OPENSSL_malloc(len == 0 ? 1 : len)) != NULL
+ && EVP_PKEY_get_raw_private_key(pkey, buf, &len))
+ ok = 1;
+ MFAIL_end();
+
+ if (!ok)
+ goto err;
+
+ ret = TEST_mem_eq(in, inlen, buf, len);
+
+err:
+ OPENSSL_free(privalloc);
+ OPENSSL_free(buf);
+ EVP_PKEY_free(pkey);
+ return ret;
+}
+
static int test_EVP_PKEY_check(int i)
{
int ret = 0;
@@ -8443,6 +8486,12 @@ int setup_tests(void)
ADD_TEST(test_EVP_SM2_verify);
#endif
ADD_ALL_TESTS(test_set_get_raw_keys, OSSL_NELEM(keys));
+#if defined(_MSC_VER) || defined(OPENSSL_NO_CACHED_FETCH)
+ ADD_MFAIL_ALL_NO_CHECK_TESTS(test_set_get_raw_keys_mfail,
+ OSSL_NELEM(keys));
+#else
+ ADD_MFAIL_ALL_TESTS(test_set_get_raw_keys_mfail, OSSL_NELEM(keys));
+#endif
ADD_ALL_TESTS(test_EVP_PKEY_check, OSSL_NELEM(keycheckdata));
#ifndef OPENSSL_NO_CMAC
ADD_TEST(test_CMAC_keygen);