From 4d2a1b4f8fb345c80bb9f3bbd141e592c5d3241d Mon Sep 17 00:00:00 2001 From: Jouni Malinen Date: Tue, 28 Jul 2015 01:00:06 +0300 Subject: [PATCH] OpenSSL: Implement SSL_set_session_secret_cb() callback for OpenSSL 1.1.0 This needs to use the new accessor functions for client/server random since the previously used direct access won't be available anymore. Signed-off-by: Jouni Malinen --- src/crypto/tls_openssl.c | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/src/crypto/tls_openssl.c b/src/crypto/tls_openssl.c index fb8e01e40..902374c9e 100644 --- a/src/crypto/tls_openssl.c +++ b/src/crypto/tls_openssl.c @@ -3690,6 +3690,7 @@ static int tls_sess_sec_cb(SSL *s, void *secret, int *secret_len, struct tls_connection *conn = arg; int ret; +#if OPENSSL_VERSION_NUMBER < 0x10100000L if (conn == NULL || conn->session_ticket_cb == NULL) return 0; @@ -3698,6 +3699,23 @@ static int tls_sess_sec_cb(SSL *s, void *secret, int *secret_len, conn->session_ticket_len, s->s3->client_random, s->s3->server_random, secret); +#else + unsigned char client_random[SSL3_RANDOM_SIZE]; + unsigned char server_random[SSL3_RANDOM_SIZE]; + + if (conn == NULL || conn->session_ticket_cb == NULL) + return 0; + + SSL_get_client_random(s, client_random, sizeof(client_random)); + SSL_get_server_random(s, server_random, sizeof(server_random)); + + ret = conn->session_ticket_cb(conn->session_ticket_cb_ctx, + conn->session_ticket, + conn->session_ticket_len, + client_random, + server_random, secret); +#endif + os_free(conn->session_ticket); conn->session_ticket = NULL;