From: Tomas Mraz Date: Thu, 20 Mar 2025 20:25:07 +0000 (+0100) Subject: Test EVP_DigestSignInit() with ECDSA and KECCAK-256 hash X-Git-Tag: openssl-3.4.2~136 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=4747108fed034e98ac2d0c76b67475fcc4c170ae;p=thirdparty%2Fopenssl.git Test EVP_DigestSignInit() with ECDSA and KECCAK-256 hash Reviewed-by: Paul Dale Reviewed-by: Dmitry Belyavskiy Reviewed-by: Nicola Tuveri (Merged from https://github.com/openssl/openssl/pull/27107) (cherry picked from commit 69fa61b08253a991e5553f35bd9fdaf8dc9aec43) --- diff --git a/test/evp_extra_test.c b/test/evp_extra_test.c index 8265efc06d6..6b8237ddf9a 100644 --- a/test/evp_extra_test.c +++ b/test/evp_extra_test.c @@ -1870,6 +1870,46 @@ static int test_EVP_DigestVerifyInit(void) return ret; } +#ifndef OPENSSL_NO_EC +static int test_ecdsa_digestsign_keccak(void) +{ + int ret = 0; + EVP_PKEY *pkey = NULL; + EVP_MD_CTX *ctx = NULL; + EVP_MD *md = NULL; + + if (nullprov != NULL) + return TEST_skip("Test does not support a non-default library context"); + + pkey = load_example_ec_key(); + if (!TEST_ptr(pkey)) + goto err; + + /* This would not work with FIPS provider so just use NULL libctx */ + md = EVP_MD_fetch(NULL, "KECCAK-256", NULL); + if (!TEST_ptr(md)) + goto err; + + ctx = EVP_MD_CTX_new(); + if (!TEST_ptr(ctx)) + goto err; + + /* + * Just check EVP_DigestSignInit_ex() works. + */ + if (!TEST_true(EVP_DigestSignInit(ctx, NULL, md, NULL, pkey))) + goto err; + + ret = 1; + err: + EVP_MD_CTX_free(ctx); + EVP_PKEY_free(pkey); + EVP_MD_free(md); + + return ret; +} +#endif + #ifndef OPENSSL_NO_SIPHASH /* test SIPHASH MAC via EVP_PKEY with non-default parameters and reinit */ static int test_siphash_digestsign(void) @@ -5905,6 +5945,9 @@ int setup_tests(void) ADD_TEST(test_EVP_set_default_properties); ADD_ALL_TESTS(test_EVP_DigestSignInit, 30); ADD_TEST(test_EVP_DigestVerifyInit); +#ifndef OPENSSL_NO_EC + ADD_TEST(test_ecdsa_digestsign_keccak); +#endif #ifndef OPENSSL_NO_SIPHASH ADD_TEST(test_siphash_digestsign); #endif