Skip to content

Commit 740a1c7

Browse files
committed
tests
1 parent 435d27c commit 740a1c7

1 file changed

Lines changed: 78 additions & 0 deletions

File tree

tests/api.c

Lines changed: 78 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2303,6 +2303,83 @@ static int test_wolfSSL_set_cipher_list_tls13_with_version(void)
23032303
return EXPECT_RESULT();
23042304
}
23052305

2306+
static int test_wolfSSL_set_alpn_protos_default_fails(void)
2307+
{
2308+
EXPECT_DECLS;
2309+
#if defined(HAVE_ALPN) && defined(OPENSSL_EXTRA) && !defined(NO_BIO) && \
2310+
!defined(NO_WOLFSSL_CLIENT)
2311+
{
2312+
WOLFSSL_CTX* ctx = NULL;
2313+
WOLFSSL* ssl = NULL;
2314+
unsigned char p[] = { 6, 's', 'p', 'd', 'y', '/', '3' };
2315+
TLSX* ext = NULL;
2316+
ALPN* alpn = NULL;
2317+
2318+
ExpectNotNull(ctx = wolfSSL_CTX_new(wolfSSLv23_client_method()));
2319+
ExpectNotNull(ssl = wolfSSL_new(ctx));
2320+
#ifdef WOLFSSL_ERROR_CODE_OPENSSL
2321+
ExpectIntEQ(wolfSSL_set_alpn_protos(ssl, p, sizeof(p)), 0);
2322+
#else
2323+
ExpectIntEQ(wolfSSL_set_alpn_protos(ssl, p, sizeof(p)),
2324+
WOLFSSL_SUCCESS);
2325+
#endif
2326+
if (ssl != NULL) {
2327+
ext = TLSX_Find(ssl->extensions,
2328+
TLSX_APPLICATION_LAYER_PROTOCOL);
2329+
ExpectNotNull(ext);
2330+
if (ext != NULL) {
2331+
alpn = (ALPN*)ext->data;
2332+
ExpectNotNull(alpn);
2333+
if (alpn != NULL) {
2334+
ExpectTrue((alpn->options
2335+
& WOLFSSL_ALPN_FAILED_ON_MISMATCH) != 0);
2336+
ExpectIntEQ(alpn->options
2337+
& WOLFSSL_ALPN_CONTINUE_ON_MISMATCH, 0);
2338+
}
2339+
}
2340+
}
2341+
wolfSSL_free(ssl);
2342+
wolfSSL_CTX_free(ctx);
2343+
}
2344+
#if !defined(NO_WOLFSSL_SERVER) && !defined(WOLFSSL_NO_TLS12) && \
2345+
!defined(SINGLE_THREADED) && defined(HAVE_MANUAL_MEMIO_TESTS_DEPENDENCIES)
2346+
{
2347+
struct test_memio_ctx test_ctx;
2348+
WOLFSSL_CTX *ctx_c = NULL, *ctx_s = NULL;
2349+
WOLFSSL *ssl_c = NULL, *ssl_s = NULL;
2350+
unsigned char client_protos[] = { 6, 's', 'p', 'd', 'y', '/', '3' };
2351+
const char* server_protos = "http/2";
2352+
WOLFSSL_ALERT_HISTORY h;
2353+
2354+
XMEMSET(&test_ctx, 0, sizeof(test_ctx));
2355+
ExpectIntEQ(test_memio_setup(&test_ctx, &ctx_c, &ctx_s, &ssl_c, &ssl_s,
2356+
wolfTLSv1_2_client_method, wolfTLSv1_2_server_method), 0);
2357+
2358+
#ifdef WOLFSSL_ERROR_CODE_OPENSSL
2359+
ExpectIntEQ(wolfSSL_set_alpn_protos(ssl_c, client_protos,
2360+
sizeof(client_protos)), 0);
2361+
#else
2362+
ExpectIntEQ(wolfSSL_set_alpn_protos(ssl_c, client_protos,
2363+
sizeof(client_protos)), WOLFSSL_SUCCESS);
2364+
#endif
2365+
ExpectIntEQ(wolfSSL_UseALPN(ssl_s, (char*)server_protos,
2366+
(word32)XSTRLEN(server_protos),
2367+
WOLFSSL_ALPN_FAILED_ON_MISMATCH), WOLFSSL_SUCCESS);
2368+
2369+
ExpectIntNE(test_memio_do_handshake(ssl_c, ssl_s, 10, NULL), 0);
2370+
ExpectIntEQ(wolfSSL_get_alert_history(ssl_s, &h), WOLFSSL_SUCCESS);
2371+
ExpectIntEQ(h.last_tx.code, no_application_protocol);
2372+
ExpectIntEQ(h.last_tx.level, alert_fatal);
2373+
2374+
wolfSSL_free(ssl_c);
2375+
wolfSSL_free(ssl_s);
2376+
wolfSSL_CTX_free(ctx_c);
2377+
wolfSSL_CTX_free(ctx_s);
2378+
}
2379+
#endif
2380+
#endif
2381+
return EXPECT_RESULT();
2382+
}
23062383

23072384
static int test_wolfSSL_CTX_use_certificate(void)
23082385
{
@@ -39566,6 +39643,7 @@ TEST_CASE testCases[] = {
3956639643
TEST_DECL(test_wolfSSL_set_cipher_list_tls13_keeps_tls12),
3956739644
TEST_DECL(test_wolfSSL_set_cipher_list_tls12_with_version),
3956839645
TEST_DECL(test_wolfSSL_set_cipher_list_tls13_with_version),
39646+
TEST_DECL(test_wolfSSL_set_alpn_protos_default_fails),
3956939647
TEST_DECL(test_wolfSSL_CTX_use_certificate),
3957039648
TEST_DECL(test_wolfSSL_CTX_use_certificate_file),
3957139649
TEST_DECL(test_wolfSSL_CTX_use_certificate_buffer),

0 commit comments

Comments
 (0)