From cd3b53b8f85ad66336936073d822b3315e0ddd4f Mon Sep 17 00:00:00 2001 From: Matt Caswell Date: Thu, 6 Sep 2018 15:53:25 +0100 Subject: [PATCH] Ensure certificate callbacks work correctly in TLSv1.3 The is_tls13_capable() function should not return 0 if no certificates are configured directly because a certificate callback is present. Fixes #7140 Reviewed-by: Tim Hudson Reviewed-by: Paul Dale (Merged from https://github.com/openssl/openssl/pull/7141) --- ssl/statem/statem_lib.c | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/ssl/statem/statem_lib.c b/ssl/statem/statem_lib.c index adc8b98144..508bb88767 100644 --- a/ssl/statem/statem_lib.c +++ b/ssl/statem/statem_lib.c @@ -1489,7 +1489,8 @@ static int ssl_method_error(const SSL *s, const SSL_METHOD *method) /* * Only called by servers. Returns 1 if the server has a TLSv1.3 capable - * certificate type, or has PSK configured. Otherwise returns 0. + * certificate type, or has PSK or a certificate callback configured. Otherwise + * returns 0. */ static int is_tls13_capable(const SSL *s) { @@ -1500,7 +1501,7 @@ static int is_tls13_capable(const SSL *s) return 1; #endif - if (s->psk_find_session_cb != NULL) + if (s->psk_find_session_cb != NULL || s->cert->cert_cb != NULL) return 1; for (i = 0; i < SSL_PKEY_NUM; i++) { -- 2.34.1