Merge pull request #628 from LemonBoy/openssl-compat

Support OpenSSL 1.1.0.
(cherry picked from commit ff5dd3673ee6b60d95e89dd89aa3605c79a93ac1)
This commit is contained in:
ailin-nemui 2017-02-05 22:20:31 +01:00 committed by Ailin Nemui
parent 39e591468d
commit dfffb0e9d8

View File

@ -32,6 +32,17 @@
#include <openssl/ssl.h> #include <openssl/ssl.h>
#include <openssl/err.h> #include <openssl/err.h>
/* OpenSSL 1.1.0 introduced some backward-incompatible changes to the api */
#if (OPENSSL_VERSION_NUMBER >= 0x10100000L) && !defined(LIBRESSL_VERSION_NUMBER)
/* The two functions below could be already defined if OPENSSL_API_COMPAT is
* below the 1.1.0 version so let's do a clean start */
#undef X509_get_notBefore
#undef X509_get_notAfter
#define X509_get_notBefore(x) X509_get0_notBefore(x)
#define X509_get_notAfter(x) X509_get0_notAfter(x)
#define ASN1_STRING_data(x) ASN1_STRING_get0_data(x)
#endif
/* ssl i/o channel object */ /* ssl i/o channel object */
typedef struct typedef struct
{ {
@ -352,13 +363,19 @@ static GIOFuncs irssi_ssl_channel_funcs = {
static gboolean irssi_ssl_init(void) static gboolean irssi_ssl_init(void)
{ {
#if (OPENSSL_VERSION_NUMBER >= 0x10100000L) && !defined(LIBRESSL_VERSION_NUMBER)
if (!OPENSSL_init_ssl(OPENSSL_INIT_SSL_DEFAULT, NULL)) {
g_error("Could not initialize OpenSSL");
return FALSE;
}
#else
SSL_library_init(); SSL_library_init();
SSL_load_error_strings(); SSL_load_error_strings();
OpenSSL_add_all_algorithms(); OpenSSL_add_all_algorithms();
#endif
ssl_inited = TRUE; ssl_inited = TRUE;
return TRUE; return TRUE;
} }
static int get_pem_password_callback(char *buffer, int max_length, int rwflag, void *pass) static int get_pem_password_callback(char *buffer, int max_length, int rwflag, void *pass)