From 062df01737b06337aac42a60285a218fa0f3d6cb Mon Sep 17 00:00:00 2001 From: Chris Conlon Date: Fri, 16 Oct 2020 11:00:00 -0600 Subject: [PATCH] add PKCS12 RC2 test case, example p12 bundle --- certs/renewcerts.sh | 9 ++++++++ certs/test-servercert-rc2.p12 | Bin 0 -> 5461 bytes tests/api.c | 40 ++++++++++++++++++++++++++++++++++ 3 files changed, 49 insertions(+) create mode 100644 certs/test-servercert-rc2.p12 diff --git a/certs/renewcerts.sh b/certs/renewcerts.sh index e40270a18..4cde3aaf1 100755 --- a/certs/renewcerts.sh +++ b/certs/renewcerts.sh @@ -542,6 +542,15 @@ run_renewcerts(){ echo "End of section" echo "---------------------------------------------------------------------" ############################################################ + ###### update the test-servercert-rc2.p12 file ############# + ############################################################ + echo "Updating test-servercert-rc2.p12 (password is \"wolfSSL test\")" + echo "" + echo "wolfSSL test" | openssl pkcs12 -export -in server-cert.pem -inkey server-key.pem -certfile ca-cert.pem -out test-servercert-rc2.p12 -password stdin + check_result $? "Step 1" + echo "End of section" + echo "---------------------------------------------------------------------" + ############################################################ ###### calling gen-ext-certs.sh ################## ############################################################ echo "Calling gen-ext-certs.sh" diff --git a/certs/test-servercert-rc2.p12 b/certs/test-servercert-rc2.p12 new file mode 100644 index 0000000000000000000000000000000000000000..36877cff921ae572a7da2bb6fe54a9eb9e2dd227 GIT binary patch literal 5461 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 LG`v}Y0s;sCmg{c( literal 0 HcmV?d00001 diff --git a/tests/api.c b/tests/api.c index be8c37bde..8b6a5b671 100644 --- a/tests/api.c +++ b/tests/api.c @@ -4819,6 +4819,9 @@ static void test_wolfSSL_PKCS12(void) byte buffer[6000]; char file[] = "./certs/test-servercert.p12"; char order[] = "./certs/ecc-rsa-server.p12"; +#ifdef WC_RC2 + char rc2p12[] = "./certs/test-servercert-rc2.p12"; +#endif char pass[] = "a password"; #ifdef HAVE_ECC WOLFSSL_X509_NAME* subject; @@ -5062,6 +5065,43 @@ static void test_wolfSSL_PKCS12(void) PKCS12_free(pkcs12); #endif /* HAVE_ECC */ +#ifdef WC_RC2 + /* test PKCS#12 with RC2 encryption */ + f = XFOPEN(rc2p12, "rb"); + AssertTrue(f != XBADFILE); + bytes = (int)XFREAD(buffer, 1, sizeof(buffer), f); + XFCLOSE(f); + + AssertNotNull(bio = BIO_new_mem_buf((void*)buffer, bytes)); + AssertNotNull(pkcs12 = d2i_PKCS12_bio(bio, NULL)); + + /* check verify MAC fail case */ + ret = PKCS12_parse(pkcs12, "bad", &pkey, &cert, NULL); + AssertIntEQ(ret, 0); + AssertNull(pkey); + AssertNull(cert); + + /* check parse iwth not extra certs kept */ + ret = PKCS12_parse(pkcs12, "wolfSSL test", &pkey, &cert, NULL); + AssertIntEQ(ret, WOLFSSL_SUCCESS); + AssertNotNull(pkey); + AssertNotNull(cert); + + /* check parse with extra certs kept */ + ret = PKCS12_parse(pkcs12, "wolfSSL test", &pkey, &cert, &ca); + AssertIntEQ(ret, WOLFSSL_SUCCESS); + AssertNotNull(pkey); + AssertNotNull(cert); + AssertNotNull(ca); + + wolfSSL_EVP_PKEY_free(pkey); + wolfSSL_X509_free(cert); + sk_X509_free(ca); + + BIO_free(bio); + PKCS12_free(pkcs12); +#endif /* WC_RC2 */ + /* Test i2d_PKCS12_bio */ f = XFOPEN(file, "rb"); AssertTrue((f != XBADFILE));