From: Matt Caswell Date: Mon, 7 Aug 2023 13:45:55 +0000 (+0100) Subject: TLS KeyUpdate messages are not allowed in QUIC X-Git-Tag: openssl-3.2.0-alpha1~213 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=50a0af2e41ea61a79c19c17f9e87541e283ba8bf;p=thirdparty%2Fopenssl.git TLS KeyUpdate messages are not allowed in QUIC We already disallowed the sending of TLS KeyUpdate messages. We also treat the receipt of a TLS KeyUpdate message as an unexpected message. RFC 9001 section 6: Endpoints MUST treat the receipt of a TLS KeyUpdate message as a connection error of type 0x010a, equivalent to a fatal TLS alert of unexpected_message; see Section 4.8. Reviewed-by: Hugo Landau Reviewed-by: Tomas Mraz (Merged from https://github.com/openssl/openssl/pull/21686) --- diff --git a/ssl/statem/statem_clnt.c b/ssl/statem/statem_clnt.c index 655b6ac17ad..9336363ca1a 100644 --- a/ssl/statem/statem_clnt.c +++ b/ssl/statem/statem_clnt.c @@ -184,7 +184,7 @@ static int ossl_statem_client13_read_transition(SSL_CONNECTION *s, int mt) st->hand_state = TLS_ST_CR_SESSION_TICKET; return 1; } - if (mt == SSL3_MT_KEY_UPDATE) { + if (mt == SSL3_MT_KEY_UPDATE && !SSL_IS_QUIC_HANDSHAKE(s)) { st->hand_state = TLS_ST_CR_KEY_UPDATE; return 1; } diff --git a/ssl/statem/statem_srvr.c b/ssl/statem/statem_srvr.c index b1ece8dd970..67865b85fa0 100644 --- a/ssl/statem/statem_srvr.c +++ b/ssl/statem/statem_srvr.c @@ -156,7 +156,7 @@ static int ossl_statem_server13_read_transition(SSL_CONNECTION *s, int mt) #endif } - if (mt == SSL3_MT_KEY_UPDATE) { + if (mt == SSL3_MT_KEY_UPDATE && !SSL_IS_QUIC_HANDSHAKE(s)) { st->hand_state = TLS_ST_SR_KEY_UPDATE; return 1; }