@@ -15288,6 +15288,8 @@ static int test_wolfSSL_check_domain_basic_client_ssl(WOLFSSL* ssl)
1528815288
1528915289 return EXPECT_RESULT();
1529015290}
15291+ /* Verify wolfSSL_check_domain_name() controls DNS-name matching during
15292+ * handshake with expected fail/pass outcomes. */
1529115293static int test_wolfSSL_check_domain_basic(void)
1529215294{
1529315295 EXPECT_DECLS;
@@ -15320,6 +15322,102 @@ static int test_wolfSSL_check_domain_basic(void)
1532015322}
1532115323#endif /* HAVE_SSL_MEMIO_TESTS_DEPENDENCIES */
1532215324
15325+ #if defined(OPENSSL_EXTRA) && defined(HAVE_SSL_MEMIO_TESTS_DEPENDENCIES) && \
15326+ (defined(WOLFSSL_IP_ALT_NAME) || defined(OPENSSL_ALL)) && \
15327+ !defined(OPENSSL_COMPATIBLE_DEFAULTS) && !defined(NO_SHA256)
15328+ static const char* ipaddr = NULL;
15329+ static int test_wolfSSL_check_ip_param_client_ssl(WOLFSSL* ssl)
15330+ {
15331+ EXPECT_DECLS;
15332+ X509_VERIFY_PARAM* param = NULL;
15333+
15334+ ExpectNotNull(param = SSL_get0_param(ssl));
15335+ ExpectIntEQ(X509_VERIFY_PARAM_set1_ip_asc(param, ipaddr), WOLFSSL_SUCCESS);
15336+
15337+ return EXPECT_RESULT();
15338+ }
15339+
15340+ /* Verify the OpenSSL-compat verify-param path:
15341+ * SSL_get0_param() + X509_VERIFY_PARAM_set1_ip_asc() controls IP SAN matching
15342+ * during handshake. */
15343+ static int test_wolfSSL_check_ip_param_basic(void)
15344+ {
15345+ EXPECT_DECLS;
15346+ test_ssl_cbf func_cb_client;
15347+ test_ssl_cbf func_cb_server;
15348+
15349+ XMEMSET(&func_cb_client, 0, sizeof(func_cb_client));
15350+ XMEMSET(&func_cb_server, 0, sizeof(func_cb_server));
15351+
15352+ func_cb_client.ssl_ready = &test_wolfSSL_check_ip_param_client_ssl;
15353+
15354+ ipaddr = "127.0.0.2";
15355+ /* Expect to fail: cert SAN IP is 127.0.0.1 */
15356+ ExpectIntEQ(test_wolfSSL_client_server_nofail_memio(&func_cb_client,
15357+ &func_cb_server, NULL), -1001);
15358+
15359+ ipaddr = "127.0.0.1";
15360+ /* Expect to succeed */
15361+ ExpectIntEQ(test_wolfSSL_client_server_nofail_memio(&func_cb_client,
15362+ &func_cb_server, NULL), TEST_SUCCESS);
15363+
15364+ return EXPECT_RESULT();
15365+ }
15366+ #else
15367+ static int test_wolfSSL_check_ip_param_basic(void)
15368+ {
15369+ EXPECT_DECLS;
15370+ return EXPECT_RESULT();
15371+ }
15372+ #endif
15373+
15374+ #if defined(HAVE_SSL_MEMIO_TESTS_DEPENDENCIES) && \
15375+ !defined(OPENSSL_COMPATIBLE_DEFAULTS) && !defined(NO_SHA256) && \
15376+ defined(WOLFSSL_IP_ALT_NAME)
15377+ static const char* ipaddr_api = NULL;
15378+ static int test_wolfSSL_check_ip_address_basic_client_ssl(WOLFSSL* ssl)
15379+ {
15380+ EXPECT_DECLS;
15381+
15382+ ExpectIntEQ(wolfSSL_check_ip_address(ssl, ipaddr_api), WOLFSSL_SUCCESS);
15383+
15384+ return EXPECT_RESULT();
15385+ }
15386+
15387+ /* Verify wolfSSL convenience API path:
15388+ * wolfSSL_check_ip_address() enables IP SAN matching during handshake,
15389+ * including the non-OPENSSL_EXTRA storage/verification flow. */
15390+ static int test_wolfSSL_check_ip_address_basic(void)
15391+ {
15392+ EXPECT_DECLS;
15393+ test_ssl_cbf func_cb_client;
15394+ test_ssl_cbf func_cb_server;
15395+
15396+ XMEMSET(&func_cb_client, 0, sizeof(func_cb_client));
15397+ XMEMSET(&func_cb_server, 0, sizeof(func_cb_server));
15398+
15399+ func_cb_client.ssl_ready = &test_wolfSSL_check_ip_address_basic_client_ssl;
15400+
15401+ ipaddr_api = "127.0.0.2";
15402+ /* Expect to fail: cert SAN IP is 127.0.0.1 */
15403+ ExpectIntEQ(test_wolfSSL_client_server_nofail_memio(&func_cb_client,
15404+ &func_cb_server, NULL), -1001);
15405+
15406+ ipaddr_api = "127.0.0.1";
15407+ /* Expect to succeed */
15408+ ExpectIntEQ(test_wolfSSL_client_server_nofail_memio(&func_cb_client,
15409+ &func_cb_server, NULL), TEST_SUCCESS);
15410+
15411+ return EXPECT_RESULT();
15412+ }
15413+ #else
15414+ static int test_wolfSSL_check_ip_address_basic(void)
15415+ {
15416+ EXPECT_DECLS;
15417+ return EXPECT_RESULT();
15418+ }
15419+ #endif
15420+
1532315421static int test_wolfSSL_BUF(void)
1532415422{
1532515423 EXPECT_DECLS;
@@ -33192,6 +33290,8 @@ TEST_CASE testCases[] = {
3319233290
3319333291 TEST_DECL(test_wolfSSL_check_domain),
3319433292 TEST_DECL(test_wolfSSL_check_domain_basic),
33293+ TEST_DECL(test_wolfSSL_check_ip_param_basic),
33294+ TEST_DECL(test_wolfSSL_check_ip_address_basic),
3319533295 TEST_DECL(test_wolfSSL_cert_cb),
3319633296 TEST_DECL(test_wolfSSL_cert_cb_dyn_ciphers),
3319733297 TEST_DECL(test_wolfSSL_ciphersuite_auth),
0 commit comments