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(); }