Skip to content

Commit f62aa55

Browse files
committed
Check ctx extensions before rejecting a TLS1.3 certificate message extension
1 parent e19a1a4 commit f62aa55

1 file changed

Lines changed: 6 additions & 2 deletions

File tree

src/tls.c

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -18044,10 +18044,14 @@ WOLFSSL_TEST_VIS int TLSX_Parse(WOLFSSL* ssl, const byte* input, word16 length,
1804418044
#ifdef WOLFSSL_TLS13
1804518045
/* RFC 8446 4.4.2: extensions in a Certificate message MUST
1804618046
* correspond to ones offered in our prior ClientHello (client) or
18047-
* CertificateRequest (server). Reject anything we did not offer. */
18047+
* CertificateRequest (server). Reject anything we did not offer, but a
18048+
* CTX-level API leaves the extension on ctx->extensions, so look there
18049+
* too before concluding it was never offered. */
1804818050
if (msgType == certificate &&
1804918051
IsAtLeastTLSv1_3(ssl->version) &&
18050-
TLSX_Find(ssl->extensions, (TLSX_Type)type) == NULL) {
18052+
TLSX_Find(ssl->extensions, (TLSX_Type)type) == NULL &&
18053+
(ssl->ctx == NULL ||
18054+
TLSX_Find(ssl->ctx->extensions, (TLSX_Type)type) == NULL)) {
1805118055
WOLFSSL_MSG("Cert-msg extension not offered in CH/CR");
1805218056
SendAlert(ssl, alert_fatal, unsupported_extension);
1805318057
WOLFSSL_ERROR_VERBOSE(UNSUPPORTED_EXTENSION);

0 commit comments

Comments
 (0)