]> git.ipfire.org Git - thirdparty/openssl.git/commitdiff
Test EVP_DigestSignInit() with ECDSA and KECCAK-256 hash
authorTomas Mraz <tomas@openssl.org>
Thu, 20 Mar 2025 20:25:07 +0000 (21:25 +0100)
committerTomas Mraz <tomas@openssl.org>
Tue, 25 Mar 2025 19:00:42 +0000 (20:00 +0100)
Reviewed-by: Paul Dale <ppzgs1@gmail.com>
Reviewed-by: Dmitry Belyavskiy <beldmit@gmail.com>
Reviewed-by: Nicola Tuveri <nic.tuv@gmail.com>
(Merged from https://github.com/openssl/openssl/pull/27107)

test/evp_extra_test.c

index 9e96d80a3e01f1b89e9aba520879d2114fb93a41..175f37bd0c579d8640245c0ce2196362dc3c781f 100644 (file)
@@ -2017,6 +2017,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)
@@ -6709,6 +6749,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