Browse Source

Add support for OpenSSL3 to OpenSSLConnection

Bart van Strien 1 năm trước cách đây
mục cha
commit
e520e59a78
1 tập tin đã thay đổi với 10 bổ sung3 xóa
  1. 10 3
      src/generic/OpenSSLConnection.cpp

+ 10 - 3
src/generic/OpenSSLConnection.cpp

@@ -13,9 +13,15 @@ OpenSSLConnection::SSLFuncs::SSLFuncs()
 
 
 	valid = false;
 	valid = false;
 
 
+	// Try OpenSSL 3
+	handle *sslhandle = OpenLibrary("libssl.so.3");
+	handle *cryptohandle = OpenLibrary("libcrypto.so.3");
 	// Try OpenSSL 1.1
 	// Try OpenSSL 1.1
-	handle *sslhandle = OpenLibrary("libssl.so.1.1");
-	handle *cryptohandle = OpenLibrary("libcrypto.so.1.1");
+	if (!sslhandle || !cryptohandle)
+	{
+		sslhandle = OpenLibrary("libssl.so.1.1");
+		cryptohandle = OpenLibrary("libcrypto.so.1.1");
+	}
 	// Try OpenSSL 1.0
 	// Try OpenSSL 1.0
 	if (!sslhandle || !cryptohandle)
 	if (!sslhandle || !cryptohandle)
 	{
 	{
@@ -50,7 +56,8 @@ OpenSSLConnection::SSLFuncs::SSLFuncs()
 	valid = valid && LoadSymbol(write, sslhandle, "SSL_write");
 	valid = valid && LoadSymbol(write, sslhandle, "SSL_write");
 	valid = valid && LoadSymbol(shutdown, sslhandle, "SSL_shutdown");
 	valid = valid && LoadSymbol(shutdown, sslhandle, "SSL_shutdown");
 	valid = valid && LoadSymbol(get_verify_result, sslhandle, "SSL_get_verify_result");
 	valid = valid && LoadSymbol(get_verify_result, sslhandle, "SSL_get_verify_result");
-	valid = valid && LoadSymbol(get_peer_certificate, sslhandle, "SSL_get_peer_certificate");
+	valid = valid && (LoadSymbol(get_peer_certificate, sslhandle, "SSL_get1_peer_certificate") ||
+			LoadSymbol(get_peer_certificate, sslhandle, "SSL_get_peer_certificate"));
 
 
 	valid = valid && (LoadSymbol(SSLv23_method, sslhandle, "SSLv23_method") ||
 	valid = valid && (LoadSymbol(SSLv23_method, sslhandle, "SSLv23_method") ||
 			LoadSymbol(SSLv23_method, sslhandle, "TLS_method"));
 			LoadSymbol(SSLv23_method, sslhandle, "TLS_method"));