diff options
Diffstat (limited to 'net/base/ev_root_ca_metadata_unittest.cc')
-rw-r--r-- | net/base/ev_root_ca_metadata_unittest.cc | 120 |
1 files changed, 85 insertions, 35 deletions
diff --git a/net/base/ev_root_ca_metadata_unittest.cc b/net/base/ev_root_ca_metadata_unittest.cc index 1a1ef35..8859c70 100644 --- a/net/base/ev_root_ca_metadata_unittest.cc +++ b/net/base/ev_root_ca_metadata_unittest.cc @@ -8,8 +8,14 @@ #include "net/base/x509_cert_types.h" #include "testing/gtest/include/gtest/gtest.h" +#if defined(USE_NSS) +#include "crypto/scoped_nss_types.h" +#endif + namespace net { +namespace { + static const char kVerisignPolicy[] = "2.16.840.1.113733.1.7.23.6"; static const char kThawtePolicy[] = "2.16.840.1.113733.1.7.48.1"; static const char kFakePolicy[] = "2.16.840.1.42"; @@ -20,75 +26,119 @@ static const SHA1Fingerprint kFakeFingerprint = { { 0x00, 0x11, 0x22, 0x33, 0x44, 0x55, 0x66, 0x77, 0x88, 0x99, 0x00, 0x11, 0x22, 0x33, 0x44, 0x55, 0x66, 0x77, 0x88, 0x99 } }; +#if defined(USE_NSS) || defined(OS_WIN) +class EVOidData { + public: + EVOidData(); + bool Init(); + + EVRootCAMetadata::PolicyOID verisign_policy; + EVRootCAMetadata::PolicyOID thawte_policy; + EVRootCAMetadata::PolicyOID fake_policy; +}; + +#endif // defined(USE_NSS) || defined(OS_WIN) + #if defined(USE_NSS) -TEST(EVRootCAMetadataTest, Basic) { - EVRootCAMetadata* ev_metadata(EVRootCAMetadata::GetInstance()); - std::vector<EVRootCAMetadata::PolicyOID> oids; +SECOidTag RegisterOID(PLArenaPool* arena, const char* oid_string) { + SECOidData oid_data; + memset(&oid_data, 0, sizeof(oid_data)); + oid_data.offset = SEC_OID_UNKNOWN; + oid_data.desc = oid_string; + oid_data.mechanism = CKM_INVALID_MECHANISM; + oid_data.supportedExtension = INVALID_CERT_EXTENSION; - EXPECT_TRUE(ev_metadata->GetPolicyOIDsForCA(kVerisignFingerprint, &oids)); - EXPECT_LT(0u, oids.size()); - oids.clear(); + SECStatus rv = SEC_StringToOID(arena, &oid_data.oid, oid_string, 0); + if (rv != SECSuccess) + return SEC_OID_UNKNOWN; - EXPECT_FALSE(ev_metadata->GetPolicyOIDsForCA(kFakeFingerprint, &oids)); - EXPECT_EQ(0u, oids.size()); + return SECOID_AddEntry(&oid_data); } -TEST(EVRootCAMetadataTest, AddRemove) { - EVRootCAMetadata* ev_metadata(EVRootCAMetadata::GetInstance()); - std::vector<EVRootCAMetadata::PolicyOID> oids; - - EXPECT_FALSE(ev_metadata->GetPolicyOIDsForCA(kFakeFingerprint, &oids)); +EVOidData::EVOidData() + : verisign_policy(SEC_OID_UNKNOWN), + thawte_policy(SEC_OID_UNKNOWN), + fake_policy(SEC_OID_UNKNOWN) { +} - { - ScopedTestEVPolicy test_ev_policy(ev_metadata, kFakeFingerprint, - kFakePolicy); +bool EVOidData::Init() { + crypto::ScopedPLArenaPool pool(PORT_NewArena(DER_DEFAULT_CHUNKSIZE)); + if (!pool.get()) + return false; - EXPECT_TRUE(ev_metadata->GetPolicyOIDsForCA(kFakeFingerprint, &oids)); - EXPECT_EQ(1u, oids.size()); - } + verisign_policy = RegisterOID(pool.get(), kVerisignPolicy); + thawte_policy = RegisterOID(pool.get(), kThawtePolicy); + fake_policy = RegisterOID(pool.get(), kFakePolicy); - EXPECT_FALSE(ev_metadata->GetPolicyOIDsForCA(kFakeFingerprint, &oids)); + return verisign_policy != SEC_OID_UNKNOWN && + thawte_policy != SEC_OID_UNKNOWN && + fake_policy != SEC_OID_UNKNOWN; } #elif defined(OS_WIN) -TEST(EVRootCAMetadataTest, Basic) { +EVOidData::EVOidData() + : verisign_policy(kVerisignPolicy), + thawte_policy(kThawtePolicy), + fake_policy(kFakePolicy) { +} + +bool EVOidData::Init() { + return true; +} + +#endif + +#if defined(USE_NSS) || defined(OS_WIN) + +class EVRootCAMetadataTest : public testing::Test { + protected: + virtual void SetUp() OVERRIDE { + ASSERT_TRUE(ev_oid_data.Init()); + } + + EVOidData ev_oid_data; +}; + +TEST_F(EVRootCAMetadataTest, Basic) { EVRootCAMetadata* ev_metadata(EVRootCAMetadata::GetInstance()); - EXPECT_TRUE(ev_metadata->IsEVPolicyOID(kVerisignPolicy)); - EXPECT_FALSE(ev_metadata->IsEVPolicyOID(kFakePolicy)); + EXPECT_TRUE(ev_metadata->IsEVPolicyOID(ev_oid_data.verisign_policy)); + EXPECT_FALSE(ev_metadata->IsEVPolicyOID(ev_oid_data.fake_policy)); EXPECT_TRUE(ev_metadata->HasEVPolicyOID(kVerisignFingerprint, - kVerisignPolicy)); + ev_oid_data.verisign_policy)); EXPECT_FALSE(ev_metadata->HasEVPolicyOID(kFakeFingerprint, - kVerisignPolicy)); + ev_oid_data.verisign_policy)); EXPECT_FALSE(ev_metadata->HasEVPolicyOID(kVerisignFingerprint, - kFakePolicy)); + ev_oid_data.fake_policy)); EXPECT_FALSE(ev_metadata->HasEVPolicyOID(kVerisignFingerprint, - kThawtePolicy)); + ev_oid_data.thawte_policy)); } -TEST(EVRootCAMetadataTest, AddRemove) { +TEST_F(EVRootCAMetadataTest, AddRemove) { EVRootCAMetadata* ev_metadata(EVRootCAMetadata::GetInstance()); - EXPECT_FALSE(ev_metadata->IsEVPolicyOID(kFakePolicy)); + EXPECT_FALSE(ev_metadata->IsEVPolicyOID(ev_oid_data.fake_policy)); EXPECT_FALSE(ev_metadata->HasEVPolicyOID(kFakeFingerprint, - kFakePolicy)); + ev_oid_data.fake_policy)); { ScopedTestEVPolicy test_ev_policy(ev_metadata, kFakeFingerprint, kFakePolicy); - EXPECT_TRUE(ev_metadata->IsEVPolicyOID(kFakePolicy)); + EXPECT_TRUE(ev_metadata->IsEVPolicyOID(ev_oid_data.fake_policy)); EXPECT_TRUE(ev_metadata->HasEVPolicyOID(kFakeFingerprint, - kFakePolicy)); + ev_oid_data.fake_policy)); } - EXPECT_FALSE(ev_metadata->IsEVPolicyOID(kFakePolicy)); + EXPECT_FALSE(ev_metadata->IsEVPolicyOID(ev_oid_data.fake_policy)); EXPECT_FALSE(ev_metadata->HasEVPolicyOID(kFakeFingerprint, - kFakePolicy)); + ev_oid_data.fake_policy)); } -#endif // defined(OS_WIN) +#endif // defined(USE_NSS) || defined(OS_WIN) + +} // namespace } // namespace net |