|
|
- --- a/src/osdep/unix/ssl_unix.c
- +++ b/src/osdep/unix/ssl_unix.c
- @@ -35,6 +35,7 @@
- #include <bio.h>
- #include <crypto.h>
- #include <rand.h>
- +#include <rsa.h>
- #undef crypt
-
- #define SSLBUFLEN 8192
- @@ -90,6 +91,11 @@ static char *start_tls = NIL; /* non-NIL
-
- static int sslonceonly = 0;
-
- +#if OPENSSL_API_COMPAT >= 0x10100000L
- +#define SSL_CTX_need_tmp_RSA(ctx) 0
- +#define SSL_CTX_set_tmp_rsa_callback(ctx, cb) while(0) (cb)(NULL, 0, 0)
- +#endif
- +
- void ssl_onceonlyinit (void)
- {
- if (!sslonceonly++) { /* only need to call it once */
- @@ -114,7 +120,6 @@ void ssl_onceonlyinit (void)
- /* apply runtime linkage */
- mail_parameters (NIL,SET_SSLDRIVER,(void *) &ssldriver);
- mail_parameters (NIL,SET_SSLSTART,(void *) ssl_start);
- - SSL_library_init (); /* add all algorithms */
- }
- }
-
- @@ -220,9 +225,7 @@ static char *ssl_start_work (SSLSTREAM *
- (sslclientkey_t) mail_parameters (NIL,GET_SSLCLIENTKEY,NIL);
- if (ssl_last_error) fs_give ((void **) &ssl_last_error);
- ssl_last_host = host;
- - if (!(stream->context = SSL_CTX_new ((flags & NET_TLSCLIENT) ?
- - TLSv1_client_method () :
- - SSLv23_client_method ())))
- + if (!(stream->context = SSL_CTX_new (TLS_client_method())))
- return "SSL context failed";
- SSL_CTX_set_options (stream->context,0);
- /* disable certificate validation? */
- @@ -695,9 +698,6 @@ void ssl_server_init (char *server)
- SSLSTREAM *stream = (SSLSTREAM *) memset (fs_get (sizeof (SSLSTREAM)),0,
- sizeof (SSLSTREAM));
- ssl_onceonlyinit (); /* make sure algorithms added */
- - ERR_load_crypto_strings ();
- - SSL_load_error_strings ();
- - /* build specific certificate/key file names */
- sprintf (cert,"%s/%s-%s.pem",SSL_CERT_DIRECTORY,server,tcp_serveraddr ());
- sprintf (key,"%s/%s-%s.pem",SSL_KEY_DIRECTORY,server,tcp_serveraddr ());
- /* use non-specific name if no specific cert */
- @@ -708,9 +708,7 @@ void ssl_server_init (char *server)
- if (stat (key,&sbuf)) strcpy (key,cert);
- }
- /* create context */
- - if (!(stream->context = SSL_CTX_new (start_tls ?
- - TLSv1_server_method () :
- - SSLv23_server_method ())))
- + if (!(stream->context = SSL_CTX_new (TLS_server_method())))
- syslog (LOG_ALERT,"Unable to create SSL context, host=%.80s",
- tcp_clienthost ());
- else { /* set context options */
|