Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(166)

Unified Diff: net/cert/internal/verify_name_match_unittest.cc

Issue 1214933009: Class for parsing and evaluating RFC 5280 NameConstraints. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@compare_DN2
Patch Set: use test_helpers.h Created 5 years, 4 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
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 667581273c3239abc862b7b11e8b143fcdebdef3..7e3821b2ae51b02b972a3531a7411bd17a25b26a 100644
--- a/net/cert/internal/verify_name_match_unittest.cc
+++ b/net/cert/internal/verify_name_match_unittest.cc
@@ -213,6 +213,58 @@ TEST_P(VerifyNameMatchDifferingTypesTest, NormalizableTypesAreEqual) {
}
}
+TEST_P(VerifyNameMatchDifferingTypesTest, NormalizableTypesInSubtrees) {
+ std::string der_1;
+ ASSERT_TRUE(LoadTestData("ascii", value_type_1(), "unmangled", &der_1));
+ std::string der_1_extra_rdn;
+ ASSERT_TRUE(LoadTestData("ascii", value_type_1(), "unmangled-extra_rdn",
+ &der_1_extra_rdn));
+ std::string der_1_extra_attr;
+ ASSERT_TRUE(LoadTestData("ascii", value_type_1(), "unmangled-extra_attr",
+ &der_1_extra_attr));
+ std::string der_2;
+ ASSERT_TRUE(LoadTestData("ascii", value_type_2(), "unmangled", &der_2));
+ std::string der_2_extra_rdn;
+ ASSERT_TRUE(LoadTestData("ascii", value_type_2(), "unmangled-extra_rdn",
+ &der_2_extra_rdn));
+ std::string der_2_extra_attr;
+ ASSERT_TRUE(LoadTestData("ascii", value_type_2(), "unmangled-extra_attr",
+ &der_2_extra_attr));
+
+ if (TypesAreComparable(value_type_1(), value_type_2())) {
+ EXPECT_TRUE(VerifyNameInSubtree(SequenceValueFromString(&der_1),
+ SequenceValueFromString(&der_2)));
+ EXPECT_TRUE(VerifyNameInSubtree(SequenceValueFromString(&der_2),
+ SequenceValueFromString(&der_1)));
+ EXPECT_TRUE(VerifyNameInSubtree(SequenceValueFromString(&der_1_extra_rdn),
+ SequenceValueFromString(&der_2)));
+ EXPECT_TRUE(VerifyNameInSubtree(SequenceValueFromString(&der_2_extra_rdn),
+ SequenceValueFromString(&der_1)));
+ } else {
+ EXPECT_FALSE(VerifyNameInSubtree(SequenceValueFromString(&der_1),
+ SequenceValueFromString(&der_2)));
+ EXPECT_FALSE(VerifyNameInSubtree(SequenceValueFromString(&der_2),
+ SequenceValueFromString(&der_1)));
+ EXPECT_FALSE(VerifyNameInSubtree(SequenceValueFromString(&der_1_extra_rdn),
+ SequenceValueFromString(&der_2)));
+ EXPECT_FALSE(VerifyNameInSubtree(SequenceValueFromString(&der_2_extra_rdn),
+ SequenceValueFromString(&der_1)));
+ }
+
+ EXPECT_FALSE(VerifyNameInSubtree(SequenceValueFromString(&der_1),
+ SequenceValueFromString(&der_2_extra_rdn)));
+ EXPECT_FALSE(VerifyNameInSubtree(SequenceValueFromString(&der_2),
+ SequenceValueFromString(&der_1_extra_rdn)));
+ EXPECT_FALSE(VerifyNameInSubtree(SequenceValueFromString(&der_1_extra_attr),
+ SequenceValueFromString(&der_2)));
+ EXPECT_FALSE(VerifyNameInSubtree(SequenceValueFromString(&der_2_extra_attr),
+ SequenceValueFromString(&der_1)));
+ EXPECT_FALSE(VerifyNameInSubtree(SequenceValueFromString(&der_1),
+ SequenceValueFromString(&der_2_extra_attr)));
+ EXPECT_FALSE(VerifyNameInSubtree(SequenceValueFromString(&der_2),
+ SequenceValueFromString(&der_1_extra_attr)));
+}
+
// Runs VerifyNameMatchDifferingTypesTest for all combinations of value types in
// value_type1 and value_type_2.
INSTANTIATE_TEST_CASE_P(InstantiationName,
@@ -440,4 +492,36 @@ TEST(VerifyNameMatchRDNSorting, DuplicateTypes) {
SequenceValueFromString(&a)));
}
+TEST(VerifyNameInSubtreeInvalidDataTest, FailOnEmptyRdn) {
+ std::string valid;
+ ASSERT_TRUE(LoadTestData("ascii", "PRINTABLESTRING", "unmangled", &valid));
+ std::string invalid;
+ ASSERT_TRUE(LoadTestData("invalid", "RDN", "empty", &invalid));
+ // For both |name| and |parent|, a RelativeDistinguishedName must have at
+ // least one AttributeTypeAndValue.
+ EXPECT_FALSE(VerifyNameInSubtree(SequenceValueFromString(&valid),
+ SequenceValueFromString(&invalid)));
+ EXPECT_FALSE(VerifyNameInSubtree(SequenceValueFromString(&invalid),
+ SequenceValueFromString(&valid)));
+ EXPECT_FALSE(VerifyNameInSubtree(SequenceValueFromString(&invalid),
+ SequenceValueFromString(&invalid)));
+}
+
+TEST(VerifyNameInSubtreeTest, EmptyNameMatching) {
+ std::string empty;
+ ASSERT_TRUE(LoadTestData("valid", "Name", "empty", &empty));
+ std::string non_empty;
+ ASSERT_TRUE(
+ LoadTestData("ascii", "PRINTABLESTRING", "unmangled", &non_empty));
+ // Empty name is in the subtree defined by empty name.
+ EXPECT_TRUE(VerifyNameInSubtree(SequenceValueFromString(&empty),
+ SequenceValueFromString(&empty)));
+ // Any non-empty name is in the subtree defined by empty name.
+ EXPECT_TRUE(VerifyNameInSubtree(SequenceValueFromString(&non_empty),
+ SequenceValueFromString(&empty)));
+ // Empty name is not in the subtree defined by non-empty name.
+ EXPECT_FALSE(VerifyNameInSubtree(SequenceValueFromString(&empty),
+ SequenceValueFromString(&non_empty)));
+}
+
} // namespace net

Powered by Google App Engine
This is Rietveld 408576698