From 21b50808cdc379cee4533c4b4bddd75a56a246e5 Mon Sep 17 00:00:00 2001 From: Andrzej Kurek Date: Wed, 6 Jul 2022 03:26:55 -0400 Subject: [PATCH] Clarify the need for calling mbedtls_ssl_derive_keys after extension parsing Use a more straightforward condition to note that session resumption is happening. Co-authored-by: Ronald Cron Signed-off-by: Andrzej Kurek --- library/ssl_tls12_client.c | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/library/ssl_tls12_client.c b/library/ssl_tls12_client.c index 3388f10d1..3f2ef3148 100644 --- a/library/ssl_tls12_client.c +++ b/library/ssl_tls12_client.c @@ -1644,7 +1644,12 @@ static int ssl_parse_server_hello( mbedtls_ssl_context *ssl ) } } - if( ssl->state == MBEDTLS_SSL_SERVER_CHANGE_CIPHER_SPEC ) + /* + * mbedtls_ssl_derive_keys() has to be called after the parsing of the + * extensions. It sets the transform data for the resumed session which in + * case of DTLS includes the server CID extracted from the CID extension. + */ + if( ssl->handshake->resume ) { if( ( ret = mbedtls_ssl_derive_keys( ssl ) ) != 0 ) {