@@ -354,6 +354,9 @@ const byte const_byte_array[] = "A+Gd\0\0\0";
354354#ifdef HAVE_PKCS7
355355 #include <wolfssl/wolfcrypt/pkcs7.h>
356356#endif
357+ #ifdef HAVE_PKCS12
358+ #include <wolfssl/wolfcrypt/pkcs12.h>
359+ #endif
357360#ifdef HAVE_FIPS
358361 #include <wolfssl/wolfcrypt/fips_test.h>
359362#endif
@@ -584,6 +587,7 @@ WOLFSSL_TEST_SUBROUTINE wc_test_ret_t srp_test(void);
584587WOLFSSL_TEST_SUBROUTINE wc_test_ret_t random_test(void);
585588#endif /* WC_NO_RNG */
586589WOLFSSL_TEST_SUBROUTINE wc_test_ret_t pwdbased_test(void);
590+ WOLFSSL_TEST_SUBROUTINE wc_test_ret_t pkcs12_test(void);
587591WOLFSSL_TEST_SUBROUTINE wc_test_ret_t ripemd_test(void);
588592#if defined(OPENSSL_EXTRA) && !defined(WOLFCRYPT_ONLY)
589593WOLFSSL_TEST_SUBROUTINE wc_test_ret_t openssl_test(void); /* test mini api */
@@ -595,7 +599,7 @@ WOLFSSL_TEST_SUBROUTINE wc_test_ret_t openssl_evpSig_test(void);
595599#endif
596600
597601WOLFSSL_TEST_SUBROUTINE wc_test_ret_t pbkdf1_test(void);
598- WOLFSSL_TEST_SUBROUTINE wc_test_ret_t pkcs12_test (void);
602+ WOLFSSL_TEST_SUBROUTINE wc_test_ret_t pkcs12_pbkdf_test (void);
599603#if defined(HAVE_PBKDF2) && !defined(NO_SHA256) && !defined(NO_HMAC)
600604WOLFSSL_TEST_SUBROUTINE wc_test_ret_t pbkdf2_test(void);
601605#endif
@@ -1672,6 +1676,13 @@ options: [-s max_relative_stack_bytes] [-m max_relative_heap_memory_bytes]\n\
16721676 PRIVATE_KEY_LOCK();
16731677#endif
16741678
1679+ #if defined(HAVE_PKCS12) && defined(USE_CERT_BUFFERS_2048)
1680+ if ( (ret = pkcs12_test()) != 0)
1681+ TEST_FAIL("PKCS12 test failed!\n", ret);
1682+ else
1683+ TEST_PASS("PKCS12 test passed!\n");
1684+ #endif
1685+
16751686#if defined(OPENSSL_EXTRA) && !defined(WOLFCRYPT_ONLY)
16761687 if ( (ret = openssl_test()) != 0)
16771688 TEST_FAIL("OPENSSL test failed!\n", ret);
@@ -24707,7 +24718,7 @@ WOLFSSL_TEST_SUBROUTINE wc_test_ret_t scrypt_test(void)
2470724718#endif
2470824719
2470924720#ifdef HAVE_PKCS12
24710- WOLFSSL_TEST_SUBROUTINE wc_test_ret_t pkcs12_test (void)
24721+ WOLFSSL_TEST_SUBROUTINE wc_test_ret_t pkcs12_pbkdf_test (void)
2471124722{
2471224723 WOLFSSL_SMALL_STACK_STATIC const byte passwd[] = { 0x00, 0x73, 0x00, 0x6d, 0x00, 0x65, 0x00, 0x67,
2471324724 0x00, 0x00 };
@@ -24734,7 +24745,7 @@ WOLFSSL_TEST_SUBROUTINE wc_test_ret_t pkcs12_test(void)
2473424745 int kLen = 24;
2473524746 int iterations = 1;
2473624747 wc_test_ret_t ret;
24737- WOLFSSL_ENTER("pkcs12_test ");
24748+ WOLFSSL_ENTER("pkcs12_pbkdf_test ");
2473824749
2473924750 ret = wc_PKCS12_PBKDF(derived, passwd, sizeof(passwd), salt, 8,
2474024751 iterations, kLen, WC_SHA256, id);
@@ -24839,7 +24850,7 @@ WOLFSSL_TEST_SUBROUTINE wc_test_ret_t pwdbased_test(void)
2483924850 return ret;
2484024851#endif
2484124852#ifdef HAVE_PKCS12
24842- ret = pkcs12_test ();
24853+ ret = pkcs12_pbkdf_test ();
2484324854 if (ret != 0)
2484424855 return ret;
2484524856#endif
@@ -24853,6 +24864,76 @@ WOLFSSL_TEST_SUBROUTINE wc_test_ret_t pwdbased_test(void)
2485324864
2485424865#endif /* NO_PWDBASED */
2485524866
24867+ #if defined(HAVE_PKCS12) && defined(USE_CERT_BUFFERS_2048)
24868+ WOLFSSL_TEST_SUBROUTINE wc_test_ret_t pkcs12_test(void)
24869+ {
24870+ wc_test_ret_t ret = 0;
24871+ WC_PKCS12* pkcs12 = NULL;
24872+ /* Gen vars */
24873+ byte* pkcs12der = NULL;
24874+ int pkcs12derSz = 0;
24875+ WC_DerCertList derCaList = {
24876+ (byte*)ca_cert_der_2048, sizeof_ca_cert_der_2048, NULL
24877+ };
24878+ char* pass = (char*)"wolfSSL test";
24879+ /* Parsing vars */
24880+ WC_DerCertList* derCaListOut = NULL;
24881+ byte* keyDer = NULL;
24882+ byte* certDer = NULL;
24883+ word32 keySz;
24884+ word32 certSz;
24885+
24886+ WOLFSSL_ENTER("pkcs12_test");
24887+
24888+ pkcs12 = wc_PKCS12_create(pass, XSTRLEN(pass),
24889+ (char*)"friendlyName" /* not used currently */,
24890+ (byte*)server_key_der_2048, sizeof_server_key_der_2048,
24891+ (byte*)server_cert_der_2048, sizeof_server_cert_der_2048,
24892+ &derCaList, PBE_SHA1_DES3, PBE_SHA1_DES3, 100, 100,
24893+ 0 /* not used currently */, HEAP_HINT);
24894+ if (pkcs12 == NULL)
24895+ return MEMORY_E;
24896+
24897+ ret = wc_i2d_PKCS12(pkcs12, NULL, &pkcs12derSz);
24898+ if (ret != LENGTH_ONLY_E)
24899+ return ret == 0 ? -1 : ret;
24900+
24901+ pkcs12der = (byte*)XMALLOC(pkcs12derSz, HEAP_HINT, DYNAMIC_TYPE_PKCS);
24902+ if (pkcs12der == NULL)
24903+ return MEMORY_E;
24904+
24905+ {
24906+ /* Use tmp pointer to avoid advancing pkcs12der */
24907+ byte* tmp = pkcs12der;
24908+ ret = wc_i2d_PKCS12(pkcs12, &tmp, &pkcs12derSz);
24909+ if (ret <= 0)
24910+ return ret == 0 ? -1 : ret;
24911+ }
24912+
24913+ wc_PKCS12_free(pkcs12);
24914+ pkcs12 = wc_PKCS12_new_ex(HEAP_HINT);
24915+ if (pkcs12 == NULL)
24916+ return MEMORY_E;
24917+
24918+ /* convert the DER file into an internal structure */
24919+ ret = wc_d2i_PKCS12(pkcs12der, pkcs12derSz, pkcs12);
24920+ if (ret != 0)
24921+ return ret;
24922+
24923+ /* parse the internal structure into its parts */
24924+ ret = wc_PKCS12_parse(pkcs12, "wolfSSL test", &keyDer, &keySz,
24925+ &certDer, &certSz, &derCaListOut);
24926+ if (ret != 0 || keyDer == NULL || certDer == NULL || derCaListOut == NULL)
24927+ return ret == 0 ? -1 : ret;
24928+
24929+ wc_FreeCertList(derCaListOut, HEAP_HINT);
24930+ XFREE(keyDer, HEAP_HINT, DYNAMIC_TYPE_PKCS);
24931+ XFREE(certDer, HEAP_HINT, DYNAMIC_TYPE_PKCS);
24932+ wc_PKCS12_free(pkcs12);
24933+ return ret;
24934+ }
24935+ #endif
24936+
2485624937#if defined(HAVE_HKDF) && !defined(NO_HMAC)
2485724938
2485824939#if defined(WOLFSSL_AFALG_XILINX) || defined(WOLFSSL_AFALG_XILINX_AES) || \
@@ -50257,7 +50338,7 @@ static int myCryptoDevCb(int devIdArg, wc_CryptoInfo* info, void* ctx)
5025750338 return BAD_FUNC_ARG;
5025850339
5025950340#ifdef DEBUG_WOLFSSL
50260- printf ("CryptoDevCb: Algo Type %d\n", info->algo_type);
50341+ WOLFSSL_MSG_EX ("CryptoDevCb: Algo Type %d\n", info->algo_type);
5026150342#endif
5026250343
5026350344 if (info->algo_type == WC_ALGO_TYPE_RNG) {
@@ -50299,7 +50380,7 @@ static int myCryptoDevCb(int devIdArg, wc_CryptoInfo* info, void* ctx)
5029950380 }
5030050381 else if (info->algo_type == WC_ALGO_TYPE_PK) {
5030150382 #ifdef DEBUG_WOLFSSL
50302- printf ("CryptoDevCb: Pk Type %d\n", info->pk.type);
50383+ WOLFSSL_MSG_EX ("CryptoDevCb: Pk Type %d\n", info->pk.type);
5030350384 #endif
5030450385
5030550386 #ifndef NO_RSA
0 commit comments