@@ -16004,6 +16004,8 @@ static int test_wolfSSL_check_domain_basic_client_ssl(WOLFSSL* ssl)
1600416004
1600516005 return EXPECT_RESULT();
1600616006}
16007+ /* Verify wolfSSL_check_domain_name() controls DNS-name matching during
16008+ * handshake with expected fail/pass outcomes. */
1600716009static int test_wolfSSL_check_domain_basic(void)
1600816010{
1600916011 EXPECT_DECLS;
@@ -16036,6 +16038,102 @@ static int test_wolfSSL_check_domain_basic(void)
1603616038}
1603716039#endif /* HAVE_SSL_MEMIO_TESTS_DEPENDENCIES */
1603816040
16041+ #if defined(OPENSSL_EXTRA) && defined(HAVE_SSL_MEMIO_TESTS_DEPENDENCIES) && \
16042+ (defined(WOLFSSL_IP_ALT_NAME) || defined(OPENSSL_ALL)) && \
16043+ !defined(OPENSSL_COMPATIBLE_DEFAULTS) && !defined(NO_SHA256)
16044+ static const char* ipaddr = NULL;
16045+ static int test_wolfSSL_check_ip_param_client_ssl(WOLFSSL* ssl)
16046+ {
16047+ EXPECT_DECLS;
16048+ X509_VERIFY_PARAM* param = NULL;
16049+
16050+ ExpectNotNull(param = SSL_get0_param(ssl));
16051+ ExpectIntEQ(X509_VERIFY_PARAM_set1_ip_asc(param, ipaddr), WOLFSSL_SUCCESS);
16052+
16053+ return EXPECT_RESULT();
16054+ }
16055+
16056+ /* Verify the OpenSSL-compat verify-param path:
16057+ * SSL_get0_param() + X509_VERIFY_PARAM_set1_ip_asc() controls IP SAN matching
16058+ * during handshake. */
16059+ static int test_wolfSSL_check_ip_param_basic(void)
16060+ {
16061+ EXPECT_DECLS;
16062+ test_ssl_cbf func_cb_client;
16063+ test_ssl_cbf func_cb_server;
16064+
16065+ XMEMSET(&func_cb_client, 0, sizeof(func_cb_client));
16066+ XMEMSET(&func_cb_server, 0, sizeof(func_cb_server));
16067+
16068+ func_cb_client.ssl_ready = &test_wolfSSL_check_ip_param_client_ssl;
16069+
16070+ ipaddr = "127.0.0.2";
16071+ /* Expect to fail: cert SAN IP is 127.0.0.1 */
16072+ ExpectIntEQ(test_wolfSSL_client_server_nofail_memio(&func_cb_client,
16073+ &func_cb_server, NULL), -1001);
16074+
16075+ ipaddr = "127.0.0.1";
16076+ /* Expect to succeed */
16077+ ExpectIntEQ(test_wolfSSL_client_server_nofail_memio(&func_cb_client,
16078+ &func_cb_server, NULL), TEST_SUCCESS);
16079+
16080+ return EXPECT_RESULT();
16081+ }
16082+ #else
16083+ static int test_wolfSSL_check_ip_param_basic(void)
16084+ {
16085+ EXPECT_DECLS;
16086+ return EXPECT_RESULT();
16087+ }
16088+ #endif
16089+
16090+ #if defined(HAVE_SSL_MEMIO_TESTS_DEPENDENCIES) && \
16091+ !defined(OPENSSL_COMPATIBLE_DEFAULTS) && !defined(NO_SHA256) && \
16092+ defined(WOLFSSL_IP_ALT_NAME)
16093+ static const char* ipaddr_api = NULL;
16094+ static int test_wolfSSL_check_ip_address_basic_client_ssl(WOLFSSL* ssl)
16095+ {
16096+ EXPECT_DECLS;
16097+
16098+ ExpectIntEQ(wolfSSL_check_ip_address(ssl, ipaddr_api), WOLFSSL_SUCCESS);
16099+
16100+ return EXPECT_RESULT();
16101+ }
16102+
16103+ /* Verify wolfSSL convenience API path:
16104+ * wolfSSL_check_ip_address() enables IP SAN matching during handshake,
16105+ * including the non-OPENSSL_EXTRA storage/verification flow. */
16106+ static int test_wolfSSL_check_ip_address_basic(void)
16107+ {
16108+ EXPECT_DECLS;
16109+ test_ssl_cbf func_cb_client;
16110+ test_ssl_cbf func_cb_server;
16111+
16112+ XMEMSET(&func_cb_client, 0, sizeof(func_cb_client));
16113+ XMEMSET(&func_cb_server, 0, sizeof(func_cb_server));
16114+
16115+ func_cb_client.ssl_ready = &test_wolfSSL_check_ip_address_basic_client_ssl;
16116+
16117+ ipaddr_api = "127.0.0.2";
16118+ /* Expect to fail: cert SAN IP is 127.0.0.1 */
16119+ ExpectIntEQ(test_wolfSSL_client_server_nofail_memio(&func_cb_client,
16120+ &func_cb_server, NULL), -1001);
16121+
16122+ ipaddr_api = "127.0.0.1";
16123+ /* Expect to succeed */
16124+ ExpectIntEQ(test_wolfSSL_client_server_nofail_memio(&func_cb_client,
16125+ &func_cb_server, NULL), TEST_SUCCESS);
16126+
16127+ return EXPECT_RESULT();
16128+ }
16129+ #else
16130+ static int test_wolfSSL_check_ip_address_basic(void)
16131+ {
16132+ EXPECT_DECLS;
16133+ return EXPECT_RESULT();
16134+ }
16135+ #endif
16136+
1603916137static int test_wolfSSL_BUF(void)
1604016138{
1604116139 EXPECT_DECLS;
@@ -34201,6 +34299,8 @@ TEST_CASE testCases[] = {
3420134299
3420234300 TEST_DECL(test_wolfSSL_check_domain),
3420334301 TEST_DECL(test_wolfSSL_check_domain_basic),
34302+ TEST_DECL(test_wolfSSL_check_ip_param_basic),
34303+ TEST_DECL(test_wolfSSL_check_ip_address_basic),
3420434304 TEST_DECL(test_wolfSSL_cert_cb),
3420534305 TEST_DECL(test_wolfSSL_cert_cb_dyn_ciphers),
3420634306 TEST_DECL(test_wolfSSL_ciphersuite_auth),
0 commit comments