@@ -18653,6 +18653,70 @@ defined(OPENSSL_EXTRA) && defined(WOLFSSL_DH_EXTRA)
1865318653 return EXPECT_RESULT();
1865418654}
1865518655
18656+ static int test_wolfSSL_i2d_PUBKEY_bio(void)
18657+ {
18658+ EXPECT_DECLS;
18659+ #if defined(OPENSSL_EXTRA) && !defined(NO_BIO)
18660+ BIO* bio = NULL;
18661+ EVP_PKEY* pkey = NULL;
18662+ EVP_PKEY* pkey2 = NULL;
18663+
18664+ /* NULL parameter tests */
18665+ ExpectIntEQ(wolfSSL_i2d_PUBKEY_bio(NULL, NULL), WOLFSSL_FAILURE);
18666+
18667+ #if defined(USE_CERT_BUFFERS_2048) && !defined(NO_RSA)
18668+ {
18669+ const unsigned char* p = client_keypub_der_2048;
18670+ /* Load an RSA public key from DER buffer */
18671+ ExpectNotNull(pkey = d2i_PUBKEY(NULL, &p,
18672+ sizeof_client_keypub_der_2048));
18673+
18674+ /* Write it to BIO */
18675+ ExpectNotNull(bio = BIO_new(BIO_s_mem()));
18676+ ExpectIntEQ(i2d_PUBKEY_bio(bio, pkey), WOLFSSL_SUCCESS);
18677+
18678+ /* Read it back and verify round-trip */
18679+ ExpectNotNull(pkey2 = d2i_PUBKEY_bio(bio, NULL));
18680+
18681+ EVP_PKEY_free(pkey2);
18682+ pkey2 = NULL;
18683+ EVP_PKEY_free(pkey);
18684+ pkey = NULL;
18685+ BIO_free(bio);
18686+ bio = NULL;
18687+ }
18688+ #endif
18689+
18690+ #if defined(USE_CERT_BUFFERS_256) && defined(HAVE_ECC)
18691+ {
18692+ const unsigned char* p = ecc_clikeypub_der_256;
18693+ /* Load an ECC public key from DER buffer */
18694+ ExpectNotNull(pkey = d2i_PUBKEY(NULL, &p,
18695+ sizeof_ecc_clikeypub_der_256));
18696+
18697+ /* Write it to BIO */
18698+ ExpectNotNull(bio = BIO_new(BIO_s_mem()));
18699+ ExpectIntEQ(i2d_PUBKEY_bio(bio, pkey), WOLFSSL_SUCCESS);
18700+
18701+ /* Read it back and verify round-trip */
18702+ ExpectNotNull(pkey2 = d2i_PUBKEY_bio(bio, NULL));
18703+
18704+ EVP_PKEY_free(pkey2);
18705+ pkey2 = NULL;
18706+ EVP_PKEY_free(pkey);
18707+ pkey = NULL;
18708+ BIO_free(bio);
18709+ bio = NULL;
18710+ }
18711+ #endif
18712+
18713+ (void)pkey;
18714+ (void)pkey2;
18715+ (void)bio;
18716+ #endif
18717+ return EXPECT_RESULT();
18718+ }
18719+
1865618720#if (defined(OPENSSL_ALL) || defined(WOLFSSL_ASIO)) && !defined(NO_RSA) && \
1865718721 !defined(NO_TLS)
1865818722static int test_wolfSSL_d2i_PrivateKeys_bio(void)
@@ -27647,12 +27711,39 @@ static int test_wolfSSL_OpenSSL_version(void)
2764727711 const char* ver;
2764827712
2764927713#if defined(OPENSSL_VERSION_NUMBER) && OPENSSL_VERSION_NUMBER >= 0x10100000L
27650- ExpectNotNull(ver = OpenSSL_version(0));
27714+ ExpectNotNull(ver = OpenSSL_version(OPENSSL_VERSION));
27715+ ExpectIntEQ(XMEMCMP(ver, "wolfSSL " LIBWOLFSSL_VERSION_STRING,
27716+ XSTRLEN("wolfSSL " LIBWOLFSSL_VERSION_STRING)), 0);
27717+
27718+ /* Test OPENSSL_CFLAGS type */
27719+ ExpectNotNull(ver = OpenSSL_version(OPENSSL_CFLAGS));
27720+ ExpectNotNull(XSTRSTR(ver, "compiler:"));
27721+
27722+ /* Test OPENSSL_BUILT_ON type */
27723+ ExpectNotNull(ver = OpenSSL_version(OPENSSL_BUILT_ON));
27724+ ExpectNotNull(XSTRSTR(ver, "built on:"));
27725+
27726+ /* Test OPENSSL_PLATFORM type */
27727+ ExpectNotNull(ver = OpenSSL_version(OPENSSL_PLATFORM));
27728+ ExpectNotNull(XSTRSTR(ver, "platform:"));
27729+
27730+ /* Test OPENSSL_DIR type */
27731+ ExpectNotNull(ver = OpenSSL_version(OPENSSL_DIR));
27732+ ExpectNotNull(XSTRSTR(ver, "OPENSSLDIR:"));
27733+
27734+ /* Test OPENSSL_ENGINES_DIR type */
27735+ ExpectNotNull(ver = OpenSSL_version(OPENSSL_ENGINES_DIR));
27736+ ExpectNotNull(XSTRSTR(ver, "ENGINESDIR:"));
27737+
27738+ /* Test unknown type falls back to version string */
27739+ ExpectNotNull(ver = OpenSSL_version(99));
27740+ ExpectIntEQ(XMEMCMP(ver, "wolfSSL " LIBWOLFSSL_VERSION_STRING,
27741+ XSTRLEN("wolfSSL " LIBWOLFSSL_VERSION_STRING)), 0);
2765127742#else
2765227743 ExpectNotNull(ver = OpenSSL_version());
27653- #endif
2765427744 ExpectIntEQ(XMEMCMP(ver, "wolfSSL " LIBWOLFSSL_VERSION_STRING,
2765527745 XSTRLEN("wolfSSL " LIBWOLFSSL_VERSION_STRING)), 0);
27746+ #endif
2765627747#endif
2765727748 return EXPECT_RESULT();
2765827749}
@@ -36206,6 +36297,7 @@ TEST_CASE testCases[] = {
3620636297 TEST_DECL(test_wolfSSL_d2i_and_i2d_PublicKey_ecc),
3620736298#ifndef NO_BIO
3620836299 TEST_DECL(test_wolfSSL_d2i_PUBKEY),
36300+ TEST_DECL(test_wolfSSL_i2d_PUBKEY_bio),
3620936301#endif
3621036302 TEST_DECL(test_wolfSSL_d2i_and_i2d_DSAparams),
3621136303 TEST_DECL(test_wolfSSL_i2d_PrivateKey),
0 commit comments