@@ -18828,6 +18828,70 @@ defined(OPENSSL_EXTRA) && defined(WOLFSSL_DH_EXTRA)
1882818828 return EXPECT_RESULT();
1882918829}
1883018830
18831+ static int test_wolfSSL_i2d_PUBKEY_bio(void)
18832+ {
18833+ EXPECT_DECLS;
18834+ #if defined(OPENSSL_EXTRA) && !defined(NO_BIO)
18835+ BIO* bio = NULL;
18836+ EVP_PKEY* pkey = NULL;
18837+ EVP_PKEY* pkey2 = NULL;
18838+
18839+ /* NULL parameter tests */
18840+ ExpectIntEQ(wolfSSL_i2d_PUBKEY_bio(NULL, NULL), WOLFSSL_FAILURE);
18841+
18842+ #if defined(USE_CERT_BUFFERS_2048) && !defined(NO_RSA)
18843+ {
18844+ const unsigned char* p = client_keypub_der_2048;
18845+ /* Load an RSA public key from DER buffer */
18846+ ExpectNotNull(pkey = d2i_PUBKEY(NULL, &p,
18847+ sizeof_client_keypub_der_2048));
18848+
18849+ /* Write it to BIO */
18850+ ExpectNotNull(bio = BIO_new(BIO_s_mem()));
18851+ ExpectIntEQ(i2d_PUBKEY_bio(bio, pkey), WOLFSSL_SUCCESS);
18852+
18853+ /* Read it back and verify round-trip */
18854+ ExpectNotNull(pkey2 = d2i_PUBKEY_bio(bio, NULL));
18855+
18856+ EVP_PKEY_free(pkey2);
18857+ pkey2 = NULL;
18858+ EVP_PKEY_free(pkey);
18859+ pkey = NULL;
18860+ BIO_free(bio);
18861+ bio = NULL;
18862+ }
18863+ #endif
18864+
18865+ #if defined(USE_CERT_BUFFERS_256) && defined(HAVE_ECC)
18866+ {
18867+ const unsigned char* p = ecc_clikeypub_der_256;
18868+ /* Load an ECC public key from DER buffer */
18869+ ExpectNotNull(pkey = d2i_PUBKEY(NULL, &p,
18870+ sizeof_ecc_clikeypub_der_256));
18871+
18872+ /* Write it to BIO */
18873+ ExpectNotNull(bio = BIO_new(BIO_s_mem()));
18874+ ExpectIntEQ(i2d_PUBKEY_bio(bio, pkey), WOLFSSL_SUCCESS);
18875+
18876+ /* Read it back and verify round-trip */
18877+ ExpectNotNull(pkey2 = d2i_PUBKEY_bio(bio, NULL));
18878+
18879+ EVP_PKEY_free(pkey2);
18880+ pkey2 = NULL;
18881+ EVP_PKEY_free(pkey);
18882+ pkey = NULL;
18883+ BIO_free(bio);
18884+ bio = NULL;
18885+ }
18886+ #endif
18887+
18888+ (void)pkey;
18889+ (void)pkey2;
18890+ (void)bio;
18891+ #endif
18892+ return EXPECT_RESULT();
18893+ }
18894+
1883118895#if (defined(OPENSSL_ALL) || defined(WOLFSSL_ASIO)) && !defined(NO_RSA) && \
1883218896 !defined(NO_TLS)
1883318897static int test_wolfSSL_d2i_PrivateKeys_bio(void)
@@ -27831,12 +27895,39 @@ static int test_wolfSSL_OpenSSL_version(void)
2783127895 const char* ver;
2783227896
2783327897#if defined(OPENSSL_VERSION_NUMBER) && OPENSSL_VERSION_NUMBER >= 0x10100000L
27834- ExpectNotNull(ver = OpenSSL_version(0));
27898+ ExpectNotNull(ver = OpenSSL_version(OPENSSL_VERSION));
27899+ ExpectIntEQ(XMEMCMP(ver, "wolfSSL " LIBWOLFSSL_VERSION_STRING,
27900+ XSTRLEN("wolfSSL " LIBWOLFSSL_VERSION_STRING)), 0);
27901+
27902+ /* Test OPENSSL_CFLAGS type */
27903+ ExpectNotNull(ver = OpenSSL_version(OPENSSL_CFLAGS));
27904+ ExpectNotNull(XSTRSTR(ver, "compiler:"));
27905+
27906+ /* Test OPENSSL_BUILT_ON type */
27907+ ExpectNotNull(ver = OpenSSL_version(OPENSSL_BUILT_ON));
27908+ ExpectNotNull(XSTRSTR(ver, "built on:"));
27909+
27910+ /* Test OPENSSL_PLATFORM type */
27911+ ExpectNotNull(ver = OpenSSL_version(OPENSSL_PLATFORM));
27912+ ExpectNotNull(XSTRSTR(ver, "platform:"));
27913+
27914+ /* Test OPENSSL_DIR type */
27915+ ExpectNotNull(ver = OpenSSL_version(OPENSSL_DIR));
27916+ ExpectNotNull(XSTRSTR(ver, "OPENSSLDIR:"));
27917+
27918+ /* Test OPENSSL_ENGINES_DIR type */
27919+ ExpectNotNull(ver = OpenSSL_version(OPENSSL_ENGINES_DIR));
27920+ ExpectNotNull(XSTRSTR(ver, "ENGINESDIR:"));
27921+
27922+ /* Test unknown type falls back to version string */
27923+ ExpectNotNull(ver = OpenSSL_version(99));
27924+ ExpectIntEQ(XMEMCMP(ver, "wolfSSL " LIBWOLFSSL_VERSION_STRING,
27925+ XSTRLEN("wolfSSL " LIBWOLFSSL_VERSION_STRING)), 0);
2783527926#else
2783627927 ExpectNotNull(ver = OpenSSL_version());
27837- #endif
2783827928 ExpectIntEQ(XMEMCMP(ver, "wolfSSL " LIBWOLFSSL_VERSION_STRING,
2783927929 XSTRLEN("wolfSSL " LIBWOLFSSL_VERSION_STRING)), 0);
27930+ #endif
2784027931#endif
2784127932 return EXPECT_RESULT();
2784227933}
@@ -37088,6 +37179,7 @@ TEST_CASE testCases[] = {
3708837179 TEST_DECL(test_wolfSSL_d2i_and_i2d_PublicKey_ecc),
3708937180#ifndef NO_BIO
3709037181 TEST_DECL(test_wolfSSL_d2i_PUBKEY),
37182+ TEST_DECL(test_wolfSSL_i2d_PUBKEY_bio),
3709137183#endif
3709237184 TEST_DECL(test_wolfSSL_d2i_and_i2d_DSAparams),
3709337185 TEST_DECL(test_wolfSSL_i2d_PrivateKey),
0 commit comments