Add test forcing caTable cleanup during active connections
This commit is contained in:
parent
4caef93346
commit
aa19d8221e
76
tests/api.c
76
tests/api.c
@ -70017,9 +70017,9 @@ static word32 test_tls_cert_store_unchanged_HashCaTable(Signer** caTable)
|
|||||||
}
|
}
|
||||||
|
|
||||||
static word32 test_tls_cert_store_unchanged_before_hashes[2];
|
static word32 test_tls_cert_store_unchanged_before_hashes[2];
|
||||||
static size_t test_tls_cert_store_unchanged_before_hashes_idx = 0;
|
static size_t test_tls_cert_store_unchanged_before_hashes_idx;
|
||||||
static word32 test_tls_cert_store_unchanged_after_hashes[2];
|
static word32 test_tls_cert_store_unchanged_after_hashes[2];
|
||||||
static size_t test_tls_cert_store_unchanged_after_hashes_idx = 0;
|
static size_t test_tls_cert_store_unchanged_after_hashes_idx;
|
||||||
|
|
||||||
static int test_tls_cert_store_unchanged_ctx_ready(WOLFSSL_CTX* ctx)
|
static int test_tls_cert_store_unchanged_ctx_ready(WOLFSSL_CTX* ctx)
|
||||||
{
|
{
|
||||||
@ -70046,19 +70046,25 @@ static int test_tls_cert_store_unchanged_ctx_cleanup(WOLFSSL_CTX* ctx)
|
|||||||
return EXPECT_RESULT();
|
return EXPECT_RESULT();
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
|
||||||
static int test_tls_cert_store_unchanged_on_hs(WOLFSSL_CTX **ctx, WOLFSSL **ssl)
|
static int test_tls_cert_store_unchanged_on_hs(WOLFSSL_CTX **ctx, WOLFSSL **ssl)
|
||||||
{
|
{
|
||||||
EXPECT_DECLS;
|
EXPECT_DECLS;
|
||||||
|
WOLFSSL_CERT_MANAGER* cm;
|
||||||
|
|
||||||
(void)ssl;
|
(void)ssl;
|
||||||
|
/* WARNING: this approach bypasses the reference counter check in
|
||||||
|
* wolfSSL_CTX_UnloadIntermediateCerts. It is not recommended as it may
|
||||||
|
* cause unexpected behaviour when other active connections try accessing
|
||||||
|
* the caTable. */
|
||||||
|
ExpectNotNull(cm = wolfSSL_CTX_GetCertManager(*ctx));
|
||||||
|
ExpectIntEQ(wolfSSL_CertManagerUnloadIntermediateCerts(cm),
|
||||||
|
WOLFSSL_SUCCESS);
|
||||||
ExpectIntNE(test_tls_cert_store_unchanged_after_hashes
|
ExpectIntNE(test_tls_cert_store_unchanged_after_hashes
|
||||||
[test_tls_cert_store_unchanged_after_hashes_idx++] =
|
[test_tls_cert_store_unchanged_after_hashes_idx++] =
|
||||||
test_tls_cert_store_unchanged_HashCaTable((*ctx)->cm->caTable), 0);
|
test_tls_cert_store_unchanged_HashCaTable((*ctx)->cm->caTable), 0);
|
||||||
|
|
||||||
return EXPECT_RESULT();
|
return EXPECT_RESULT();
|
||||||
}
|
}
|
||||||
*/
|
|
||||||
|
|
||||||
static int test_tls_cert_store_unchanged_ssl_ready(WOLFSSL* ssl)
|
static int test_tls_cert_store_unchanged_ssl_ready(WOLFSSL* ssl)
|
||||||
{
|
{
|
||||||
@ -70077,41 +70083,53 @@ static int test_tls_cert_store_unchanged(void)
|
|||||||
#if !defined(NO_CERTS) && defined(HAVE_SSL_MEMIO_TESTS_DEPENDENCIES)
|
#if !defined(NO_CERTS) && defined(HAVE_SSL_MEMIO_TESTS_DEPENDENCIES)
|
||||||
test_ssl_cbf client_cbf;
|
test_ssl_cbf client_cbf;
|
||||||
test_ssl_cbf server_cbf;
|
test_ssl_cbf server_cbf;
|
||||||
|
int i;
|
||||||
|
|
||||||
XMEMSET(&client_cbf, 0, sizeof(client_cbf));
|
for (i = 0; i < 2; i++) {
|
||||||
XMEMSET(&server_cbf, 0, sizeof(server_cbf));
|
XMEMSET(&client_cbf, 0, sizeof(client_cbf));
|
||||||
|
XMEMSET(&server_cbf, 0, sizeof(server_cbf));
|
||||||
|
|
||||||
XMEMSET(test_tls_cert_store_unchanged_before_hashes, 0,
|
test_tls_cert_store_unchanged_before_hashes_idx = 0;
|
||||||
sizeof(test_tls_cert_store_unchanged_before_hashes));
|
XMEMSET(test_tls_cert_store_unchanged_before_hashes, 0,
|
||||||
XMEMSET(test_tls_cert_store_unchanged_after_hashes, 0,
|
sizeof(test_tls_cert_store_unchanged_before_hashes));
|
||||||
sizeof(test_tls_cert_store_unchanged_after_hashes));
|
test_tls_cert_store_unchanged_after_hashes_idx = 0;
|
||||||
|
XMEMSET(test_tls_cert_store_unchanged_after_hashes, 0,
|
||||||
|
sizeof(test_tls_cert_store_unchanged_after_hashes));
|
||||||
|
|
||||||
client_cbf.ctx_ready = test_tls_cert_store_unchanged_ctx_ready;
|
client_cbf.ctx_ready = test_tls_cert_store_unchanged_ctx_ready;
|
||||||
server_cbf.ctx_ready = test_tls_cert_store_unchanged_ctx_ready;
|
server_cbf.ctx_ready = test_tls_cert_store_unchanged_ctx_ready;
|
||||||
|
|
||||||
client_cbf.ssl_ready = test_tls_cert_store_unchanged_ssl_ready;
|
client_cbf.ssl_ready = test_tls_cert_store_unchanged_ssl_ready;
|
||||||
server_cbf.ssl_ready = test_tls_cert_store_unchanged_ssl_ready;
|
server_cbf.ssl_ready = test_tls_cert_store_unchanged_ssl_ready;
|
||||||
|
|
||||||
/* TODO add API to allow clearing/not storing certs while connections are
|
switch (i) {
|
||||||
* still active.
|
case 0:
|
||||||
client_cbf.on_handshake = test_tls_cert_store_unchanged_on_hs;
|
client_cbf.on_ctx_cleanup =
|
||||||
server_cbf.on_handshake = test_tls_cert_store_unchanged_on_hs;
|
test_tls_cert_store_unchanged_ctx_cleanup;
|
||||||
*/
|
server_cbf.on_ctx_cleanup =
|
||||||
|
test_tls_cert_store_unchanged_ctx_cleanup;
|
||||||
|
break;
|
||||||
|
case 1:
|
||||||
|
client_cbf.on_handshake = test_tls_cert_store_unchanged_on_hs;
|
||||||
|
server_cbf.on_handshake = test_tls_cert_store_unchanged_on_hs;
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
Fail(("Should not enter here"), ("Entered here"));
|
||||||
|
}
|
||||||
|
|
||||||
client_cbf.on_ctx_cleanup = test_tls_cert_store_unchanged_ctx_cleanup;
|
|
||||||
server_cbf.on_ctx_cleanup = test_tls_cert_store_unchanged_ctx_cleanup;
|
|
||||||
|
|
||||||
client_cbf.certPemFile = "certs/intermediate/client-chain.pem";
|
client_cbf.certPemFile = "certs/intermediate/client-chain.pem";
|
||||||
server_cbf.certPemFile = "certs/intermediate/server-chain.pem";
|
server_cbf.certPemFile = "certs/intermediate/server-chain.pem";
|
||||||
|
|
||||||
server_cbf.caPemFile = caCertFile;
|
server_cbf.caPemFile = caCertFile;
|
||||||
|
|
||||||
ExpectIntEQ(test_wolfSSL_client_server_nofail_memio(&client_cbf,
|
ExpectIntEQ(test_wolfSSL_client_server_nofail_memio(&client_cbf,
|
||||||
&server_cbf, NULL), TEST_SUCCESS);
|
&server_cbf, NULL), TEST_SUCCESS);
|
||||||
|
|
||||||
ExpectBufEQ(test_tls_cert_store_unchanged_before_hashes,
|
ExpectBufEQ(test_tls_cert_store_unchanged_before_hashes,
|
||||||
test_tls_cert_store_unchanged_after_hashes,
|
test_tls_cert_store_unchanged_after_hashes,
|
||||||
sizeof(test_tls_cert_store_unchanged_after_hashes));
|
sizeof(test_tls_cert_store_unchanged_after_hashes));
|
||||||
|
}
|
||||||
#endif
|
#endif
|
||||||
return EXPECT_RESULT();
|
return EXPECT_RESULT();
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user