{
int ret;
size_t size = 0;
+ size_t mdsize = EVP_MD_size(ctx->digest);
if (ctx->digest == NULL || ctx->digest->prov == NULL)
goto legacy;
return 0;
}
- ret = ctx->digest->dfinal(ctx->provctx, md, &size);
+ ret = ctx->digest->dfinal(ctx->provctx, md, &size, mdsize);
if (isize != NULL) {
if (size <= UINT_MAX) {
/* TODO(3.0): Remove legacy code below */
legacy:
- OPENSSL_assert(ctx->digest->md_size <= EVP_MAX_MD_SIZE);
+ OPENSSL_assert(mdsize <= EVP_MAX_MD_SIZE);
ret = ctx->digest->final(ctx, md);
if (isize != NULL)
- *isize = ctx->digest->md_size;
+ *isize = mdsize;
if (ctx->digest->cleanup) {
ctx->digest->cleanup(ctx);
EVP_MD_CTX_set_flags(ctx, EVP_MD_CTX_FLAG_CLEANED);