@@ -70017,9 +70017,9 @@ static word32 test_tls_cert_store_unchanged_HashCaTable(Signer** caTable)
7001770017}
7001870018
7001970019static word32 test_tls_cert_store_unchanged_before_hashes[2];
70020- static size_t test_tls_cert_store_unchanged_before_hashes_idx = 0 ;
70020+ static size_t test_tls_cert_store_unchanged_before_hashes_idx;
7002170021static word32 test_tls_cert_store_unchanged_after_hashes[2];
70022- static size_t test_tls_cert_store_unchanged_after_hashes_idx = 0 ;
70022+ static size_t test_tls_cert_store_unchanged_after_hashes_idx;
7002370023
7002470024static int test_tls_cert_store_unchanged_ctx_ready(WOLFSSL_CTX* ctx)
7002570025{
@@ -70046,19 +70046,25 @@ static int test_tls_cert_store_unchanged_ctx_cleanup(WOLFSSL_CTX* ctx)
7004670046 return EXPECT_RESULT();
7004770047}
7004870048
70049- /*
7005070049static int test_tls_cert_store_unchanged_on_hs(WOLFSSL_CTX **ctx, WOLFSSL **ssl)
7005170050{
7005270051 EXPECT_DECLS;
70052+ WOLFSSL_CERT_MANAGER* cm;
7005370053
7005470054 (void)ssl;
70055+ /* WARNING: this approach bypasses the reference counter check in
70056+ * wolfSSL_CTX_UnloadIntermediateCerts. It is not recommended as it may
70057+ * cause unexpected behaviour when other active connections try accessing
70058+ * the caTable. */
70059+ ExpectNotNull(cm = wolfSSL_CTX_GetCertManager(*ctx));
70060+ ExpectIntEQ(wolfSSL_CertManagerUnloadIntermediateCerts(cm),
70061+ WOLFSSL_SUCCESS);
7005570062 ExpectIntNE(test_tls_cert_store_unchanged_after_hashes
7005670063 [test_tls_cert_store_unchanged_after_hashes_idx++] =
7005770064 test_tls_cert_store_unchanged_HashCaTable((*ctx)->cm->caTable), 0);
7005870065
7005970066 return EXPECT_RESULT();
7006070067}
70061- */
7006270068
7006370069static int test_tls_cert_store_unchanged_ssl_ready(WOLFSSL* ssl)
7006470070{
@@ -70077,41 +70083,53 @@ static int test_tls_cert_store_unchanged(void)
7007770083#if !defined(NO_CERTS) && defined(HAVE_SSL_MEMIO_TESTS_DEPENDENCIES)
7007870084 test_ssl_cbf client_cbf;
7007970085 test_ssl_cbf server_cbf;
70086+ int i;
7008070087
70081- XMEMSET(&client_cbf, 0, sizeof(client_cbf));
70082- XMEMSET(&server_cbf, 0, sizeof(server_cbf));
70088+ for (i = 0; i < 2; i++) {
70089+ XMEMSET(&client_cbf, 0, sizeof(client_cbf));
70090+ XMEMSET(&server_cbf, 0, sizeof(server_cbf));
7008370091
70084- XMEMSET(test_tls_cert_store_unchanged_before_hashes, 0,
70085- sizeof(test_tls_cert_store_unchanged_before_hashes));
70086- XMEMSET(test_tls_cert_store_unchanged_after_hashes, 0,
70087- sizeof(test_tls_cert_store_unchanged_after_hashes));
70092+ test_tls_cert_store_unchanged_before_hashes_idx = 0;
70093+ XMEMSET(test_tls_cert_store_unchanged_before_hashes, 0,
70094+ sizeof(test_tls_cert_store_unchanged_before_hashes));
70095+ test_tls_cert_store_unchanged_after_hashes_idx = 0;
70096+ XMEMSET(test_tls_cert_store_unchanged_after_hashes, 0,
70097+ sizeof(test_tls_cert_store_unchanged_after_hashes));
7008870098
70089- client_cbf.ctx_ready = test_tls_cert_store_unchanged_ctx_ready;
70090- server_cbf.ctx_ready = test_tls_cert_store_unchanged_ctx_ready;
70099+ client_cbf.ctx_ready = test_tls_cert_store_unchanged_ctx_ready;
70100+ server_cbf.ctx_ready = test_tls_cert_store_unchanged_ctx_ready;
7009170101
70092- client_cbf.ssl_ready = test_tls_cert_store_unchanged_ssl_ready;
70093- server_cbf.ssl_ready = test_tls_cert_store_unchanged_ssl_ready;
70102+ client_cbf.ssl_ready = test_tls_cert_store_unchanged_ssl_ready;
70103+ server_cbf.ssl_ready = test_tls_cert_store_unchanged_ssl_ready;
7009470104
70095- /* TODO add API to allow clearing/not storing certs while connections are
70096- * still active.
70097- client_cbf.on_handshake = test_tls_cert_store_unchanged_on_hs;
70098- server_cbf.on_handshake = test_tls_cert_store_unchanged_on_hs;
70099- */
70105+ switch (i) {
70106+ case 0:
70107+ client_cbf.on_ctx_cleanup =
70108+ test_tls_cert_store_unchanged_ctx_cleanup;
70109+ server_cbf.on_ctx_cleanup =
70110+ test_tls_cert_store_unchanged_ctx_cleanup;
70111+ break;
70112+ case 1:
70113+ client_cbf.on_handshake = test_tls_cert_store_unchanged_on_hs;
70114+ server_cbf.on_handshake = test_tls_cert_store_unchanged_on_hs;
70115+ break;
70116+ default:
70117+ Fail(("Should not enter here"), ("Entered here"));
70118+ }
7010070119
70101- client_cbf.on_ctx_cleanup = test_tls_cert_store_unchanged_ctx_cleanup;
70102- server_cbf.on_ctx_cleanup = test_tls_cert_store_unchanged_ctx_cleanup;
7010370120
70104- client_cbf.certPemFile = "certs/intermediate/client-chain.pem";
70105- server_cbf.certPemFile = "certs/intermediate/server-chain.pem";
70121+ client_cbf.certPemFile = "certs/intermediate/client-chain.pem";
70122+ server_cbf.certPemFile = "certs/intermediate/server-chain.pem";
7010670123
70107- server_cbf.caPemFile = caCertFile;
70124+ server_cbf.caPemFile = caCertFile;
7010870125
70109- ExpectIntEQ(test_wolfSSL_client_server_nofail_memio(&client_cbf,
70110- &server_cbf, NULL), TEST_SUCCESS);
70126+ ExpectIntEQ(test_wolfSSL_client_server_nofail_memio(&client_cbf,
70127+ &server_cbf, NULL), TEST_SUCCESS);
7011170128
70112- ExpectBufEQ(test_tls_cert_store_unchanged_before_hashes,
70113- test_tls_cert_store_unchanged_after_hashes,
70114- sizeof(test_tls_cert_store_unchanged_after_hashes));
70129+ ExpectBufEQ(test_tls_cert_store_unchanged_before_hashes,
70130+ test_tls_cert_store_unchanged_after_hashes,
70131+ sizeof(test_tls_cert_store_unchanged_after_hashes));
70132+ }
7011570133#endif
7011670134 return EXPECT_RESULT();
7011770135}
0 commit comments