mirror of
https://github.com/wolfSSL/wolfssl.git
synced 2025-07-30 18:57:27 +02:00
Added build option to enforce check for cipher suite in server_hello
from server. Enabled using WOLFSSL_STRICT_CIPHER_SUITE
. Some cipher suites could be allowed if they were supported a build-time even though not sent in the cipher suite list in client_hello
.
Example log output for test case where `client_hello` sent a cipher suite list and server choose a cipher suite not in the list: ``` wolfSSL Entering DoServerHello ServerHello did not use cipher suite from ClientHello wolfSSL Leaving DoHandShakeMsgType(), return -501 wolfSSL Leaving DoHandShakeMsg(), return -501 ``` RFC 5246: 7.4.1.3: Server Hello: `cipher_suite: The single cipher suite selected by the server from the list in ClientHello.cipher_suites.`
This commit is contained in:
@ -18172,6 +18172,23 @@ exit_dpk:
|
||||
ssl->options.cipherSuite = cs1;
|
||||
compression = input[i++];
|
||||
|
||||
#ifdef WOLFSSL_STRICT_CIPHER_SUITE
|
||||
{
|
||||
word32 idx, found = 0;
|
||||
/* confirm server_hello cipher suite is one sent in client_hello */
|
||||
for (idx = 0; idx < ssl->suites->suiteSz; idx += 2) {
|
||||
if (ssl->suites->suites[idx] == cs0 &&
|
||||
ssl->suites->suites[idx+1] == cs1) {
|
||||
found = idx;
|
||||
}
|
||||
}
|
||||
if (!found) {
|
||||
WOLFSSL_MSG("ServerHello did not use cipher suite from ClientHello");
|
||||
return MATCH_SUITE_ERROR;
|
||||
}
|
||||
}
|
||||
#endif
|
||||
|
||||
if (compression != NO_COMPRESSION && !ssl->options.usingCompression) {
|
||||
WOLFSSL_MSG("Server forcing compression w/o support");
|
||||
return COMPRESSION_ERROR;
|
||||
|
Reference in New Issue
Block a user