Support EVP_MD_block_size() with providers
[oweals/openssl.git] / crypto / evp / evp_lib.c
index f99e905e42af263f87428d41ddf37b63235df2da..914a19cc5e0abf729e0bd2823632bc5cc401f12f 100644 (file)
@@ -298,6 +298,14 @@ int EVP_CIPHER_CTX_nid(const EVP_CIPHER_CTX *ctx)
 
 int EVP_MD_block_size(const EVP_MD *md)
 {
+    if (md == NULL) {
+        EVPerr(EVP_F_EVP_MD_BLOCK_SIZE, EVP_R_MESSAGE_DIGEST_IS_NULL);
+        return -1;
+    }
+
+    if (md->prov != NULL && md->dblock_size != NULL)
+        return (int)md->dblock_size();
+
     return md->block_size;
 }