Chromium Code Reviews| Index: net/cert/internal/parse_certificate_unittest.cc |
| diff --git a/net/cert/internal/parse_certificate_unittest.cc b/net/cert/internal/parse_certificate_unittest.cc |
| index 00f4acfed2ef56a7293782d4f0e281f71f5dc0d8..493638989eeafb1442ceb69b4d5b106fcc731220 100644 |
| --- a/net/cert/internal/parse_certificate_unittest.cc |
| +++ b/net/cert/internal/parse_certificate_unittest.cc |
| @@ -418,107 +418,34 @@ TEST(ParseCertificateTest, ExtensionCritical3) { |
| ASSERT_FALSE(ParseCertificateFromFile("extension_critical_3.pem")); |
| } |
| -// Runs a test for extensions parsing. The input file is a PEM file which |
| -// contains a DER-encoded Extensions sequence, as well as the expected value |
| -// for each contained extension. |
| -void EnsureParsingExtensionsSucceeds( |
| - const std::string& file_name, |
| - std::map<der::Input, ParsedExtension>* extensions, |
| - std::string* data) { |
| - const PemBlockMapping mappings[] = { |
| - // Test Input. |
| - {"EXTENSIONS", data}, |
| - }; |
| - |
| - ASSERT_TRUE(ReadTestDataFromPemFile(GetFilePath(file_name), mappings)); |
| - ASSERT_TRUE(ParseExtensions(der::Input(data), extensions)); |
| -} |
| - |
| -// Runs a test that verifies extensions parsing fails. The input file is a PEM |
| -// file which contains a DER-encoded Extensions sequence. |
| -void EnsureParsingExtensionsFails(const std::string& file_name) { |
| - std::string data; |
| - |
| - const PemBlockMapping mappings[] = { |
| - {"EXTENSIONS", &data}, |
| - }; |
| - |
| - std::map<der::Input, ParsedExtension> extensions; |
| - ASSERT_TRUE(ReadTestDataFromPemFile(GetFilePath(file_name), mappings)); |
| - ASSERT_FALSE(ParseExtensions(der::Input(&data), &extensions)); |
| -} |
| - |
| // Parses an Extensions that is an empty sequence. |
| -TEST(ParseExtensionsTest, EmptySequence) { |
| - EnsureParsingExtensionsFails("extensions_empty_sequence.pem"); |
| +TEST(ParseCertificateTest, ExtensionsEmptySequence) { |
| + ASSERT_FALSE(ParseCertificateFromFile("extensions_empty_sequence.pem")); |
| } |
| // Parses an Extensions that is not a sequence. |
| -TEST(ParseExtensionsTest, NotSequence) { |
| - EnsureParsingExtensionsFails("extensions_not_sequence.pem"); |
| +TEST(ParseCertificateTest, ExtensionsNotSequence) { |
| + ASSERT_FALSE(ParseCertificateFromFile("extensions_not_sequence.pem")); |
| } |
| // Parses an Extensions that has data after the sequence. |
| -TEST(ParseExtensionsTest, DataAfterSequence) { |
| - EnsureParsingExtensionsFails("extensions_data_after_sequence.pem"); |
| +TEST(ParseCertificateTest, ExtensionsDataAfterSequence) { |
| + ASSERT_FALSE(ParseCertificateFromFile("extensions_data_after_sequence.pem")); |
| } |
| // Parses an Extensions that contains duplicated key usages. |
| -TEST(ParseExtensionsTest, DuplicateKeyUsage) { |
| - EnsureParsingExtensionsFails("extensions_duplicate_key_usage.pem"); |
| -} |
| - |
| -// Parses an Extensions that contains an unknown critical extension. |
| -TEST(ParseExtensionsTest, UnknownCritical) { |
|
mattm
2016/09/23 01:54:32
Were these tests supposed to be removed?
eroman
2016/09/23 01:58:05
Yes -- they are basically duplicates with extensio
|
| - std::string data; |
| - std::map<der::Input, ParsedExtension> extensions; |
| - EnsureParsingExtensionsSucceeds("extensions_unknown_critical.pem", |
| - &extensions, &data); |
| - |
| - ASSERT_EQ(1u, extensions.size()); |
| - auto iter = extensions.find(DavidBenOid()); |
| - ASSERT_TRUE(iter != extensions.end()); |
| - EXPECT_TRUE(iter->second.critical); |
| - EXPECT_EQ(4u, iter->second.value.Length()); |
| -} |
| - |
| -// Parses an Extensions that contains an unknown non-critical extension. |
| -TEST(ParseExtensionsTest, UnknownNonCritical) { |
| - std::string data; |
| - std::map<der::Input, ParsedExtension> extensions; |
| - EnsureParsingExtensionsSucceeds("extensions_unknown_non_critical.pem", |
| - &extensions, &data); |
| - |
| - ASSERT_EQ(1u, extensions.size()); |
| - auto iter = extensions.find(DavidBenOid()); |
| - ASSERT_TRUE(iter != extensions.end()); |
| - EXPECT_FALSE(iter->second.critical); |
| - EXPECT_EQ(4u, iter->second.value.Length()); |
| -} |
| - |
| -// Parses an Extensions that contains a basic constraints. |
| -TEST(ParseExtensionsTest, BasicConstraints) { |
| - std::string data; |
| - std::map<der::Input, ParsedExtension> extensions; |
| - EnsureParsingExtensionsSucceeds("extensions_basic_constraints.pem", |
| - &extensions, &data); |
| - |
| - ASSERT_EQ(1u, extensions.size()); |
| - |
| - auto iter = extensions.find(BasicConstraintsOid()); |
| - ASSERT_TRUE(iter != extensions.end()); |
| - EXPECT_TRUE(iter->second.critical); |
| - EXPECT_EQ(2u, iter->second.value.Length()); |
| +TEST(ParseCertificateTest, ExtensionsDuplicateKeyUsage) { |
| + ASSERT_FALSE(ParseCertificateFromFile("extensions_duplicate_key_usage.pem")); |
| } |
| // Parses an Extensions that contains an extended key usages. |
| -TEST(ParseExtensionsTest, ExtendedKeyUsage) { |
| - std::string data; |
| - std::map<der::Input, ParsedExtension> extensions; |
| - EnsureParsingExtensionsSucceeds("extensions_extended_key_usage.pem", |
| - &extensions, &data); |
| +TEST(ParseCertificateTest, ExtendedKeyUsage) { |
| + scoped_refptr<ParsedCertificate> cert = |
| + ParseCertificateFromFile("extended_key_usage.pem"); |
| + ASSERT_TRUE(cert); |
| - ASSERT_EQ(1u, extensions.size()); |
| + const auto& extensions = cert->unparsed_extensions(); |
| + ASSERT_EQ(3u, extensions.size()); |
| auto iter = extensions.find(ExtKeyUsageOid()); |
| ASSERT_TRUE(iter != extensions.end()); |
| @@ -527,28 +454,24 @@ TEST(ParseExtensionsTest, ExtendedKeyUsage) { |
| } |
| // Parses an Extensions that contains a key usage. |
| -TEST(ParseExtensionsTest, KeyUsage) { |
| - std::string data; |
| - std::map<der::Input, ParsedExtension> extensions; |
| - EnsureParsingExtensionsSucceeds("extensions_key_usage.pem", &extensions, |
| - &data); |
| - |
| - ASSERT_EQ(1u, extensions.size()); |
| +TEST(ParseCertificateTest, KeyUsage) { |
| + scoped_refptr<ParsedCertificate> cert = |
| + ParseCertificateFromFile("key_usage.pem"); |
| + ASSERT_TRUE(cert); |
| - auto iter = extensions.find(KeyUsageOid()); |
| - ASSERT_TRUE(iter != extensions.end()); |
| - EXPECT_TRUE(iter->second.critical); |
| - EXPECT_EQ(4u, iter->second.value.Length()); |
| + ASSERT_TRUE(cert->has_key_usage()); |
| + const uint8_t kExpectedValue[] = {0xA0}; |
|
mattm
2016/09/23 01:54:32
maybe dumb question, but why is it {a0} and not {0
eroman
2016/09/23 02:14:10
I will make this clearer in the code, and also add
eroman
2016/09/23 02:21:39
Done.
|
| + EXPECT_EQ(der::Input(kExpectedValue), cert->key_usage().bytes()); |
| } |
| // Parses an Extensions that contains a policies extension. |
| -TEST(ParseExtensionsTest, Policies) { |
| - std::string data; |
| - std::map<der::Input, ParsedExtension> extensions; |
| - EnsureParsingExtensionsSucceeds("extensions_policies.pem", &extensions, |
| - &data); |
| +TEST(ParseCertificateTest, Policies) { |
| + scoped_refptr<ParsedCertificate> cert = |
| + ParseCertificateFromFile("policies.pem"); |
| + ASSERT_TRUE(cert); |
| - ASSERT_EQ(1u, extensions.size()); |
| + const auto& extensions = cert->unparsed_extensions(); |
| + ASSERT_EQ(3u, extensions.size()); |
| auto iter = extensions.find(CertificatePoliciesOid()); |
| ASSERT_TRUE(iter != extensions.end()); |
| @@ -557,40 +480,29 @@ TEST(ParseExtensionsTest, Policies) { |
| } |
| // Parses an Extensions that contains a subjectaltname extension. |
| -TEST(ParseExtensionsTest, SubjectAltName) { |
| - std::string data; |
| - std::map<der::Input, ParsedExtension> extensions; |
| - EnsureParsingExtensionsSucceeds("extensions_subject_alt_name.pem", |
| - &extensions, &data); |
| - |
| - ASSERT_EQ(1u, extensions.size()); |
| +TEST(ParseCertificateTest, SubjectAltName) { |
| + scoped_refptr<ParsedCertificate> cert = |
| + ParseCertificateFromFile("subject_alt_name.pem"); |
| + ASSERT_TRUE(cert); |
| - auto iter = extensions.find(SubjectAltNameOid()); |
| - ASSERT_TRUE(iter != extensions.end()); |
| - EXPECT_FALSE(iter->second.critical); |
| - EXPECT_EQ(23u, iter->second.value.Length()); |
| + ASSERT_TRUE(cert->has_subject_alt_names()); |
| } |
| // Parses an Extensions that contains multiple extensions, sourced from a |
| // real-world certificate. |
| -TEST(ParseExtensionsTest, Real) { |
| - std::string data; |
| - std::map<der::Input, ParsedExtension> extensions; |
| - EnsureParsingExtensionsSucceeds("extensions_real.pem", &extensions, &data); |
| - |
| - ASSERT_EQ(7u, extensions.size()); |
| +TEST(ParseCertificateTest, ExtensionsReal) { |
| + scoped_refptr<ParsedCertificate> cert = |
| + ParseCertificateFromFile("extensions_real.pem"); |
| + ASSERT_TRUE(cert); |
| - auto iter = extensions.find(KeyUsageOid()); |
| - ASSERT_TRUE(iter != extensions.end()); |
| - EXPECT_TRUE(iter->second.critical); |
| - EXPECT_EQ(4u, iter->second.value.Length()); |
| + const auto& extensions = cert->unparsed_extensions(); |
| + ASSERT_EQ(4u, extensions.size()); |
| - iter = extensions.find(BasicConstraintsOid()); |
| - ASSERT_TRUE(iter != extensions.end()); |
| - EXPECT_TRUE(iter->second.critical); |
| - EXPECT_EQ(8u, iter->second.value.Length()); |
| + EXPECT_TRUE(cert->has_key_usage()); |
| + EXPECT_TRUE(cert->has_basic_constraints()); |
| + EXPECT_TRUE(cert->has_basic_constraints()); |
|
mattm
2016/09/23 01:54:32
repeated
eroman
2016/09/23 02:21:39
Done.
|
| - iter = extensions.find(CertificatePoliciesOid()); |
| + auto iter = extensions.find(CertificatePoliciesOid()); |
| ASSERT_TRUE(iter != extensions.end()); |
| EXPECT_FALSE(iter->second.critical); |
| EXPECT_EQ(16u, iter->second.value.Length()); |