Skip to content

Commit 69eb81a

Browse files
authored
Merge pull request #10936 from aidangarske/fix-tls13-ctx-status-request
Check ctx extensions before rejecting a TLS1.3 certificate message extension
2 parents ca53afe + f62aa55 commit 69eb81a

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
@@ -18062,10 +18062,14 @@ WOLFSSL_TEST_VIS int TLSX_Parse(WOLFSSL* ssl, const byte* input, word16 length,
1806218062
#ifdef WOLFSSL_TLS13
1806318063
/* RFC 8446 4.4.2: extensions in a Certificate message MUST
1806418064
* correspond to ones offered in our prior ClientHello (client) or
18065-
* CertificateRequest (server). Reject anything we did not offer. */
18065+
* CertificateRequest (server). Reject anything we did not offer, but a
18066+
* CTX-level API leaves the extension on ctx->extensions, so look there
18067+
* too before concluding it was never offered. */
1806618068
if (msgType == certificate &&
1806718069
IsAtLeastTLSv1_3(ssl->version) &&
18068-
TLSX_Find(ssl->extensions, (TLSX_Type)type) == NULL) {
18070+
TLSX_Find(ssl->extensions, (TLSX_Type)type) == NULL &&
18071+
(ssl->ctx == NULL ||
18072+
TLSX_Find(ssl->ctx->extensions, (TLSX_Type)type) == NULL)) {
1806918073
WOLFSSL_MSG("Cert-msg extension not offered in CH/CR");
1807018074
SendAlert(ssl, alert_fatal, unsupported_extension);
1807118075
WOLFSSL_ERROR_VERBOSE(UNSUPPORTED_EXTENSION);

0 commit comments

Comments
 (0)