diff --git a/src/tls.c b/src/tls.c index 40a9ae740..b7e087e44 100644 --- a/src/tls.c +++ b/src/tls.c @@ -9648,6 +9648,7 @@ int TLSX_Parse(WOLFSSL* ssl, byte* input, word16 length, byte msgType, #ifdef WOLFSSL_TLS13 if (IsAtLeastTLSv1_3(ssl->ctx->method->version) && msgType != client_hello && + msgType != server_hello && msgType != encrypted_extensions) { return EXT_NOT_ALLOWED; } @@ -9655,6 +9656,11 @@ int TLSX_Parse(WOLFSSL* ssl, byte* input, word16 length, byte msgType, msgType == encrypted_extensions) { return EXT_NOT_ALLOWED; } + else if (IsAtLeastTLSv1_3(ssl->ctx->method->version) && + msgType == server_hello && + !ssl->options.downgrade) { + return EXT_NOT_ALLOWED; + } #endif ret = EC_PARSE(ssl, input + offset, size, isRequest); break; diff --git a/wolfssl/internal.h b/wolfssl/internal.h index b33f56b8b..182c345fd 100644 --- a/wolfssl/internal.h +++ b/wolfssl/internal.h @@ -1163,8 +1163,9 @@ enum Misc { HELLO_EXT_EXTMS = 0x0017, /* ID for the extended master secret ext */ SECRET_LEN = WOLFSSL_MAX_MASTER_KEY_LENGTH, /* pre RSA and all master */ -#if defined(WOLFSSL_MYSQL_COMPATIBLE) - ENCRYPT_LEN = 1024, /* allow larger static buffer with mysql */ +#if defined(WOLFSSL_MYSQL_COMPATIBLE) || \ + (defined(USE_FAST_MATH) && defined(FP_MAX_BITS) && FP_MAX_BITS > 8192) + ENCRYPT_LEN = 1024, /* allow 8192 bit static buffer */ #else ENCRYPT_LEN = 512, /* allow 4096 bit static buffer */ #endif