cyrus-imapd/patch-cyrus-auto-dh-param
2024-12-10 16:29:32 +00:00

72 lines
2.6 KiB
Plaintext

https://github.com/cyrusimap/cyrus-imapd/pull/5156
--- cyrus-imapd-3.4.8/imap/tls.c.8 2024-05-06 01:00:03.000000000 +0100
+++ cyrus-imapd-3.4.8/imap/tls.c 2024-12-10 16:22:50.950639737 +0000
@@ -149,7 +149,8 @@ static int tls_serverengine = 0; /* serv
static int tls_clientengine = 0; /* client engine initialized? */
static int do_dump = 0; /* actively dumping protocol? */
-#if (OPENSSL_VERSION_NUMBER >= 0x0090800fL)
+#if (OPENSSL_VERSION_NUMBER >= 0x0090800fL) && (OPENSSL_VERSION_NUMBER < 0x10101000L)
+#define HAVE_MANUAL_DH_PARAMS 1
static DH *dh_params = NULL;
#endif
@@ -240,7 +241,7 @@ static int DH_set0_pqg(DH *dh, BIGNUM *p
}
#endif
-#if (OPENSSL_VERSION_NUMBER >= 0x0090800fL)
+#ifdef HAVE_MANUAL_DH_PARAMS
/* Logic copied from OpenSSL apps/s_server.c: give the TLS context
* DH params to work with DHE-* cipher suites. Hardcoded fallback
* in case no DH params in server_key or server_cert.
@@ -294,7 +295,7 @@ static DH *load_dh_param(const char *dhf
return(ret);
}
-#endif /* OPENSSL_VERSION_NUMBER >= 0x009080fL */
+#endif /* HAVE_MANUAL_DH_PARAMS */
/* taken from OpenSSL apps/s_cb.c */
@@ -739,7 +740,6 @@ EXPORTED int tls_init_serverengine(c
const char *client_ca_file;
const char *server_ca_file;
const char *server_cert_file;
- const char *server_dhparam_file;
const char *server_key_file;
const char *crl_file_path;
enum enum_value tls_client_certs;
@@ -883,7 +883,6 @@ EXPORTED int tls_init_serverengine(c
server_ca_file = config_getstring(IMAPOPT_TLS_SERVER_CA_FILE);
server_cert_file = config_getstring(IMAPOPT_TLS_SERVER_CERT);
- server_dhparam_file = config_getstring(IMAPOPT_TLS_SERVER_DHPARAM);
server_key_file = config_getstring(IMAPOPT_TLS_SERVER_KEY);
if (config_debug) {
@@ -949,8 +948,11 @@ EXPORTED int tls_init_serverengine(c
SSL_CTX_set_tmp_rsa_callback(s_ctx, tmp_rsa_cb);
#endif
-#if (OPENSSL_VERSION_NUMBER >= 0x0090800fL)
+#if (OPENSSL_VERSION_NUMBER >= 0x10101000L)
+ SSL_CTX_set_dh_auto(s_ctx, 1);
+#elif defined(HAVE_MANUAL_DH_PARAMS)
/* Load DH params for DHE-* key exchanges */
+ const char *server_dhparam_file = config_getstring(IMAPOPT_TLS_SERVER_DHPARAM);
dh_params = load_dh_param(server_dhparam_file, server_key_file, server_cert_file);
SSL_CTX_set_tmp_dh(s_ctx, dh_params);
#endif
@@ -1402,7 +1404,7 @@ EXPORTED int tls_shutdown_serverengine(v
sess_dbopen = 0;
}
-#if (OPENSSL_VERSION_NUMBER >= 0x0090800fL)
+#ifdef HAVE_MANUAL_DH_PARAMS
if (dh_params) DH_free(dh_params);
#endif
}