From: Eric Wong Date: Tue, 7 Mar 2023 08:47:15 +0000 (+0000) Subject: sha: fix compatibility with old OpenSSL + Net::SSLeay X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=010b3a1482c1c1c24c447e9ea4b6b24ddd4577bb;p=thirdparty%2Fpublic-inbox.git sha: fix compatibility with old OpenSSL + Net::SSLeay In older OpenSSL, EVP_get_digestbyname() didn't work properly without calling OpenSSL_add_all_digests(), first. However, OpenSSL_add_all_digests() is deprecated by OpenSSL 1.1.0 in favor of OPENSSL_init_crypto(). Of course, OpenSSL_init_crypto() isn't available in OpenSSL 1.0.1k nor Net::SSLeay as of 1.93_02 (2023-02-22). Thus, instead of relying on string lookups and conditional subroutine calls, just call EVP_sha1() and EVP_sha256() which work on both old and new systems. Tested with Net::SSLeay 1.55 and OpenSSL 1.0.1k on on CentOS 7.x --- diff --git a/lib/PublicInbox/SHA.pm b/lib/PublicInbox/SHA.pm index da70beef3..81f626188 100644 --- a/lib/PublicInbox/SHA.pm +++ b/lib/PublicInbox/SHA.pm @@ -20,8 +20,8 @@ BEGIN { unless (eval(<<'EOM')) { use Net::SSLeay 1.43; my %SHA = ( - 1 => Net::SSLeay::EVP_get_digestbyname('sha1'), - 256 => Net::SSLeay::EVP_get_digestbyname('sha256'), + 1 => Net::SSLeay::EVP_sha1(), + 256 => Net::SSLeay::EVP_sha256(), ); sub new {