commit b664f981aff4b3a0622d63c0f955effc909a0c8f Author: Philip Prindeville Date: Thu Feb 5 14:47:50 2026 -0700 [#4338] Build with current Openssl API --- a/meson.build +++ b/meson.build @@ -331,6 +331,12 @@ elif CRYPTO_DEP.name() == openssl.name() required: true, ) message('Using OpenSSL.') + if cpp.has_function('SSL_get1_peer_certificate', prefix: '#include ', dependencies: openssl) + conf_data.set('HAVE_NEW_SSL_API', 1) + endif + if cpp.has_function('OpenSSL_version', prefix: '#include ', dependencies: openssl) + conf_data.set('HAVE_OPENSSL_VERSION', 1) + endif else error('Dependency not found: neither Botan nor OpenSSL.') endif --- a/src/lib/asiolink/openssl_tls.h +++ b/src/lib/asiolink/openssl_tls.h @@ -171,7 +171,11 @@ public: /// /// @return The commonName part of the subjectName or the empty string. virtual std::string getSubject() { +#ifdef HAVE_NEW_SSL_API + ::X509* cert = ::SSL_get1_peer_certificate(this->native_handle()); +#else ::X509* cert = ::SSL_get_peer_certificate(this->native_handle()); +#endif if (!cert) { return (""); } @@ -205,7 +209,11 @@ public: /// /// @return The commonName part of the issuerName or the empty string. virtual std::string getIssuer() { +#ifdef HAVE_NEW_SSL_API + ::X509* cert = ::SSL_get1_peer_certificate(this->native_handle()); +#else ::X509* cert = ::SSL_get_peer_certificate(this->native_handle()); +#endif if (!cert) { return (""); } --- a/src/lib/cryptolink/openssl_link.cc +++ b/src/lib/cryptolink/openssl_link.cc @@ -77,7 +77,11 @@ CryptoLink::initialize(CryptoLink& c) { std::string CryptoLink::getVersion() { +#ifdef HAVE_OPENSSL_VERSION + return (OpenSSL_version(OPENSSL_VERSION)); +#else return (SSLeay_version(SSLEAY_VERSION)); +#endif } } // namespace cryptolink