Convert remaining pkcs8 tests to gtest
Change-Id: Ic22ea72b0134aa7884f1e75433dd5c18247f57ab
Reviewed-on: https://boringssl-review.googlesource.com/16964
Reviewed-by: David Benjamin <davidben@google.com>
Commit-Queue: David Benjamin <davidben@google.com>
CQ-Verified: CQ bot account: commit-bot@chromium.org <commit-bot@chromium.org>
diff --git a/crypto/CMakeLists.txt b/crypto/CMakeLists.txt
index 746cb19..29b2f34 100644
--- a/crypto/CMakeLists.txt
+++ b/crypto/CMakeLists.txt
@@ -247,6 +247,7 @@
lhash/lhash_test.cc
pkcs7/pkcs7_test.cc
pkcs8/pkcs8_test.cc
+ pkcs8/pkcs12_test.cc
poly1305/poly1305_test.cc
pool/pool_test.cc
refcount_test.cc
diff --git a/crypto/pkcs8/CMakeLists.txt b/crypto/pkcs8/CMakeLists.txt
index 758f4d4..417dce3 100644
--- a/crypto/pkcs8/CMakeLists.txt
+++ b/crypto/pkcs8/CMakeLists.txt
@@ -9,14 +9,3 @@
pkcs8_x509.c
p5_pbev2.c
)
-
-add_executable(
- pkcs12_test
-
- pkcs12_test.cc
-
- $<TARGET_OBJECTS:test_support>
-)
-
-target_link_libraries(pkcs12_test crypto)
-add_dependencies(all_tests pkcs12_test)
diff --git a/crypto/pkcs8/pkcs12_test.cc b/crypto/pkcs8/pkcs12_test.cc
index ba02761..c5a7e07 100644
--- a/crypto/pkcs8/pkcs12_test.cc
+++ b/crypto/pkcs8/pkcs12_test.cc
@@ -12,7 +12,7 @@
* OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN
* CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. */
-#include <stdio.h>
+#include <gtest/gtest.h>
#include <openssl/bio.h>
#include <openssl/bytestring.h>
@@ -900,89 +900,60 @@
static const char kPassword[] = "foo";
-static bool Test(const char *name, const uint8_t *der, size_t der_len) {
+static void TestImpl(const char *name, const uint8_t *der, size_t der_len) {
bssl::UniquePtr<STACK_OF(X509)> certs(sk_X509_new_null());
- if (!certs) {
- return false;
- }
+ ASSERT_TRUE(certs);
CBS pkcs12;
EVP_PKEY *key = nullptr;
CBS_init(&pkcs12, der, der_len);
- if (!PKCS12_get_key_and_certs(&key, certs.get(), &pkcs12, kPassword)) {
- fprintf(stderr, "PKCS12 failed on %s data.\n", name);
- ERR_print_errors_fp(stderr);
- return false;
- }
+ ASSERT_TRUE(PKCS12_get_key_and_certs(&key, certs.get(), &pkcs12, kPassword));
bssl::UniquePtr<EVP_PKEY> delete_key(key);
- if (sk_X509_num(certs.get()) != 1 || key == nullptr) {
- fprintf(stderr, "Bad result from %s data.\n", name);
- return false;
- }
-
- return true;
+ ASSERT_EQ(1u, sk_X509_num(certs.get()));
+ ASSERT_TRUE(key);
}
-static bool TestCompat(const uint8_t *der, size_t der_len) {
+static void TestCompat(const uint8_t *der, size_t der_len) {
bssl::UniquePtr<BIO> bio(BIO_new_mem_buf(der, der_len));
- if (!bio) {
- return false;
- }
+ ASSERT_TRUE(bio);
bssl::UniquePtr<PKCS12> p12(d2i_PKCS12_bio(bio.get(), nullptr));
- if (!p12) {
- fprintf(stderr, "PKCS12_parse failed.\n");
- ERR_print_errors_fp(stderr);
- return false;
- }
+ ASSERT_TRUE(p12);
- if (PKCS12_verify_mac(p12.get(), "badpass", 7)) {
- fprintf(stderr, "PKCS12_verify_mac accepted bad password.\n");
- return false;
- }
-
- if (!PKCS12_verify_mac(p12.get(), kPassword, sizeof(kPassword) - 1)) {
- fprintf(stderr, "PKCS12_verify_mac rejected good password.\n");
- return false;
- }
+ ASSERT_FALSE(PKCS12_verify_mac(p12.get(), "badpass", 7));
+ ASSERT_TRUE(PKCS12_verify_mac(p12.get(), kPassword, sizeof(kPassword) - 1));
EVP_PKEY *key = nullptr;
X509 *cert = nullptr;
STACK_OF(X509) *ca_certs = nullptr;
- if (!PKCS12_parse(p12.get(), kPassword, &key, &cert, &ca_certs)) {
- fprintf(stderr, "PKCS12_parse failed.\n");
- ERR_print_errors_fp(stderr);
- return false;
- }
+ ASSERT_TRUE(PKCS12_parse(p12.get(), kPassword, &key, &cert, &ca_certs));
+
bssl::UniquePtr<EVP_PKEY> delete_key(key);
bssl::UniquePtr<X509> delete_cert(cert);
bssl::UniquePtr<STACK_OF(X509)> delete_ca_certs(ca_certs);
- if (key == nullptr || cert == nullptr) {
- fprintf(stderr, "Bad result from PKCS12_parse.\n");
- return false;
- }
-
- if (sk_X509_num(ca_certs) != 0) {
- fprintf(stderr, "Bad result from PKCS12_parse.\n");
- return false;
- }
-
- return true;
+ ASSERT_TRUE(key);
+ ASSERT_TRUE(cert);
+ ASSERT_EQ(0u, sk_X509_num(ca_certs));
}
-int main(int argc, char **argv) {
- CRYPTO_library_init();
+TEST(PKCS12Test, TestOpenSSL) {
+ TestImpl("OpenSSL", kOpenSSL, sizeof(kOpenSSL));
+}
- if (!Test("OpenSSL", kOpenSSL, sizeof(kOpenSSL)) ||
- !Test("NSS", kNSS, sizeof(kNSS)) ||
- !Test("Windows", kWindows, sizeof(kWindows)) ||
- !Test("PBES2", kPBES2, sizeof(kPBES2)) ||
- !TestCompat(kWindows, sizeof(kWindows))) {
- return 1;
- }
+TEST(PKCS12Test, TestNSS) {
+ TestImpl("NSS", kNSS, sizeof(kNSS));
+}
- printf("PASS\n");
- return 0;
+TEST(PKCS12Test, TestWindows) {
+ TestImpl("Windows", kWindows, sizeof(kWindows));
+}
+
+TEST(PKCS12Test, TestPBES2) {
+ TestImpl("PBES2", kPBES2, sizeof(kPBES2));
+}
+
+TEST(PKCS12Test, TestWindowsCompat) {
+ TestCompat(kWindows, sizeof(kWindows));
}
diff --git a/util/all_tests.json b/util/all_tests.json
index 2cd4745..915709c 100644
--- a/util/all_tests.json
+++ b/util/all_tests.json
@@ -7,7 +7,6 @@
["crypto/fipsmodule/example_mul"],
["crypto/fipsmodule/p256-x86_64_test", "crypto/fipsmodule/ec/p256-x86_64_tests.txt"],
["crypto/obj/obj_test"],
- ["crypto/pkcs8/pkcs12_test"],
["crypto/x509v3/tab_test"],
["crypto/x509v3/v3name_test"],
["crypto/x509/x509_test"],