@@ -65849,6 +65849,74 @@ static int test_dtls13_bad_epoch_ch(void)
6584965849#endif
6585065850
6585165851
65852+ #if defined(HAVE_NULL_CIPHER) && defined(HAVE_IO_TESTS_DEPENDENCIES) && \
65853+ defined(WOLFSSL_DTLS13)
65854+ static byte* test_find_string(const char *string,
65855+ byte *buf, int buf_size)
65856+ {
65857+ int string_size, i;
65858+
65859+ string_size = XSTRLEN(string);
65860+ for (i = 0; i < buf_size - string_size - 1; i++) {
65861+ if (XSTRCMP((char*)&buf[i], string) == 0)
65862+ return &buf[i];
65863+ }
65864+ return NULL;
65865+ }
65866+
65867+ static int test_wolfSSL_dtls13_null_cipher(void)
65868+ {
65869+ WOLFSSL_CTX *ctx_c = NULL, *ctx_s = NULL;
65870+ WOLFSSL *ssl_c = NULL, *ssl_s = NULL;
65871+ struct test_memio_ctx test_ctx;
65872+ const char *test_str = "test";
65873+ int ret, test_str_size;
65874+ byte buf[255], *ptr;
65875+
65876+ XMEMSET(&test_ctx, 0, sizeof(test_ctx));
65877+ test_ctx.c_ciphers = test_ctx.s_ciphers = "TLS13-SHA256-SHA256";
65878+ ret = test_memio_setup(&test_ctx, &ctx_c, &ctx_s, &ssl_c, &ssl_s,
65879+ wolfDTLSv1_3_client_method, wolfDTLSv1_3_server_method);
65880+ if (ret != 0)
65881+ return TEST_FAIL;
65882+ ret = test_memio_do_handshake(ssl_c, ssl_s, 10, NULL);
65883+ if (ret != 0)
65884+ return TEST_FAIL;
65885+ test_str_size = XSTRLEN("test") + 1;
65886+ ret = wolfSSL_write(ssl_c, test_str, test_str_size);
65887+ if (ret != test_str_size)
65888+ return TEST_FAIL;
65889+ ret = wolfSSL_read(ssl_s, buf, sizeof(buf));
65890+ if (ret != test_str_size || XSTRCMP((char*)buf, test_str) != 0)
65891+ return TEST_FAIL;
65892+
65893+ ret = wolfSSL_write(ssl_c, test_str, test_str_size);
65894+ if (ret != test_str_size)
65895+ return TEST_FAIL;
65896+
65897+ /* check that the packet was sent cleartext */
65898+ ptr = test_find_string(test_str, test_ctx.s_buff, test_ctx.s_len);
65899+ if (ptr == NULL)
65900+ return TEST_FAIL;
65901+ /* modify the message */
65902+ *ptr = 'H';
65903+ /* bad messages should be ignored in DTLS */
65904+ ret = wolfSSL_read(ssl_s, buf, sizeof(buf));
65905+ if (ret != -1 || ssl_s->error != WANT_READ)
65906+ return TEST_FAIL;
65907+
65908+ wolfSSL_free(ssl_c);
65909+ wolfSSL_free(ssl_s);
65910+ wolfSSL_CTX_free(ctx_c);
65911+ wolfSSL_CTX_free(ctx_s);
65912+ return TEST_SUCCESS;
65913+ }
65914+ #else
65915+ static int test_wolfSSL_dtls13_null_cipher(void)
65916+ {
65917+ return TEST_SKIPPED;
65918+ }
65919+ #endif
6585265920/*----------------------------------------------------------------------------*
6585365921 | Main
6585465922 *----------------------------------------------------------------------------*/
@@ -66886,6 +66954,7 @@ TEST_CASE testCases[] = {
6688666954 TEST_DECL(test_harden_no_secure_renegotiation),
6688766955 TEST_DECL(test_override_alt_cert_chain),
6688866956 TEST_DECL(test_dtls13_bad_epoch_ch),
66957+ TEST_DECL(test_wolfSSL_dtls13_null_cipher),
6688966958 /* If at some point a stub get implemented this test should fail indicating
6689066959 * a need to implement a new test case
6689166960 */
0 commit comments