if (!EVP_DigestInit_ex(hashctx, EVP_shake256(), NULL)
|| !EVP_DigestUpdate(hashctx, dom_s, strlen(dom_s))
|| !EVP_DigestUpdate(hashctx, dom, sizeof(dom))
- || !EVP_DigestUpdate(hashctx, context, context_len))
+ || (context_len > 0
+ && !EVP_DigestUpdate(hashctx, context, context_len)))
return C448_FAILURE;
return C448_SUCCESS;
|| !EVP_DigestUpdate(hashctx,
expanded + EDDSA_448_PRIVATE_BYTES,
EDDSA_448_PRIVATE_BYTES)
- || !EVP_DigestUpdate(hashctx, message, message_len)) {
+ || (message_len > 0
+ && !EVP_DigestUpdate(hashctx, message, message_len))) {
OPENSSL_cleanse(expanded, sizeof(expanded));
goto err;
}
if (!hash_init_with_dom(hashctx, prehashed, 0, context, context_len)
|| !EVP_DigestUpdate(hashctx, nonce_point, sizeof(nonce_point))
|| !EVP_DigestUpdate(hashctx, pubkey, EDDSA_448_PUBLIC_BYTES)
- || !EVP_DigestUpdate(hashctx, message, message_len)
+ || (message_len > 0
+ && !EVP_DigestUpdate(hashctx, message, message_len))
|| !EVP_DigestFinalXOF(hashctx, challenge, sizeof(challenge)))
goto err;