From f6019467fa858162348b925acc4ea3a78e617e9d Mon Sep 17 00:00:00 2001 From: Ruby Martin Date: Wed, 6 May 2026 15:25:06 -0600 Subject: [PATCH] add unit test for NULL SHAKE parameters --- tests/api/test_evp_digest.c | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/tests/api/test_evp_digest.c b/tests/api/test_evp_digest.c index 6aa6464ac0..e771de9e31 100644 --- a/tests/api/test_evp_digest.c +++ b/tests/api/test_evp_digest.c @@ -368,6 +368,22 @@ int test_wolfSSL_EVP_DigestFinalXOF(void) ExpectIntEQ(sz, 16); ExpectIntEQ(EVP_MD_CTX_cleanup(&mdCtx), WOLFSSL_SUCCESS); #endif + + /* NULL size pointer on the non-XOF Final must not crash; + * defaults to 32 / 16 bytes for SHAKE256 / SHAKE128. */ + wolfSSL_EVP_MD_CTX_init(&mdCtx); + ExpectIntEQ(EVP_DigestInit(&mdCtx, EVP_shake256()), WOLFSSL_SUCCESS); + ExpectIntEQ(EVP_DigestUpdate(&mdCtx, data, 1), WOLFSSL_SUCCESS); + ExpectIntEQ(EVP_DigestFinal(&mdCtx, shake, NULL), WOLFSSL_SUCCESS); + ExpectIntEQ(EVP_MD_CTX_cleanup(&mdCtx), WOLFSSL_SUCCESS); + + #if defined(WOLFSSL_SHAKE128) + wolfSSL_EVP_MD_CTX_init(&mdCtx); + ExpectIntEQ(EVP_DigestInit(&mdCtx, EVP_shake128()), WOLFSSL_SUCCESS); + ExpectIntEQ(EVP_DigestUpdate(&mdCtx, data, 1), WOLFSSL_SUCCESS); + ExpectIntEQ(EVP_DigestFinal(&mdCtx, shake, NULL), WOLFSSL_SUCCESS); + ExpectIntEQ(EVP_MD_CTX_cleanup(&mdCtx), WOLFSSL_SUCCESS); + #endif #endif return EXPECT_RESULT(); }