From: Jakub Zelenka Date: Mon, 1 Jun 2026 21:28:57 +0000 (+0200) Subject: evp: add test_set_get_raw_keys_mfail to evp extra tests X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=d318587d8f979eaa706ff7e1a22e7a450f198fd2;p=thirdparty%2Fopenssl.git evp: add test_set_get_raw_keys_mfail to evp extra tests Reviewed-by: Norbert Pocs Reviewed-by: Tomas Mraz 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 d020f91affd..3033255103f 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);