From f988b07805162835aa2476363d6eda8d5ae70331 Mon Sep 17 00:00:00 2001 From: jpfox156 Date: Sun, 21 Aug 2022 22:08:51 +1000 Subject: [PATCH] FIX #1762 update switch_apr.c for openssl3 Low-level openssl api was deprecated in openssl3.0 leading to errors during compile. Update switch_md5 method to use the openssl high-level api. syntax plagiarized from: https://stackoverflow.com/questions/69806220/advice-needed-for-migration-of-low-level-openssl-api-to-high-level-openssl-apis --- src/switch_apr.c | 17 +++++++++++++---- 1 file changed, 13 insertions(+), 4 deletions(-) diff --git a/src/switch_apr.c b/src/switch_apr.c index 91204acba7a..abf74157e44 100644 --- a/src/switch_apr.c +++ b/src/switch_apr.c @@ -1171,11 +1171,20 @@ SWITCH_DECLARE(switch_status_t) switch_md5(unsigned char digest[SWITCH_MD5_DIGES return SWITCH_STATUS_SUCCESS; #elif defined(HAVE_LIBCRYPTO) - MD5_CTX md5_context; + EVP_MD_CTX *mdctx; + unsigned int digestLen = EVP_MD_size(EVP_md5()); + + // MD5_Init + mdctx = EVP_MD_CTX_new(); + EVP_DigestInit_ex(mdctx, EVP_md5(), NULL); + + // MD5_Update + EVP_DigestUpdate(mdctx, input, inputLen); - MD5_Init(&md5_context); - MD5_Update(&md5_context, input, inputLen); - MD5_Final(digest, &md5_context); + // MD5_Final + digest = (unsigned char *)OPENSSL_malloc(digestLen); + EVP_DigestFinal_ex(mdctx, digest, &digestLen); + EVP_MD_CTX_free(mdctx); return SWITCH_STATUS_SUCCESS; #else