| 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/name_constraints.h" | 5 #include "net/cert/internal/name_constraints.h" |
| 6 | 6 |
| 7 #include "net/cert/internal/test_helpers.h" | 7 #include "net/cert/internal/test_helpers.h" |
| 8 #include "testing/gtest/include/gtest/gtest.h" | 8 #include "testing/gtest/include/gtest/gtest.h" |
| 9 | 9 |
| 10 namespace net { | 10 namespace net { |
| (...skipping 175 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 186 } | 186 } |
| 187 | 187 |
| 188 TEST_P(ParseNameConstraints, DNSNamesExcludeOnly) { | 188 TEST_P(ParseNameConstraints, DNSNamesExcludeOnly) { |
| 189 std::string a; | 189 std::string a; |
| 190 ASSERT_TRUE(LoadTestNameConstraint("dnsname-excluded.pem", &a)); | 190 ASSERT_TRUE(LoadTestNameConstraint("dnsname-excluded.pem", &a)); |
| 191 | 191 |
| 192 scoped_ptr<NameConstraints> name_constraints( | 192 scoped_ptr<NameConstraints> name_constraints( |
| 193 NameConstraints::CreateFromDer(InputFromString(&a), is_critical())); | 193 NameConstraints::CreateFromDer(InputFromString(&a), is_critical())); |
| 194 ASSERT_TRUE(name_constraints); | 194 ASSERT_TRUE(name_constraints); |
| 195 | 195 |
| 196 // Only "excluded.permitted.example.com" is excluded, but since no dNSNames | 196 // Only "excluded.permitted.example.com" is excluded, and since permitted is |
| 197 // are permitted, everything is excluded. | 197 // empty, any dNSName outside that is allowed. |
| 198 EXPECT_FALSE(name_constraints->IsPermittedDNSName("")); | 198 EXPECT_TRUE(name_constraints->IsPermittedDNSName("")); |
| 199 EXPECT_FALSE(name_constraints->IsPermittedDNSName("foo.com")); | 199 EXPECT_TRUE(name_constraints->IsPermittedDNSName("foo.com")); |
| 200 EXPECT_FALSE(name_constraints->IsPermittedDNSName("permitted.example.com")); | 200 EXPECT_TRUE(name_constraints->IsPermittedDNSName("permitted.example.com")); |
| 201 EXPECT_FALSE( | 201 EXPECT_FALSE( |
| 202 name_constraints->IsPermittedDNSName("excluded.permitted.example.com")); | 202 name_constraints->IsPermittedDNSName("excluded.permitted.example.com")); |
| 203 EXPECT_FALSE( | 203 EXPECT_FALSE( |
| 204 name_constraints->IsPermittedDNSName("a.excluded.permitted.example.com")); | 204 name_constraints->IsPermittedDNSName("a.excluded.permitted.example.com")); |
| 205 } | 205 } |
| 206 | 206 |
| 207 TEST_P(ParseNameConstraints, DNSNamesExcludeAll) { | 207 TEST_P(ParseNameConstraints, DNSNamesExcludeAll) { |
| 208 std::string a; | 208 std::string a; |
| 209 ASSERT_TRUE(LoadTestNameConstraint("dnsname-excludeall.pem", &a)); | 209 ASSERT_TRUE(LoadTestNameConstraint("dnsname-excludeall.pem", &a)); |
| 210 | 210 |
| (...skipping 132 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 343 std::string name_empty; | 343 std::string name_empty; |
| 344 ASSERT_TRUE(LoadTestName("name-empty.pem", &name_empty)); | 344 ASSERT_TRUE(LoadTestName("name-empty.pem", &name_empty)); |
| 345 std::string name_us; | 345 std::string name_us; |
| 346 ASSERT_TRUE(LoadTestName("name-us.pem", &name_us)); | 346 ASSERT_TRUE(LoadTestName("name-us.pem", &name_us)); |
| 347 std::string name_us_ca; | 347 std::string name_us_ca; |
| 348 ASSERT_TRUE(LoadTestName("name-us-california.pem", &name_us_ca)); | 348 ASSERT_TRUE(LoadTestName("name-us-california.pem", &name_us_ca)); |
| 349 std::string name_us_ca_mountain_view; | 349 std::string name_us_ca_mountain_view; |
| 350 ASSERT_TRUE(LoadTestName("name-us-california-mountain_view.pem", | 350 ASSERT_TRUE(LoadTestName("name-us-california-mountain_view.pem", |
| 351 &name_us_ca_mountain_view)); | 351 &name_us_ca_mountain_view)); |
| 352 | 352 |
| 353 // Only "C=US,ST=California" is excluded, but since no directoryNames are | 353 // Only "C=US,ST=California" is excluded, and since permitted is empty, |
| 354 // permitted, everything is excluded. | 354 // any directoryName outside that is allowed. |
| 355 EXPECT_FALSE(name_constraints->IsPermittedDirectoryName( | 355 EXPECT_TRUE(name_constraints->IsPermittedDirectoryName( |
| 356 SequenceValueFromString(&name_empty))); | 356 SequenceValueFromString(&name_empty))); |
| 357 EXPECT_FALSE(name_constraints->IsPermittedDirectoryName( | 357 EXPECT_TRUE(name_constraints->IsPermittedDirectoryName( |
| 358 SequenceValueFromString(&name_us))); | 358 SequenceValueFromString(&name_us))); |
| 359 EXPECT_FALSE(name_constraints->IsPermittedDirectoryName( | 359 EXPECT_FALSE(name_constraints->IsPermittedDirectoryName( |
| 360 SequenceValueFromString(&name_us_ca))); | 360 SequenceValueFromString(&name_us_ca))); |
| 361 EXPECT_FALSE(name_constraints->IsPermittedDirectoryName( | 361 EXPECT_FALSE(name_constraints->IsPermittedDirectoryName( |
| 362 SequenceValueFromString(&name_us_ca_mountain_view))); | 362 SequenceValueFromString(&name_us_ca_mountain_view))); |
| 363 } | 363 } |
| 364 | 364 |
| 365 TEST_P(ParseNameConstraints, DirectoryNamesExcludeAll) { | 365 TEST_P(ParseNameConstraints, DirectoryNamesExcludeAll) { |
| 366 std::string constraints_der; | 366 std::string constraints_der; |
| 367 ASSERT_TRUE( | 367 ASSERT_TRUE( |
| 368 LoadTestNameConstraint("directoryname-excluded.pem", &constraints_der)); | 368 LoadTestNameConstraint("directoryname-excludeall.pem", &constraints_der)); |
| 369 scoped_ptr<NameConstraints> name_constraints(NameConstraints::CreateFromDer( | 369 scoped_ptr<NameConstraints> name_constraints(NameConstraints::CreateFromDer( |
| 370 InputFromString(&constraints_der), is_critical())); | 370 InputFromString(&constraints_der), is_critical())); |
| 371 ASSERT_TRUE(name_constraints); | 371 ASSERT_TRUE(name_constraints); |
| 372 | 372 |
| 373 std::string name_empty; | 373 std::string name_empty; |
| 374 ASSERT_TRUE(LoadTestName("name-empty.pem", &name_empty)); | 374 ASSERT_TRUE(LoadTestName("name-empty.pem", &name_empty)); |
| 375 std::string name_us; | 375 std::string name_us; |
| 376 ASSERT_TRUE(LoadTestName("name-us.pem", &name_us)); | 376 ASSERT_TRUE(LoadTestName("name-us.pem", &name_us)); |
| 377 std::string name_us_ca; | 377 std::string name_us_ca; |
| 378 ASSERT_TRUE(LoadTestName("name-us-california.pem", &name_us_ca)); | 378 ASSERT_TRUE(LoadTestName("name-us-california.pem", &name_us_ca)); |
| (...skipping 182 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 561 } | 561 } |
| 562 | 562 |
| 563 TEST_P(ParseNameConstraints, IPAdressesExcludeOnly) { | 563 TEST_P(ParseNameConstraints, IPAdressesExcludeOnly) { |
| 564 std::string a; | 564 std::string a; |
| 565 ASSERT_TRUE(LoadTestNameConstraint("ipaddress-excluded.pem", &a)); | 565 ASSERT_TRUE(LoadTestNameConstraint("ipaddress-excluded.pem", &a)); |
| 566 | 566 |
| 567 scoped_ptr<NameConstraints> name_constraints( | 567 scoped_ptr<NameConstraints> name_constraints( |
| 568 NameConstraints::CreateFromDer(InputFromString(&a), is_critical())); | 568 NameConstraints::CreateFromDer(InputFromString(&a), is_critical())); |
| 569 ASSERT_TRUE(name_constraints); | 569 ASSERT_TRUE(name_constraints); |
| 570 | 570 |
| 571 // Only 192.168.5.0/255.255.255.0 is excluded, but since no iPAddresses | 571 // Only 192.168.5.0/255.255.255.0 is excluded, and since permitted is empty, |
| 572 // are permitted, everything is excluded. | 572 // any iPAddress outside that is allowed. |
| 573 { | 573 { |
| 574 const uint8_t ip4[] = {192, 168, 0, 1}; | 574 const uint8_t ip4[] = {192, 168, 0, 1}; |
| 575 EXPECT_FALSE(name_constraints->IsPermittedIP( | 575 EXPECT_TRUE(name_constraints->IsPermittedIP( |
| 576 IPAddressNumber(ip4, ip4 + arraysize(ip4)))); | 576 IPAddressNumber(ip4, ip4 + arraysize(ip4)))); |
| 577 } | 577 } |
| 578 { | 578 { |
| 579 const uint8_t ip4[] = {192, 168, 5, 1}; | 579 const uint8_t ip4[] = {192, 168, 5, 1}; |
| 580 EXPECT_FALSE(name_constraints->IsPermittedIP( | 580 EXPECT_FALSE(name_constraints->IsPermittedIP( |
| 581 IPAddressNumber(ip4, ip4 + arraysize(ip4)))); | 581 IPAddressNumber(ip4, ip4 + arraysize(ip4)))); |
| 582 } | 582 } |
| 583 { | 583 { |
| 584 const uint8_t ip6[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 13, 0, 0, 0, 1}; | 584 const uint8_t ip6[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 13, 0, 0, 0, 1}; |
| 585 EXPECT_FALSE(name_constraints->IsPermittedIP( | 585 EXPECT_TRUE(name_constraints->IsPermittedIP( |
| 586 IPAddressNumber(ip6, ip6 + arraysize(ip6)))); | 586 IPAddressNumber(ip6, ip6 + arraysize(ip6)))); |
| 587 } | 587 } |
| 588 } | 588 } |
| 589 | 589 |
| 590 TEST_P(ParseNameConstraints, IPAdressesExcludeAll) { | 590 TEST_P(ParseNameConstraints, IPAdressesExcludeAll) { |
| 591 std::string a; | 591 std::string a; |
| 592 ASSERT_TRUE(LoadTestNameConstraint("ipaddress-excludeall.pem", &a)); | 592 ASSERT_TRUE(LoadTestNameConstraint("ipaddress-excludeall.pem", &a)); |
| 593 | 593 |
| 594 scoped_ptr<NameConstraints> name_constraints( | 594 scoped_ptr<NameConstraints> name_constraints( |
| 595 NameConstraints::CreateFromDer(InputFromString(&a), is_critical())); | 595 NameConstraints::CreateFromDer(InputFromString(&a), is_critical())); |
| (...skipping 677 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1273 SequenceValueFromString(&name_us_az_192_168_1_1), der::Input())); | 1273 SequenceValueFromString(&name_us_az_192_168_1_1), der::Input())); |
| 1274 | 1274 |
| 1275 std::string san; | 1275 std::string san; |
| 1276 ASSERT_TRUE(LoadTestSubjectAltName("san-invalid-ipaddress.pem", &san)); | 1276 ASSERT_TRUE(LoadTestSubjectAltName("san-invalid-ipaddress.pem", &san)); |
| 1277 // Should fail if subjectAltName contains an invalid ip address. | 1277 // Should fail if subjectAltName contains an invalid ip address. |
| 1278 EXPECT_FALSE(name_constraints->IsPermittedCert( | 1278 EXPECT_FALSE(name_constraints->IsPermittedCert( |
| 1279 SequenceValueFromString(&name_us_az_192_168_1_1), InputFromString(&san))); | 1279 SequenceValueFromString(&name_us_az_192_168_1_1), InputFromString(&san))); |
| 1280 } | 1280 } |
| 1281 | 1281 |
| 1282 } // namespace net | 1282 } // namespace net |
| OLD | NEW |