| OLD | NEW |
| 1 // Copyright 2015 The Chromium Authors. All rights reserved. | 1 // Copyright 2015 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #include "net/cert/internal/verify_name_match.h" | 5 #include "net/cert/internal/verify_name_match.h" |
| 6 | 6 |
| 7 #include "base/base_paths.h" | 7 #include "base/base_paths.h" |
| 8 #include "base/files/file_path.h" | 8 #include "base/files/file_path.h" |
| 9 #include "base/files/file_util.h" | 9 #include "base/files/file_util.h" |
| 10 #include "base/path_service.h" | 10 #include "base/path_service.h" |
| (...skipping 215 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 226 ASSERT_TRUE(LoadTestData("ascii", value_type_2(), "unmangled", &der_2)); | 226 ASSERT_TRUE(LoadTestData("ascii", value_type_2(), "unmangled", &der_2)); |
| 227 if (TypesAreComparable(value_type_1(), value_type_2())) { | 227 if (TypesAreComparable(value_type_1(), value_type_2())) { |
| 228 EXPECT_TRUE(VerifyNameMatch(SequenceValueFromString(der_1), | 228 EXPECT_TRUE(VerifyNameMatch(SequenceValueFromString(der_1), |
| 229 SequenceValueFromString(der_2))); | 229 SequenceValueFromString(der_2))); |
| 230 } else { | 230 } else { |
| 231 EXPECT_FALSE(VerifyNameMatch(SequenceValueFromString(der_1), | 231 EXPECT_FALSE(VerifyNameMatch(SequenceValueFromString(der_1), |
| 232 SequenceValueFromString(der_2))); | 232 SequenceValueFromString(der_2))); |
| 233 } | 233 } |
| 234 } | 234 } |
| 235 | 235 |
| 236 TEST_P(VerifyNameMatchDifferingTypesTest, NormalizableTypesInSubtrees) { |
| 237 std::string der_1; |
| 238 ASSERT_TRUE(LoadTestData("ascii", value_type_1(), "unmangled", &der_1)); |
| 239 std::string der_1_extra_rdn; |
| 240 ASSERT_TRUE(LoadTestData("ascii", value_type_1(), "unmangled-extra_rdn", |
| 241 &der_1_extra_rdn)); |
| 242 std::string der_1_extra_attr; |
| 243 ASSERT_TRUE(LoadTestData("ascii", value_type_1(), "unmangled-extra_attr", |
| 244 &der_1_extra_attr)); |
| 245 std::string der_2; |
| 246 ASSERT_TRUE(LoadTestData("ascii", value_type_2(), "unmangled", &der_2)); |
| 247 std::string der_2_extra_rdn; |
| 248 ASSERT_TRUE(LoadTestData("ascii", value_type_2(), "unmangled-extra_rdn", |
| 249 &der_2_extra_rdn)); |
| 250 std::string der_2_extra_attr; |
| 251 ASSERT_TRUE(LoadTestData("ascii", value_type_2(), "unmangled-extra_attr", |
| 252 &der_2_extra_attr)); |
| 253 |
| 254 if (TypesAreComparable(value_type_1(), value_type_2())) { |
| 255 EXPECT_TRUE(VerifyNameInSubtree(SequenceValueFromString(der_1), |
| 256 SequenceValueFromString(der_2))); |
| 257 EXPECT_TRUE(VerifyNameInSubtree(SequenceValueFromString(der_2), |
| 258 SequenceValueFromString(der_1))); |
| 259 EXPECT_TRUE(VerifyNameInSubtree(SequenceValueFromString(der_1_extra_rdn), |
| 260 SequenceValueFromString(der_2))); |
| 261 EXPECT_TRUE(VerifyNameInSubtree(SequenceValueFromString(der_2_extra_rdn), |
| 262 SequenceValueFromString(der_1))); |
| 263 } else { |
| 264 EXPECT_FALSE(VerifyNameInSubtree(SequenceValueFromString(der_1), |
| 265 SequenceValueFromString(der_2))); |
| 266 EXPECT_FALSE(VerifyNameInSubtree(SequenceValueFromString(der_2), |
| 267 SequenceValueFromString(der_1))); |
| 268 EXPECT_FALSE(VerifyNameInSubtree(SequenceValueFromString(der_1_extra_rdn), |
| 269 SequenceValueFromString(der_2))); |
| 270 EXPECT_FALSE(VerifyNameInSubtree(SequenceValueFromString(der_2_extra_rdn), |
| 271 SequenceValueFromString(der_1))); |
| 272 } |
| 273 |
| 274 EXPECT_FALSE(VerifyNameInSubtree(SequenceValueFromString(der_1), |
| 275 SequenceValueFromString(der_2_extra_rdn))); |
| 276 EXPECT_FALSE(VerifyNameInSubtree(SequenceValueFromString(der_2), |
| 277 SequenceValueFromString(der_1_extra_rdn))); |
| 278 EXPECT_FALSE(VerifyNameInSubtree(SequenceValueFromString(der_1_extra_attr), |
| 279 SequenceValueFromString(der_2))); |
| 280 EXPECT_FALSE(VerifyNameInSubtree(SequenceValueFromString(der_2_extra_attr), |
| 281 SequenceValueFromString(der_1))); |
| 282 EXPECT_FALSE(VerifyNameInSubtree(SequenceValueFromString(der_1), |
| 283 SequenceValueFromString(der_2_extra_attr))); |
| 284 EXPECT_FALSE(VerifyNameInSubtree(SequenceValueFromString(der_2), |
| 285 SequenceValueFromString(der_1_extra_attr))); |
| 286 } |
| 287 |
| 236 // Runs VerifyNameMatchDifferingTypesTest for all combinations of value types in | 288 // Runs VerifyNameMatchDifferingTypesTest for all combinations of value types in |
| 237 // value_type1 and value_type_2. | 289 // value_type1 and value_type_2. |
| 238 INSTANTIATE_TEST_CASE_P(InstantiationName, | 290 INSTANTIATE_TEST_CASE_P(InstantiationName, |
| 239 VerifyNameMatchDifferingTypesTest, | 291 VerifyNameMatchDifferingTypesTest, |
| 240 ::testing::Combine(::testing::ValuesIn(kValueTypes), | 292 ::testing::Combine(::testing::ValuesIn(kValueTypes), |
| 241 ::testing::ValuesIn(kValueTypes))); | 293 ::testing::ValuesIn(kValueTypes))); |
| 242 | 294 |
| 243 class VerifyNameMatchUnicodeConversionTest | 295 class VerifyNameMatchUnicodeConversionTest |
| 244 : public ::testing::TestWithParam< | 296 : public ::testing::TestWithParam< |
| 245 ::testing::tuple<const char*, | 297 ::testing::tuple<const char*, |
| (...skipping 207 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 453 std::string a; | 505 std::string a; |
| 454 ASSERT_TRUE(LoadTestData("ascii", "mixed", "rdn_dupetype_sorting_1", &a)); | 506 ASSERT_TRUE(LoadTestData("ascii", "mixed", "rdn_dupetype_sorting_1", &a)); |
| 455 std::string b; | 507 std::string b; |
| 456 ASSERT_TRUE(LoadTestData("ascii", "mixed", "rdn_dupetype_sorting_2", &b)); | 508 ASSERT_TRUE(LoadTestData("ascii", "mixed", "rdn_dupetype_sorting_2", &b)); |
| 457 EXPECT_TRUE( | 509 EXPECT_TRUE( |
| 458 VerifyNameMatch(SequenceValueFromString(a), SequenceValueFromString(b))); | 510 VerifyNameMatch(SequenceValueFromString(a), SequenceValueFromString(b))); |
| 459 EXPECT_TRUE( | 511 EXPECT_TRUE( |
| 460 VerifyNameMatch(SequenceValueFromString(b), SequenceValueFromString(a))); | 512 VerifyNameMatch(SequenceValueFromString(b), SequenceValueFromString(a))); |
| 461 } | 513 } |
| 462 | 514 |
| 515 TEST(VerifyNameInSubtreeInvalidDataTest, FailOnEmptyRdn) { |
| 516 std::string valid; |
| 517 ASSERT_TRUE(LoadTestData("ascii", "PRINTABLESTRING", "unmangled", &valid)); |
| 518 std::string invalid; |
| 519 ASSERT_TRUE(LoadTestData("invalid", "RDN", "empty", &invalid)); |
| 520 // For both |name| and |parent|, a RelativeDistinguishedName must have at |
| 521 // least one AttributeTypeAndValue. |
| 522 EXPECT_FALSE(VerifyNameInSubtree(SequenceValueFromString(valid), |
| 523 SequenceValueFromString(invalid))); |
| 524 EXPECT_FALSE(VerifyNameInSubtree(SequenceValueFromString(invalid), |
| 525 SequenceValueFromString(valid))); |
| 526 EXPECT_FALSE(VerifyNameInSubtree(SequenceValueFromString(invalid), |
| 527 SequenceValueFromString(invalid))); |
| 528 } |
| 529 |
| 530 TEST(VerifyNameInSubtreeTest, EmptyNameMatching) { |
| 531 std::string empty; |
| 532 ASSERT_TRUE(LoadTestData("valid", "Name", "empty", &empty)); |
| 533 std::string non_empty; |
| 534 ASSERT_TRUE( |
| 535 LoadTestData("ascii", "PRINTABLESTRING", "unmangled", &non_empty)); |
| 536 // Empty name is in the subtree defined by empty name. |
| 537 EXPECT_TRUE(VerifyNameInSubtree(SequenceValueFromString(empty), |
| 538 SequenceValueFromString(empty))); |
| 539 // Any non-empty name is in the subtree defined by empty name. |
| 540 EXPECT_TRUE(VerifyNameInSubtree(SequenceValueFromString(non_empty), |
| 541 SequenceValueFromString(empty))); |
| 542 // Empty name is not in the subtree defined by non-empty name. |
| 543 EXPECT_FALSE(VerifyNameInSubtree(SequenceValueFromString(empty), |
| 544 SequenceValueFromString(non_empty))); |
| 545 } |
| 546 |
| 463 } // namespace net | 547 } // namespace net |
| OLD | NEW |