From 139a7053e4371c4f4999e51cac8976a5446ce11c Mon Sep 17 00:00:00 2001 From: Simmo Saan Date: Tue, 10 Dec 2019 23:00:13 +0200 Subject: [PATCH] irc: fix compilation with GnuTLS < 3.1.0 (issue #115) Due to this ssl_password will be partially unused with GnuTLS < 3.1.0. In that case an encrypted SSL client cert import will simply fail. --- src/plugins/irc/irc-server.c | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/src/plugins/irc/irc-server.c b/src/plugins/irc/irc-server.c index 828924fab..1d59d1060 100644 --- a/src/plugins/irc/irc-server.c +++ b/src/plugins/irc/irc-server.c @@ -4710,11 +4710,24 @@ irc_server_gnutls_callback (const void *pointer, void *data, /* key */ gnutls_x509_privkey_init (&server->tls_cert_key); + +/* + * gnutls_x509_privkey_import2 has no "Since: ..." in GnuTLS manual but + * GnuTLS NEWS file lists it being added in 3.1.0: + * https://gitlab.com/gnutls/gnutls/blob/2b715b9564681acb3008a5574dcf25464de8b038/NEWS#L2552 + */ +#if LIBGNUTLS_VERSION_NUMBER >= 0x030100 /* 3.1.0 */ ret = gnutls_x509_privkey_import2 (server->tls_cert_key, &filedatum, GNUTLS_X509_FMT_PEM, ssl_password, 0); +#else + ret = gnutls_x509_privkey_import (server->tls_cert_key, + &filedatum, + GNUTLS_X509_FMT_PEM); +#endif /* LIBGNUTLS_VERSION_NUMBER >= 0x0301000 */ + if (ret < 0) { ret = gnutls_x509_privkey_import_pkcs8 (