| 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 cf6da4afc82bb57b8240c2b15a135fbbc0507fbe..ad167ed13d473fbb25dd8ba4856180adc33edf1f 100644
|
| --- a/net/cert/internal/parse_certificate_unittest.cc
|
| +++ b/net/cert/internal/parse_certificate_unittest.cc
|
| @@ -326,6 +326,64 @@ TEST(ParseTbsCertificateTest, ValidityRelaxed) {
|
| EnsureParsingTbsFails("tbs_validity_relaxed.pem");
|
| }
|
|
|
| +// Reads a PEM file containing a block "EXTENSION". This input will be
|
| +// passed to ParseExtension, and the results filled in |out|.
|
| +bool ParseExtensionFromFile(const std::string& file_name,
|
| + ParsedExtension* out) {
|
| + std::string data;
|
| +
|
| + const PemBlockMapping mappings[] = {
|
| + {"EXTENSION", &data},
|
| + };
|
| +
|
| + EXPECT_TRUE(ReadTestDataFromPemFile(GetFilePath(file_name), mappings));
|
| + return ParseExtension(InputFromString(&data), out);
|
| +}
|
| +
|
| +// Parses an Extension whose critical field is true (255).
|
| +TEST(ParseExtensionTest, Critical) {
|
| + ParsedExtension extension;
|
| + ASSERT_TRUE(ParseExtensionFromFile("extension_critical.pem", &extension));
|
| +
|
| + EXPECT_EQ(true, extension.critical);
|
| +
|
| + const uint8_t kExpectedOid[] = {0x55, 0x1d, 0x13};
|
| + EXPECT_EQ(der::Input(kExpectedOid), extension.oid);
|
| +
|
| + const uint8_t kExpectedValue[] = {0x30, 0x00};
|
| + EXPECT_EQ(der::Input(kExpectedValue), extension.value);
|
| +}
|
| +
|
| +// Parses an Extension whose critical field is false (omitted).
|
| +TEST(ParseExtensionTest, NotCritical) {
|
| + ParsedExtension extension;
|
| + ASSERT_TRUE(ParseExtensionFromFile("extension_not_critical.pem", &extension));
|
| +
|
| + EXPECT_EQ(false, extension.critical);
|
| +
|
| + const uint8_t kExpectedOid[] = {0x55, 0x1d, 0x13};
|
| + EXPECT_EQ(der::Input(kExpectedOid), extension.oid);
|
| +
|
| + const uint8_t kExpectedValue[] = {0x30, 0x00};
|
| + EXPECT_EQ(der::Input(kExpectedValue), extension.value);
|
| +}
|
| +
|
| +// Parses an Extension whose critical field is 0. This is in one sense FALSE,
|
| +// however because critical has DEFAULT of false this is in fact invalid
|
| +// DER-encoding.
|
| +TEST(ParseExtensionTest, Critical0) {
|
| + ParsedExtension extension;
|
| + ASSERT_FALSE(ParseExtensionFromFile("extension_critical_0.pem", &extension));
|
| +}
|
| +
|
| +// Parses an Extension whose critical field is 3. Under DER-encoding BOOLEAN
|
| +// values must an octet of either all zero bits, or all 1 bits, so this is not
|
| +// valid.
|
| +TEST(ParseExtensionTest, Critical3) {
|
| + ParsedExtension extension;
|
| + ASSERT_FALSE(ParseExtensionFromFile("extension_critical_3.pem", &extension));
|
| +}
|
| +
|
| } // namespace
|
|
|
| } // namespace net
|
|
|