From 64a8397c52fae4c398c79b2d697a4fdf191e4273 Mon Sep 17 00:00:00 2001 From: Minos Galanakis Date: Tue, 2 Jun 2026 15:01:05 +0100 Subject: [PATCH] test_suite_ssl: Unified tls13_rejects_extension_duplicate Signed-off-by: Minos Galanakis --- tests/suites/test_suite_ssl.data | 8 +- tests/suites/test_suite_ssl.function | 131 ++++++++++----------------- 2 files changed, 50 insertions(+), 89 deletions(-) diff --git a/tests/suites/test_suite_ssl.data b/tests/suites/test_suite_ssl.data index f76a61bfe8..0468aaea0a 100644 --- a/tests/suites/test_suite_ssl.data +++ b/tests/suites/test_suite_ssl.data @@ -3377,11 +3377,11 @@ cookie_parsing:"16fefd0000000000000000002F010000de000000000000011efefd7b72727272 TLS 1.3: duplicate extension rejected tls13_check_received_extension_duplicate -TLS 1.3 srv Certificate msg - duplicate extension rejected from client -tls13_client_rejects_extension_duplicate +TLS 1.3 duplicate extension rejected by client +tls13_rejects_extension_duplicate:MBEDTLS_SSL_IS_CLIENT -TLS 1.3 srv Certificate msg - duplicate extension rejected from server -tls13_server_rejects_extension_duplicate +TLS 1.3 duplicate extension rejected by server +tls13_rejects_extension_duplicate:MBEDTLS_SSL_IS_SERVER TLS 1.3 srv Certificate msg - wrong vector lengths tls13_server_certificate_msg_invalid_vector_len diff --git a/tests/suites/test_suite_ssl.function b/tests/suites/test_suite_ssl.function index 71317c490c..185ef9332d 100644 --- a/tests/suites/test_suite_ssl.function +++ b/tests/suites/test_suite_ssl.function @@ -4424,7 +4424,7 @@ exit: /* BEGIN_CASE depends_on:MBEDTLS_TEST_HOOKS:MBEDTLS_SSL_PROTO_TLS1_3:!MBEDTLS_SSL_PROTO_TLS1_2:MBEDTLS_SSL_CLI_C:MBEDTLS_SSL_SRV_C:MBEDTLS_SSL_HANDSHAKE_WITH_CERT_ENABLED:MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_EPHEMERAL_ENABLED:MBEDTLS_TEST_AT_LEAST_ONE_TLS1_3_CIPHERSUITE:PSA_WANT_ECC_SECP_R1_384 */ -void tls13_client_rejects_extension_duplicate() +void tls13_rejects_extension_duplicate(int endpoint) { int ret = -1; mbedtls_test_ssl_endpoint client_ep, server_ep; @@ -4432,7 +4432,6 @@ void tls13_client_rejects_extension_duplicate() memset(&server_ep, 0, sizeof(server_ep)); unsigned char *buf; size_t buf_len; - int step = 0; mbedtls_test_handshake_test_options client_options; mbedtls_test_handshake_test_options server_options; @@ -4458,101 +4457,63 @@ void tls13_client_rejects_extension_duplicate() &(server_ep.socket), 1024); TEST_EQUAL(ret, 0); - while (1) { - mbedtls_test_set_step(++step); + switch (endpoint) { + case MBEDTLS_SSL_IS_CLIENT: + ret = mbedtls_test_move_handshake_to_state( + &(server_ep.ssl), &(client_ep.ssl), + MBEDTLS_SSL_ENCRYPTED_EXTENSIONS); + TEST_EQUAL(ret, 0); - ret = mbedtls_test_move_handshake_to_state( - &(server_ep.ssl), &(client_ep.ssl), - MBEDTLS_SSL_ENCRYPTED_EXTENSIONS); - TEST_EQUAL(ret, 0); + ret = mbedtls_ssl_flush_output(&(server_ep.ssl)); + TEST_EQUAL(ret, 0); - ret = mbedtls_ssl_flush_output(&(server_ep.ssl)); - TEST_EQUAL(ret, 0); + ret = mbedtls_ssl_tls13_fetch_handshake_msg( + &(client_ep.ssl), MBEDTLS_SSL_HS_SERVER_HELLO, + &buf, &buf_len); + TEST_EQUAL(ret, 0); + client_ep.ssl.keep_current_message = 1; - ret = mbedtls_ssl_tls13_fetch_handshake_msg(&(client_ep.ssl), - MBEDTLS_SSL_HS_SERVER_HELLO, - &buf, &buf_len); - TEST_EQUAL(ret, 0); - client_ep.ssl.keep_current_message = 1; + ret = tls13_duplicate_last_extension( + &(client_ep.ssl), MBEDTLS_SSL_HS_SERVER_HELLO, buf, buf_len); + TEST_EQUAL(ret, 0); - ret = tls13_duplicate_last_extension( - &(client_ep.ssl), MBEDTLS_SSL_HS_SERVER_HELLO, buf, buf_len); - TEST_EQUAL(ret, 0); + ret = mbedtls_ssl_handshake_step(&(client_ep.ssl)); + TEST_EQUAL(ret, MBEDTLS_ERR_SSL_ILLEGAL_PARAMETER); + break; - ret = mbedtls_ssl_handshake_step(&(client_ep.ssl)); - TEST_EQUAL(ret, MBEDTLS_ERR_SSL_ILLEGAL_PARAMETER); - break; - } + case MBEDTLS_SSL_IS_SERVER: + ret = mbedtls_test_move_handshake_to_state( + &(server_ep.ssl), &(client_ep.ssl), + MBEDTLS_SSL_CLIENT_HELLO); + TEST_EQUAL(ret, 0); -exit: - mbedtls_ssl_reset_chk_buf_ptr_fail_args(); - mbedtls_test_ssl_endpoint_free(&client_ep); - mbedtls_test_ssl_endpoint_free(&server_ep); - mbedtls_test_free_handshake_options(&client_options); - mbedtls_test_free_handshake_options(&server_options); - MD_OR_USE_PSA_DONE(); -} -/* END_CASE */ + ret = mbedtls_ssl_flush_output(&(server_ep.ssl)); + TEST_EQUAL(ret, 0); -/* BEGIN_CASE depends_on:MBEDTLS_TEST_HOOKS:MBEDTLS_SSL_PROTO_TLS1_3:!MBEDTLS_SSL_PROTO_TLS1_2:MBEDTLS_SSL_CLI_C:MBEDTLS_SSL_SRV_C:MBEDTLS_SSL_HANDSHAKE_WITH_CERT_ENABLED:MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_EPHEMERAL_ENABLED:MBEDTLS_TEST_AT_LEAST_ONE_TLS1_3_CIPHERSUITE:PSA_WANT_ECC_SECP_R1_384 */ -void tls13_server_rejects_extension_duplicate() -{ - int ret = -1; - mbedtls_test_ssl_endpoint client_ep, server_ep; - memset(&client_ep, 0, sizeof(client_ep)); - memset(&server_ep, 0, sizeof(server_ep)); - unsigned char *buf; - size_t buf_len; - int step = 0; - mbedtls_test_handshake_test_options client_options; - mbedtls_test_handshake_test_options server_options; + ret = mbedtls_test_move_handshake_to_state( + &(client_ep.ssl), &(server_ep.ssl), + MBEDTLS_SSL_SERVER_HELLO); + TEST_EQUAL(ret, 0); - /* - * Test set-up - */ + ret = mbedtls_ssl_flush_output(&(client_ep.ssl)); + TEST_EQUAL(ret, 0); - mbedtls_test_init_handshake_options(&client_options); - MD_OR_USE_PSA_INIT(); + ret = mbedtls_ssl_tls13_fetch_handshake_msg( + &(server_ep.ssl), MBEDTLS_SSL_HS_CLIENT_HELLO, + &buf, &buf_len); + TEST_EQUAL(ret, 0); + server_ep.ssl.keep_current_message = 1; - client_options.pk_alg = MBEDTLS_PK_ECDSA; - ret = mbedtls_test_ssl_endpoint_init(&client_ep, MBEDTLS_SSL_IS_CLIENT, - &client_options); - TEST_EQUAL(ret, 0); + ret = tls13_duplicate_last_extension( + &(server_ep.ssl), MBEDTLS_SSL_HS_CLIENT_HELLO, buf, buf_len); + TEST_EQUAL(ret, 0); - mbedtls_test_init_handshake_options(&server_options); - server_options.pk_alg = MBEDTLS_PK_ECDSA; - ret = mbedtls_test_ssl_endpoint_init(&server_ep, MBEDTLS_SSL_IS_SERVER, - &server_options); - TEST_EQUAL(ret, 0); + ret = mbedtls_ssl_handshake_step(&(server_ep.ssl)); + TEST_EQUAL(ret, MBEDTLS_ERR_SSL_ILLEGAL_PARAMETER); + break; - ret = mbedtls_test_mock_socket_connect(&(client_ep.socket), - &(server_ep.socket), 1024); - TEST_EQUAL(ret, 0); - - while (1) { - mbedtls_test_set_step(++step); - - ret = mbedtls_test_move_handshake_to_state( - &(server_ep.ssl), &(client_ep.ssl), - MBEDTLS_SSL_CLIENT_HELLO); - TEST_EQUAL(ret, 0); - - ret = mbedtls_ssl_flush_output(&(server_ep.ssl)); - TEST_EQUAL(ret, 0); - - ret = mbedtls_ssl_tls13_fetch_handshake_msg(&(server_ep.ssl), - MBEDTLS_SSL_HS_CLIENT_HELLO, - &buf, &buf_len); - TEST_EQUAL(ret, 0); - server_ep.ssl.keep_current_message = 1; - - ret = tls13_duplicate_last_extension( - &(server_ep.ssl), MBEDTLS_SSL_HS_CLIENT_HELLO, buf, buf_len); - TEST_EQUAL(ret, 0); - - ret = mbedtls_ssl_handshake_step(&(server_ep.ssl)); - TEST_EQUAL(ret, MBEDTLS_ERR_SSL_ILLEGAL_PARAMETER); - break; + default: + TEST_FAIL("invalid endpoint"); } exit: