Index: net/cert/internal/verify_name_match_unittest.cc |
diff --git a/net/cert/internal/verify_name_match_unittest.cc b/net/cert/internal/verify_name_match_unittest.cc |
index 273e2e899165989c90307f387d6cf543827744ee..667581273c3239abc862b7b11e8b143fcdebdef3 100644 |
--- a/net/cert/internal/verify_name_match_unittest.cc |
+++ b/net/cert/internal/verify_name_match_unittest.cc |
@@ -4,13 +4,9 @@ |
#include "net/cert/internal/verify_name_match.h" |
-#include "base/base_paths.h" |
-#include "base/files/file_path.h" |
-#include "base/files/file_util.h" |
-#include "base/path_service.h" |
#include "base/strings/string_number_conversions.h" |
#include "base/strings/string_util.h" |
-#include "net/cert/pem_tokenizer.h" |
+#include "net/cert/internal/test_helpers.h" |
#include "net/der/input.h" |
#include "net/der/parser.h" |
#include "testing/gtest/include/gtest/gtest.h" |
@@ -18,9 +14,8 @@ |
namespace net { |
namespace { |
-der::Input SequenceValueFromString(const std::string& s) { |
- der::Parser parser( |
- der::Input(reinterpret_cast<const uint8_t*>(s.data()), s.size())); |
+der::Input SequenceValueFromString(const std::string* s) { |
+ der::Parser parser(InputFromString(s)); |
der::Input data; |
if (!parser.ReadTag(der::kSequence, &data)) { |
ADD_FAILURE(); |
@@ -43,29 +38,14 @@ der::Input SequenceValueFromString(const std::string& s) { |
const std::string& value_type, |
const std::string& suffix, |
std::string* result) { |
- base::FilePath src_root; |
- PathService::Get(base::DIR_SOURCE_ROOT, &src_root); |
- std::string filename = prefix + "-" + value_type + "-" + suffix + ".pem"; |
- base::FilePath filepath = |
- src_root.Append(FILE_PATH_LITERAL( |
- "net/data/verify_name_match_unittest/names")) |
- .AppendASCII(filename); |
- std::string file_data; |
- if (!base::ReadFileToString(filepath, &file_data)) { |
- return ::testing::AssertionFailure() |
- << "ReadFileToString returned false on " << filename; |
- } |
+ std::string path = "net/data/verify_name_match_unittest/names/" + prefix + |
+ "-" + value_type + "-" + suffix + ".pem"; |
- std::vector<std::string> pem_headers; |
- pem_headers.push_back("NAME"); |
- PEMTokenizer pem_tokenizer(file_data, pem_headers); |
- if (!pem_tokenizer.GetNext()) { |
- return ::testing::AssertionFailure() << "PEM.GetNext returned false on " |
- << filename; |
- } |
+ const PemBlockMapping mappings[] = { |
+ {"NAME", result}, |
+ }; |
- result->assign(pem_tokenizer.data()); |
- return ::testing::AssertionSuccess(); |
+ return ReadTestDataFromPemFile(path, mappings); |
} |
bool TypesAreComparable(const std::string& type_1, const std::string& type_2) { |
@@ -108,20 +88,20 @@ class VerifyNameMatchSimpleTest |
TEST_P(VerifyNameMatchSimpleTest, ExactEquality) { |
std::string der; |
ASSERT_TRUE(LoadTestData("ascii", value_type(), suffix(), &der)); |
- EXPECT_TRUE(VerifyNameMatch(SequenceValueFromString(der), |
- SequenceValueFromString(der))); |
+ EXPECT_TRUE(VerifyNameMatch(SequenceValueFromString(&der), |
+ SequenceValueFromString(&der))); |
std::string der_extra_attr; |
ASSERT_TRUE(LoadTestData("ascii", value_type(), suffix() + "-extra_attr", |
&der_extra_attr)); |
- EXPECT_TRUE(VerifyNameMatch(SequenceValueFromString(der_extra_attr), |
- SequenceValueFromString(der_extra_attr))); |
+ EXPECT_TRUE(VerifyNameMatch(SequenceValueFromString(&der_extra_attr), |
+ SequenceValueFromString(&der_extra_attr))); |
std::string der_extra_rdn; |
ASSERT_TRUE(LoadTestData("ascii", value_type(), suffix() + "-extra_rdn", |
&der_extra_rdn)); |
- EXPECT_TRUE(VerifyNameMatch(SequenceValueFromString(der_extra_rdn), |
- SequenceValueFromString(der_extra_rdn))); |
+ EXPECT_TRUE(VerifyNameMatch(SequenceValueFromString(&der_extra_rdn), |
+ SequenceValueFromString(&der_extra_rdn))); |
} |
// Ensure that a Name does not match another Name which is exactly the same but |
@@ -132,10 +112,10 @@ TEST_P(VerifyNameMatchSimpleTest, ExtraAttrDoesNotMatch) { |
std::string der_extra_attr; |
ASSERT_TRUE(LoadTestData("ascii", value_type(), suffix() + "-extra_attr", |
&der_extra_attr)); |
- EXPECT_FALSE(VerifyNameMatch(SequenceValueFromString(der), |
- SequenceValueFromString(der_extra_attr))); |
- EXPECT_FALSE(VerifyNameMatch(SequenceValueFromString(der_extra_attr), |
- SequenceValueFromString(der))); |
+ EXPECT_FALSE(VerifyNameMatch(SequenceValueFromString(&der), |
+ SequenceValueFromString(&der_extra_attr))); |
+ EXPECT_FALSE(VerifyNameMatch(SequenceValueFromString(&der_extra_attr), |
+ SequenceValueFromString(&der))); |
} |
// Ensure that a Name does not match another Name which is exactly the same but |
@@ -146,10 +126,10 @@ TEST_P(VerifyNameMatchSimpleTest, ExtraRdnDoesNotMatch) { |
std::string der_extra_rdn; |
ASSERT_TRUE(LoadTestData("ascii", value_type(), suffix() + "-extra_rdn", |
&der_extra_rdn)); |
- EXPECT_FALSE(VerifyNameMatch(SequenceValueFromString(der), |
- SequenceValueFromString(der_extra_rdn))); |
- EXPECT_FALSE(VerifyNameMatch(SequenceValueFromString(der_extra_rdn), |
- SequenceValueFromString(der))); |
+ EXPECT_FALSE(VerifyNameMatch(SequenceValueFromString(&der), |
+ SequenceValueFromString(&der_extra_rdn))); |
+ EXPECT_FALSE(VerifyNameMatch(SequenceValueFromString(&der_extra_rdn), |
+ SequenceValueFromString(&der))); |
} |
// Runs VerifyNameMatchSimpleTest for all combinations of value_type and and |
@@ -174,11 +154,11 @@ TEST_P(VerifyNameMatchNormalizationTest, CaseInsensitivity) { |
std::string case_swap; |
ASSERT_TRUE(LoadTestData("ascii", value_type(), "case_swap", &case_swap)); |
EXPECT_EQ(expected_result(), |
- VerifyNameMatch(SequenceValueFromString(normal), |
- SequenceValueFromString(case_swap))); |
+ VerifyNameMatch(SequenceValueFromString(&normal), |
+ SequenceValueFromString(&case_swap))); |
EXPECT_EQ(expected_result(), |
- VerifyNameMatch(SequenceValueFromString(case_swap), |
- SequenceValueFromString(normal))); |
+ VerifyNameMatch(SequenceValueFromString(&case_swap), |
+ SequenceValueFromString(&normal))); |
} |
// Verify matching folds whitespace (for the types which currently support |
@@ -190,11 +170,11 @@ TEST_P(VerifyNameMatchNormalizationTest, CollapseWhitespace) { |
ASSERT_TRUE( |
LoadTestData("ascii", value_type(), "extra_whitespace", &whitespace)); |
EXPECT_EQ(expected_result(), |
- VerifyNameMatch(SequenceValueFromString(normal), |
- SequenceValueFromString(whitespace))); |
+ VerifyNameMatch(SequenceValueFromString(&normal), |
+ SequenceValueFromString(&whitespace))); |
EXPECT_EQ(expected_result(), |
- VerifyNameMatch(SequenceValueFromString(whitespace), |
- SequenceValueFromString(normal))); |
+ VerifyNameMatch(SequenceValueFromString(&whitespace), |
+ SequenceValueFromString(&normal))); |
} |
// Runs VerifyNameMatchNormalizationTest for each (expected_result, value_type) |
@@ -225,11 +205,11 @@ TEST_P(VerifyNameMatchDifferingTypesTest, NormalizableTypesAreEqual) { |
std::string der_2; |
ASSERT_TRUE(LoadTestData("ascii", value_type_2(), "unmangled", &der_2)); |
if (TypesAreComparable(value_type_1(), value_type_2())) { |
- EXPECT_TRUE(VerifyNameMatch(SequenceValueFromString(der_1), |
- SequenceValueFromString(der_2))); |
+ EXPECT_TRUE(VerifyNameMatch(SequenceValueFromString(&der_1), |
+ SequenceValueFromString(&der_2))); |
} else { |
- EXPECT_FALSE(VerifyNameMatch(SequenceValueFromString(der_1), |
- SequenceValueFromString(der_2))); |
+ EXPECT_FALSE(VerifyNameMatch(SequenceValueFromString(&der_1), |
+ SequenceValueFromString(&der_2))); |
} |
} |
@@ -259,8 +239,8 @@ TEST_P(VerifyNameMatchUnicodeConversionTest, UnicodeConversionsAreEqual) { |
ASSERT_TRUE(LoadTestData(prefix(), value_type_1(), "unmangled", &der_1)); |
std::string der_2; |
ASSERT_TRUE(LoadTestData(prefix(), value_type_2(), "unmangled", &der_2)); |
- EXPECT_TRUE(VerifyNameMatch(SequenceValueFromString(der_1), |
- SequenceValueFromString(der_2))); |
+ EXPECT_TRUE(VerifyNameMatch(SequenceValueFromString(&der_1), |
+ SequenceValueFromString(&der_2))); |
} |
// Runs VerifyNameMatchUnicodeConversionTest with prefix="unicode_bmp" for all |
@@ -315,8 +295,8 @@ TEST(VerifyNameMatchInvalidDataTest, FailOnInvalidPrintableStringChars) { |
} |
der.replace(replace_location, 1, 1, c); |
// Verification should fail due to the invalid character. |
- EXPECT_FALSE(VerifyNameMatch(SequenceValueFromString(der), |
- SequenceValueFromString(der))); |
+ EXPECT_FALSE(VerifyNameMatch(SequenceValueFromString(&der), |
+ SequenceValueFromString(&der))); |
} |
} |
@@ -331,8 +311,8 @@ TEST(VerifyNameMatchInvalidDataTest, FailOnInvalidIA5StringChars) { |
SCOPED_TRACE(base::IntToString(c)); |
der.replace(replace_location, 1, 1, c); |
bool expected_result = (c <= 127); |
- EXPECT_EQ(expected_result, VerifyNameMatch(SequenceValueFromString(der), |
- SequenceValueFromString(der))); |
+ EXPECT_EQ(expected_result, VerifyNameMatch(SequenceValueFromString(&der), |
+ SequenceValueFromString(&der))); |
} |
} |
@@ -342,8 +322,8 @@ TEST(VerifyNameMatchInvalidDataTest, FailOnAttributeTypeAndValueExtraData) { |
LoadTestData("invalid", "AttributeTypeAndValue", "extradata", &invalid)); |
// Verification should fail due to extra element in AttributeTypeAndValue |
// sequence. |
- EXPECT_FALSE(VerifyNameMatch(SequenceValueFromString(invalid), |
- SequenceValueFromString(invalid))); |
+ EXPECT_FALSE(VerifyNameMatch(SequenceValueFromString(&invalid), |
+ SequenceValueFromString(&invalid))); |
} |
TEST(VerifyNameMatchInvalidDataTest, FailOnAttributeTypeAndValueShort) { |
@@ -352,8 +332,8 @@ TEST(VerifyNameMatchInvalidDataTest, FailOnAttributeTypeAndValueShort) { |
&invalid)); |
// Verification should fail due to AttributeTypeAndValue sequence having only |
// one element. |
- EXPECT_FALSE(VerifyNameMatch(SequenceValueFromString(invalid), |
- SequenceValueFromString(invalid))); |
+ EXPECT_FALSE(VerifyNameMatch(SequenceValueFromString(&invalid), |
+ SequenceValueFromString(&invalid))); |
} |
TEST(VerifyNameMatchInvalidDataTest, FailOnAttributeTypeAndValueEmpty) { |
@@ -361,8 +341,8 @@ TEST(VerifyNameMatchInvalidDataTest, FailOnAttributeTypeAndValueEmpty) { |
ASSERT_TRUE( |
LoadTestData("invalid", "AttributeTypeAndValue", "empty", &invalid)); |
// Verification should fail due to empty AttributeTypeAndValue sequence. |
- EXPECT_FALSE(VerifyNameMatch(SequenceValueFromString(invalid), |
- SequenceValueFromString(invalid))); |
+ EXPECT_FALSE(VerifyNameMatch(SequenceValueFromString(&invalid), |
+ SequenceValueFromString(&invalid))); |
} |
TEST(VerifyNameMatchInvalidDataTest, FailOnBadAttributeType) { |
@@ -370,8 +350,8 @@ TEST(VerifyNameMatchInvalidDataTest, FailOnBadAttributeType) { |
ASSERT_TRUE(LoadTestData("invalid", "AttributeTypeAndValue", |
"badAttributeType", &invalid)); |
// Verification should fail due to Attribute Type not being an OID. |
- EXPECT_FALSE(VerifyNameMatch(SequenceValueFromString(invalid), |
- SequenceValueFromString(invalid))); |
+ EXPECT_FALSE(VerifyNameMatch(SequenceValueFromString(&invalid), |
+ SequenceValueFromString(&invalid))); |
} |
TEST(VerifyNameMatchInvalidDataTest, FailOnAttributeTypeAndValueNotSequence) { |
@@ -380,24 +360,24 @@ TEST(VerifyNameMatchInvalidDataTest, FailOnAttributeTypeAndValueNotSequence) { |
&invalid)); |
// Verification should fail due to AttributeTypeAndValue being a Set instead |
// of a Sequence. |
- EXPECT_FALSE(VerifyNameMatch(SequenceValueFromString(invalid), |
- SequenceValueFromString(invalid))); |
+ EXPECT_FALSE(VerifyNameMatch(SequenceValueFromString(&invalid), |
+ SequenceValueFromString(&invalid))); |
} |
TEST(VerifyNameMatchInvalidDataTest, FailOnRdnNotSet) { |
std::string invalid; |
ASSERT_TRUE(LoadTestData("invalid", "RDN", "sequenceInsteadOfSet", &invalid)); |
// Verification should fail due to RDN being a Sequence instead of a Set. |
- EXPECT_FALSE(VerifyNameMatch(SequenceValueFromString(invalid), |
- SequenceValueFromString(invalid))); |
+ EXPECT_FALSE(VerifyNameMatch(SequenceValueFromString(&invalid), |
+ SequenceValueFromString(&invalid))); |
} |
TEST(VerifyNameMatchInvalidDataTest, FailOnEmptyRdn) { |
std::string invalid; |
ASSERT_TRUE(LoadTestData("invalid", "RDN", "empty", &invalid)); |
// Verification should fail due to RDN having zero AttributeTypeAndValues. |
- EXPECT_FALSE(VerifyNameMatch(SequenceValueFromString(invalid), |
- SequenceValueFromString(invalid))); |
+ EXPECT_FALSE(VerifyNameMatch(SequenceValueFromString(&invalid), |
+ SequenceValueFromString(&invalid))); |
} |
// Matching should fail if a BMPString contains surrogates. |
@@ -412,25 +392,25 @@ TEST(VerifyNameMatchInvalidDataTest, FailOnBmpStringSurrogates) { |
std::string invalid = |
normal.replace(replace_location, 4, std::string("\xd8\x35\xdc\x00", 4)); |
// Verification should fail due to the invalid codepoints. |
- EXPECT_FALSE(VerifyNameMatch(SequenceValueFromString(invalid), |
- SequenceValueFromString(invalid))); |
+ EXPECT_FALSE(VerifyNameMatch(SequenceValueFromString(&invalid), |
+ SequenceValueFromString(&invalid))); |
} |
TEST(VerifyNameMatchTest, EmptyNameMatching) { |
std::string empty; |
ASSERT_TRUE(LoadTestData("valid", "Name", "empty", &empty)); |
// Empty names are equal. |
- EXPECT_TRUE(VerifyNameMatch(SequenceValueFromString(empty), |
- SequenceValueFromString(empty))); |
+ EXPECT_TRUE(VerifyNameMatch(SequenceValueFromString(&empty), |
+ SequenceValueFromString(&empty))); |
// An empty name is not equal to non-empty name. |
std::string non_empty; |
ASSERT_TRUE( |
LoadTestData("ascii", "PRINTABLESTRING", "unmangled", &non_empty)); |
- EXPECT_FALSE(VerifyNameMatch(SequenceValueFromString(empty), |
- SequenceValueFromString(non_empty))); |
- EXPECT_FALSE(VerifyNameMatch(SequenceValueFromString(non_empty), |
- SequenceValueFromString(empty))); |
+ EXPECT_FALSE(VerifyNameMatch(SequenceValueFromString(&empty), |
+ SequenceValueFromString(&non_empty))); |
+ EXPECT_FALSE(VerifyNameMatch(SequenceValueFromString(&non_empty), |
+ SequenceValueFromString(&empty))); |
} |
// Matching should succeed when the RDNs are sorted differently but are still |
@@ -440,10 +420,10 @@ TEST(VerifyNameMatchRDNSorting, Simple) { |
ASSERT_TRUE(LoadTestData("ascii", "PRINTABLESTRING", "rdn_sorting_1", &a)); |
std::string b; |
ASSERT_TRUE(LoadTestData("ascii", "PRINTABLESTRING", "rdn_sorting_2", &b)); |
- EXPECT_TRUE( |
- VerifyNameMatch(SequenceValueFromString(a), SequenceValueFromString(b))); |
- EXPECT_TRUE( |
- VerifyNameMatch(SequenceValueFromString(b), SequenceValueFromString(a))); |
+ EXPECT_TRUE(VerifyNameMatch(SequenceValueFromString(&a), |
+ SequenceValueFromString(&b))); |
+ EXPECT_TRUE(VerifyNameMatch(SequenceValueFromString(&b), |
+ SequenceValueFromString(&a))); |
} |
// Matching should succeed when the RDNs are sorted differently but are still |
@@ -454,10 +434,10 @@ TEST(VerifyNameMatchRDNSorting, DuplicateTypes) { |
ASSERT_TRUE(LoadTestData("ascii", "mixed", "rdn_dupetype_sorting_1", &a)); |
std::string b; |
ASSERT_TRUE(LoadTestData("ascii", "mixed", "rdn_dupetype_sorting_2", &b)); |
- EXPECT_TRUE( |
- VerifyNameMatch(SequenceValueFromString(a), SequenceValueFromString(b))); |
- EXPECT_TRUE( |
- VerifyNameMatch(SequenceValueFromString(b), SequenceValueFromString(a))); |
+ EXPECT_TRUE(VerifyNameMatch(SequenceValueFromString(&a), |
+ SequenceValueFromString(&b))); |
+ EXPECT_TRUE(VerifyNameMatch(SequenceValueFromString(&b), |
+ SequenceValueFromString(&a))); |
} |
} // namespace net |