| 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 105 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 116 EXPECT_TRUE(name_constraints->IsPermittedDNSName("permitted.example3.com.")); | 116 EXPECT_TRUE(name_constraints->IsPermittedDNSName("permitted.example3.com.")); |
| 117 EXPECT_TRUE(name_constraints->IsPermittedDNSName("a.permitted.example3.com")); | 117 EXPECT_TRUE(name_constraints->IsPermittedDNSName("a.permitted.example3.com")); |
| 118 EXPECT_TRUE( | 118 EXPECT_TRUE( |
| 119 name_constraints->IsPermittedDNSName("a.permitted.example3.com.")); | 119 name_constraints->IsPermittedDNSName("a.permitted.example3.com.")); |
| 120 | 120 |
| 121 EXPECT_EQ(GENERAL_NAME_DNS_NAME, name_constraints->ConstrainedNameTypes()); | 121 EXPECT_EQ(GENERAL_NAME_DNS_NAME, name_constraints->ConstrainedNameTypes()); |
| 122 | 122 |
| 123 std::string san; | 123 std::string san; |
| 124 ASSERT_TRUE(LoadTestSubjectAltName("san-permitted.pem", &san)); | 124 ASSERT_TRUE(LoadTestSubjectAltName("san-permitted.pem", &san)); |
| 125 EXPECT_TRUE( | 125 EXPECT_TRUE( |
| 126 name_constraints->IsPermittedCert(der::Input(), der::Input(&san))); | 126 name_constraints->IsPermittedCert(der::Input(), true, der::Input(&san))); |
| 127 | 127 |
| 128 ASSERT_TRUE(LoadTestSubjectAltName("san-excluded-dnsname.pem", &san)); | 128 ASSERT_TRUE(LoadTestSubjectAltName("san-excluded-dnsname.pem", &san)); |
| 129 EXPECT_FALSE( | 129 EXPECT_FALSE( |
| 130 name_constraints->IsPermittedCert(der::Input(), der::Input(&san))); | 130 name_constraints->IsPermittedCert(der::Input(), true, der::Input(&san))); |
| 131 | 131 |
| 132 ASSERT_TRUE(LoadTestSubjectAltName("san-excluded-directoryname.pem", &san)); | 132 ASSERT_TRUE(LoadTestSubjectAltName("san-excluded-directoryname.pem", &san)); |
| 133 EXPECT_TRUE( | 133 EXPECT_TRUE( |
| 134 name_constraints->IsPermittedCert(der::Input(), der::Input(&san))); | 134 name_constraints->IsPermittedCert(der::Input(), true, der::Input(&san))); |
| 135 | 135 |
| 136 ASSERT_TRUE(LoadTestSubjectAltName("san-excluded-ipaddress.pem", &san)); | 136 ASSERT_TRUE(LoadTestSubjectAltName("san-excluded-ipaddress.pem", &san)); |
| 137 EXPECT_TRUE( | 137 EXPECT_TRUE( |
| 138 name_constraints->IsPermittedCert(der::Input(), der::Input(&san))); | 138 name_constraints->IsPermittedCert(der::Input(), true, der::Input(&san))); |
| 139 } | 139 } |
| 140 | 140 |
| 141 TEST_P(ParseNameConstraints, | 141 TEST_P(ParseNameConstraints, |
| 142 DNSNamesWithMultipleLevelsBetweenExcludedAndPermitted) { | 142 DNSNamesWithMultipleLevelsBetweenExcludedAndPermitted) { |
| 143 std::string a; | 143 std::string a; |
| 144 ASSERT_TRUE(LoadTestNameConstraint("dnsname2.pem", &a)); | 144 ASSERT_TRUE(LoadTestNameConstraint("dnsname2.pem", &a)); |
| 145 scoped_ptr<NameConstraints> name_constraints( | 145 scoped_ptr<NameConstraints> name_constraints( |
| 146 NameConstraints::CreateFromDer(der::Input(&a), is_critical())); | 146 NameConstraints::CreateFromDer(der::Input(&a), is_critical())); |
| 147 ASSERT_TRUE(name_constraints); | 147 ASSERT_TRUE(name_constraints); |
| 148 | 148 |
| (...skipping 151 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 300 SequenceValueFromString(&name_jp))); | 300 SequenceValueFromString(&name_jp))); |
| 301 // Within the permitted C=JP,ST=Tokyo subtree. | 301 // Within the permitted C=JP,ST=Tokyo subtree. |
| 302 EXPECT_TRUE(name_constraints->IsPermittedDirectoryName( | 302 EXPECT_TRUE(name_constraints->IsPermittedDirectoryName( |
| 303 SequenceValueFromString(&name_jp_tokyo))); | 303 SequenceValueFromString(&name_jp_tokyo))); |
| 304 | 304 |
| 305 EXPECT_EQ(GENERAL_NAME_DIRECTORY_NAME, | 305 EXPECT_EQ(GENERAL_NAME_DIRECTORY_NAME, |
| 306 name_constraints->ConstrainedNameTypes()); | 306 name_constraints->ConstrainedNameTypes()); |
| 307 | 307 |
| 308 // Within the permitted C=US subtree. | 308 // Within the permitted C=US subtree. |
| 309 EXPECT_TRUE(name_constraints->IsPermittedCert( | 309 EXPECT_TRUE(name_constraints->IsPermittedCert( |
| 310 SequenceValueFromString(&name_us), der::Input())); | 310 SequenceValueFromString(&name_us), false, der::Input())); |
| 311 // Within the permitted C=US subtree, however the excluded C=US,ST=California | 311 // Within the permitted C=US subtree, however the excluded C=US,ST=California |
| 312 // subtree takes priority. | 312 // subtree takes priority. |
| 313 EXPECT_FALSE(name_constraints->IsPermittedCert( | 313 EXPECT_FALSE(name_constraints->IsPermittedCert( |
| 314 SequenceValueFromString(&name_us_ca), der::Input())); | 314 SequenceValueFromString(&name_us_ca), false, der::Input())); |
| 315 | 315 |
| 316 std::string san; | 316 std::string san; |
| 317 ASSERT_TRUE(LoadTestSubjectAltName("san-permitted.pem", &san)); | 317 ASSERT_TRUE(LoadTestSubjectAltName("san-permitted.pem", &san)); |
| 318 EXPECT_TRUE( | 318 EXPECT_TRUE( |
| 319 name_constraints->IsPermittedCert(der::Input(), der::Input(&san))); | 319 name_constraints->IsPermittedCert(der::Input(), true, der::Input(&san))); |
| 320 | 320 |
| 321 ASSERT_TRUE(LoadTestSubjectAltName("san-excluded-dnsname.pem", &san)); | 321 ASSERT_TRUE(LoadTestSubjectAltName("san-excluded-dnsname.pem", &san)); |
| 322 EXPECT_TRUE( | 322 EXPECT_TRUE( |
| 323 name_constraints->IsPermittedCert(der::Input(), der::Input(&san))); | 323 name_constraints->IsPermittedCert(der::Input(), true, der::Input(&san))); |
| 324 | 324 |
| 325 ASSERT_TRUE(LoadTestSubjectAltName("san-excluded-directoryname.pem", &san)); | 325 ASSERT_TRUE(LoadTestSubjectAltName("san-excluded-directoryname.pem", &san)); |
| 326 EXPECT_FALSE( | 326 EXPECT_FALSE( |
| 327 name_constraints->IsPermittedCert(der::Input(), der::Input(&san))); | 327 name_constraints->IsPermittedCert(der::Input(), true, der::Input(&san))); |
| 328 | 328 |
| 329 ASSERT_TRUE(LoadTestSubjectAltName("san-excluded-ipaddress.pem", &san)); | 329 ASSERT_TRUE(LoadTestSubjectAltName("san-excluded-ipaddress.pem", &san)); |
| 330 EXPECT_TRUE( | 330 EXPECT_TRUE( |
| 331 name_constraints->IsPermittedCert(der::Input(), der::Input(&san))); | 331 name_constraints->IsPermittedCert(der::Input(), true, der::Input(&san))); |
| 332 } | 332 } |
| 333 | 333 |
| 334 TEST_P(ParseNameConstraints, DirectoryNamesExcludeOnly) { | 334 TEST_P(ParseNameConstraints, DirectoryNamesExcludeOnly) { |
| 335 std::string constraints_der; | 335 std::string constraints_der; |
| 336 ASSERT_TRUE( | 336 ASSERT_TRUE( |
| 337 LoadTestNameConstraint("directoryname-excluded.pem", &constraints_der)); | 337 LoadTestNameConstraint("directoryname-excluded.pem", &constraints_der)); |
| 338 scoped_ptr<NameConstraints> name_constraints(NameConstraints::CreateFromDer( | 338 scoped_ptr<NameConstraints> name_constraints(NameConstraints::CreateFromDer( |
| 339 der::Input(&constraints_der), is_critical())); | 339 der::Input(&constraints_der), is_critical())); |
| 340 ASSERT_TRUE(name_constraints); | 340 ASSERT_TRUE(name_constraints); |
| 341 | 341 |
| (...skipping 195 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 537 const uint8_t ip6[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 10, 5, 33, 0, 1}; | 537 const uint8_t ip6[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 10, 5, 33, 0, 1}; |
| 538 EXPECT_FALSE(name_constraints->IsPermittedIP( | 538 EXPECT_FALSE(name_constraints->IsPermittedIP( |
| 539 IPAddressNumber(ip6, ip6 + arraysize(ip6)))); | 539 IPAddressNumber(ip6, ip6 + arraysize(ip6)))); |
| 540 } | 540 } |
| 541 | 541 |
| 542 EXPECT_EQ(GENERAL_NAME_IP_ADDRESS, name_constraints->ConstrainedNameTypes()); | 542 EXPECT_EQ(GENERAL_NAME_IP_ADDRESS, name_constraints->ConstrainedNameTypes()); |
| 543 | 543 |
| 544 std::string san; | 544 std::string san; |
| 545 ASSERT_TRUE(LoadTestSubjectAltName("san-permitted.pem", &san)); | 545 ASSERT_TRUE(LoadTestSubjectAltName("san-permitted.pem", &san)); |
| 546 EXPECT_TRUE( | 546 EXPECT_TRUE( |
| 547 name_constraints->IsPermittedCert(der::Input(), der::Input(&san))); | 547 name_constraints->IsPermittedCert(der::Input(), true, der::Input(&san))); |
| 548 | 548 |
| 549 ASSERT_TRUE(LoadTestSubjectAltName("san-excluded-dnsname.pem", &san)); | 549 ASSERT_TRUE(LoadTestSubjectAltName("san-excluded-dnsname.pem", &san)); |
| 550 EXPECT_TRUE( | 550 EXPECT_TRUE( |
| 551 name_constraints->IsPermittedCert(der::Input(), der::Input(&san))); | 551 name_constraints->IsPermittedCert(der::Input(), true, der::Input(&san))); |
| 552 | 552 |
| 553 ASSERT_TRUE(LoadTestSubjectAltName("san-excluded-directoryname.pem", &san)); | 553 ASSERT_TRUE(LoadTestSubjectAltName("san-excluded-directoryname.pem", &san)); |
| 554 EXPECT_TRUE( | 554 EXPECT_TRUE( |
| 555 name_constraints->IsPermittedCert(der::Input(), der::Input(&san))); | 555 name_constraints->IsPermittedCert(der::Input(), true, der::Input(&san))); |
| 556 | 556 |
| 557 ASSERT_TRUE(LoadTestSubjectAltName("san-excluded-ipaddress.pem", &san)); | 557 ASSERT_TRUE(LoadTestSubjectAltName("san-excluded-ipaddress.pem", &san)); |
| 558 EXPECT_FALSE( | 558 EXPECT_FALSE( |
| 559 name_constraints->IsPermittedCert(der::Input(), der::Input(&san))); | 559 name_constraints->IsPermittedCert(der::Input(), true, der::Input(&san))); |
| 560 } | 560 } |
| 561 | 561 |
| 562 TEST_P(ParseNameConstraints, IPAdressesExcludeOnly) { | 562 TEST_P(ParseNameConstraints, IPAdressesExcludeOnly) { |
| 563 std::string a; | 563 std::string a; |
| 564 ASSERT_TRUE(LoadTestNameConstraint("ipaddress-excluded.pem", &a)); | 564 ASSERT_TRUE(LoadTestNameConstraint("ipaddress-excluded.pem", &a)); |
| 565 | 565 |
| 566 scoped_ptr<NameConstraints> name_constraints( | 566 scoped_ptr<NameConstraints> name_constraints( |
| 567 NameConstraints::CreateFromDer(der::Input(&a), is_critical())); | 567 NameConstraints::CreateFromDer(der::Input(&a), is_critical())); |
| 568 ASSERT_TRUE(name_constraints); | 568 ASSERT_TRUE(name_constraints); |
| 569 | 569 |
| (...skipping 225 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 795 | 795 |
| 796 if (is_critical()) { | 796 if (is_critical()) { |
| 797 EXPECT_EQ(GENERAL_NAME_OTHER_NAME, | 797 EXPECT_EQ(GENERAL_NAME_OTHER_NAME, |
| 798 name_constraints->ConstrainedNameTypes()); | 798 name_constraints->ConstrainedNameTypes()); |
| 799 } else { | 799 } else { |
| 800 EXPECT_EQ(0, name_constraints->ConstrainedNameTypes()); | 800 EXPECT_EQ(0, name_constraints->ConstrainedNameTypes()); |
| 801 } | 801 } |
| 802 | 802 |
| 803 std::string san; | 803 std::string san; |
| 804 ASSERT_TRUE(LoadTestSubjectAltName("san-othername.pem", &san)); | 804 ASSERT_TRUE(LoadTestSubjectAltName("san-othername.pem", &san)); |
| 805 EXPECT_EQ(!is_critical(), | 805 EXPECT_EQ(!is_critical(), name_constraints->IsPermittedCert( |
| 806 name_constraints->IsPermittedCert(der::Input(), der::Input(&san))); | 806 der::Input(), true, der::Input(&san))); |
| 807 } | 807 } |
| 808 | 808 |
| 809 TEST_P(ParseNameConstraints, OtherNamesInExcluded) { | 809 TEST_P(ParseNameConstraints, OtherNamesInExcluded) { |
| 810 std::string constraints_der; | 810 std::string constraints_der; |
| 811 ASSERT_TRUE( | 811 ASSERT_TRUE( |
| 812 LoadTestNameConstraint("othername-excluded.pem", &constraints_der)); | 812 LoadTestNameConstraint("othername-excluded.pem", &constraints_der)); |
| 813 scoped_ptr<NameConstraints> name_constraints(NameConstraints::CreateFromDer( | 813 scoped_ptr<NameConstraints> name_constraints(NameConstraints::CreateFromDer( |
| 814 der::Input(&constraints_der), is_critical())); | 814 der::Input(&constraints_der), is_critical())); |
| 815 ASSERT_TRUE(name_constraints); | 815 ASSERT_TRUE(name_constraints); |
| 816 | 816 |
| 817 if (is_critical()) { | 817 if (is_critical()) { |
| 818 EXPECT_EQ(GENERAL_NAME_OTHER_NAME, | 818 EXPECT_EQ(GENERAL_NAME_OTHER_NAME, |
| 819 name_constraints->ConstrainedNameTypes()); | 819 name_constraints->ConstrainedNameTypes()); |
| 820 } else { | 820 } else { |
| 821 EXPECT_EQ(0, name_constraints->ConstrainedNameTypes()); | 821 EXPECT_EQ(0, name_constraints->ConstrainedNameTypes()); |
| 822 } | 822 } |
| 823 | 823 |
| 824 std::string san; | 824 std::string san; |
| 825 ASSERT_TRUE(LoadTestSubjectAltName("san-othername.pem", &san)); | 825 ASSERT_TRUE(LoadTestSubjectAltName("san-othername.pem", &san)); |
| 826 EXPECT_EQ(!is_critical(), | 826 EXPECT_EQ(!is_critical(), name_constraints->IsPermittedCert( |
| 827 name_constraints->IsPermittedCert(der::Input(), der::Input(&san))); | 827 der::Input(), true, der::Input(&san))); |
| 828 } | 828 } |
| 829 | 829 |
| 830 TEST_P(ParseNameConstraints, Rfc822NamesInPermitted) { | 830 TEST_P(ParseNameConstraints, Rfc822NamesInPermitted) { |
| 831 std::string constraints_der; | 831 std::string constraints_der; |
| 832 ASSERT_TRUE( | 832 ASSERT_TRUE( |
| 833 LoadTestNameConstraint("rfc822name-permitted.pem", &constraints_der)); | 833 LoadTestNameConstraint("rfc822name-permitted.pem", &constraints_der)); |
| 834 scoped_ptr<NameConstraints> name_constraints(NameConstraints::CreateFromDer( | 834 scoped_ptr<NameConstraints> name_constraints(NameConstraints::CreateFromDer( |
| 835 der::Input(&constraints_der), is_critical())); | 835 der::Input(&constraints_der), is_critical())); |
| 836 ASSERT_TRUE(name_constraints); | 836 ASSERT_TRUE(name_constraints); |
| 837 | 837 |
| 838 if (is_critical()) { | 838 if (is_critical()) { |
| 839 EXPECT_EQ(GENERAL_NAME_RFC822_NAME, | 839 EXPECT_EQ(GENERAL_NAME_RFC822_NAME, |
| 840 name_constraints->ConstrainedNameTypes()); | 840 name_constraints->ConstrainedNameTypes()); |
| 841 } else { | 841 } else { |
| 842 EXPECT_EQ(0, name_constraints->ConstrainedNameTypes()); | 842 EXPECT_EQ(0, name_constraints->ConstrainedNameTypes()); |
| 843 } | 843 } |
| 844 | 844 |
| 845 std::string san; | 845 std::string san; |
| 846 ASSERT_TRUE(LoadTestSubjectAltName("san-rfc822name.pem", &san)); | 846 ASSERT_TRUE(LoadTestSubjectAltName("san-rfc822name.pem", &san)); |
| 847 EXPECT_EQ(!is_critical(), | 847 EXPECT_EQ(!is_critical(), name_constraints->IsPermittedCert( |
| 848 name_constraints->IsPermittedCert(der::Input(), der::Input(&san))); | 848 der::Input(), true, der::Input(&san))); |
| 849 } | 849 } |
| 850 | 850 |
| 851 TEST_P(ParseNameConstraints, Rfc822NamesInExcluded) { | 851 TEST_P(ParseNameConstraints, Rfc822NamesInExcluded) { |
| 852 std::string constraints_der; | 852 std::string constraints_der; |
| 853 ASSERT_TRUE( | 853 ASSERT_TRUE( |
| 854 LoadTestNameConstraint("rfc822name-excluded.pem", &constraints_der)); | 854 LoadTestNameConstraint("rfc822name-excluded.pem", &constraints_der)); |
| 855 scoped_ptr<NameConstraints> name_constraints(NameConstraints::CreateFromDer( | 855 scoped_ptr<NameConstraints> name_constraints(NameConstraints::CreateFromDer( |
| 856 der::Input(&constraints_der), is_critical())); | 856 der::Input(&constraints_der), is_critical())); |
| 857 ASSERT_TRUE(name_constraints); | 857 ASSERT_TRUE(name_constraints); |
| 858 | 858 |
| 859 if (is_critical()) { | 859 if (is_critical()) { |
| 860 EXPECT_EQ(GENERAL_NAME_RFC822_NAME, | 860 EXPECT_EQ(GENERAL_NAME_RFC822_NAME, |
| 861 name_constraints->ConstrainedNameTypes()); | 861 name_constraints->ConstrainedNameTypes()); |
| 862 } else { | 862 } else { |
| 863 EXPECT_EQ(0, name_constraints->ConstrainedNameTypes()); | 863 EXPECT_EQ(0, name_constraints->ConstrainedNameTypes()); |
| 864 } | 864 } |
| 865 | 865 |
| 866 std::string san; | 866 std::string san; |
| 867 ASSERT_TRUE(LoadTestSubjectAltName("san-rfc822name.pem", &san)); | 867 ASSERT_TRUE(LoadTestSubjectAltName("san-rfc822name.pem", &san)); |
| 868 EXPECT_EQ(!is_critical(), | 868 EXPECT_EQ(!is_critical(), name_constraints->IsPermittedCert( |
| 869 name_constraints->IsPermittedCert(der::Input(), der::Input(&san))); | 869 der::Input(), true, der::Input(&san))); |
| 870 } | 870 } |
| 871 | 871 |
| 872 TEST_P(ParseNameConstraints, X400AddresssInPermitted) { | 872 TEST_P(ParseNameConstraints, X400AddresssInPermitted) { |
| 873 std::string constraints_der; | 873 std::string constraints_der; |
| 874 ASSERT_TRUE( | 874 ASSERT_TRUE( |
| 875 LoadTestNameConstraint("x400address-permitted.pem", &constraints_der)); | 875 LoadTestNameConstraint("x400address-permitted.pem", &constraints_der)); |
| 876 scoped_ptr<NameConstraints> name_constraints(NameConstraints::CreateFromDer( | 876 scoped_ptr<NameConstraints> name_constraints(NameConstraints::CreateFromDer( |
| 877 der::Input(&constraints_der), is_critical())); | 877 der::Input(&constraints_der), is_critical())); |
| 878 ASSERT_TRUE(name_constraints); | 878 ASSERT_TRUE(name_constraints); |
| 879 | 879 |
| 880 if (is_critical()) { | 880 if (is_critical()) { |
| 881 EXPECT_EQ(GENERAL_NAME_X400_ADDRESS, | 881 EXPECT_EQ(GENERAL_NAME_X400_ADDRESS, |
| 882 name_constraints->ConstrainedNameTypes()); | 882 name_constraints->ConstrainedNameTypes()); |
| 883 } else { | 883 } else { |
| 884 EXPECT_EQ(0, name_constraints->ConstrainedNameTypes()); | 884 EXPECT_EQ(0, name_constraints->ConstrainedNameTypes()); |
| 885 } | 885 } |
| 886 | 886 |
| 887 std::string san; | 887 std::string san; |
| 888 ASSERT_TRUE(LoadTestSubjectAltName("san-x400address.pem", &san)); | 888 ASSERT_TRUE(LoadTestSubjectAltName("san-x400address.pem", &san)); |
| 889 EXPECT_EQ(!is_critical(), | 889 EXPECT_EQ(!is_critical(), name_constraints->IsPermittedCert( |
| 890 name_constraints->IsPermittedCert(der::Input(), der::Input(&san))); | 890 der::Input(), true, der::Input(&san))); |
| 891 } | 891 } |
| 892 | 892 |
| 893 TEST_P(ParseNameConstraints, X400AddresssInExcluded) { | 893 TEST_P(ParseNameConstraints, X400AddresssInExcluded) { |
| 894 std::string constraints_der; | 894 std::string constraints_der; |
| 895 ASSERT_TRUE( | 895 ASSERT_TRUE( |
| 896 LoadTestNameConstraint("x400address-excluded.pem", &constraints_der)); | 896 LoadTestNameConstraint("x400address-excluded.pem", &constraints_der)); |
| 897 scoped_ptr<NameConstraints> name_constraints(NameConstraints::CreateFromDer( | 897 scoped_ptr<NameConstraints> name_constraints(NameConstraints::CreateFromDer( |
| 898 der::Input(&constraints_der), is_critical())); | 898 der::Input(&constraints_der), is_critical())); |
| 899 ASSERT_TRUE(name_constraints); | 899 ASSERT_TRUE(name_constraints); |
| 900 | 900 |
| 901 if (is_critical()) { | 901 if (is_critical()) { |
| 902 EXPECT_EQ(GENERAL_NAME_X400_ADDRESS, | 902 EXPECT_EQ(GENERAL_NAME_X400_ADDRESS, |
| 903 name_constraints->ConstrainedNameTypes()); | 903 name_constraints->ConstrainedNameTypes()); |
| 904 } else { | 904 } else { |
| 905 EXPECT_EQ(0, name_constraints->ConstrainedNameTypes()); | 905 EXPECT_EQ(0, name_constraints->ConstrainedNameTypes()); |
| 906 } | 906 } |
| 907 | 907 |
| 908 std::string san; | 908 std::string san; |
| 909 ASSERT_TRUE(LoadTestSubjectAltName("san-x400address.pem", &san)); | 909 ASSERT_TRUE(LoadTestSubjectAltName("san-x400address.pem", &san)); |
| 910 EXPECT_EQ(!is_critical(), | 910 EXPECT_EQ(!is_critical(), name_constraints->IsPermittedCert( |
| 911 name_constraints->IsPermittedCert(der::Input(), der::Input(&san))); | 911 der::Input(), true, der::Input(&san))); |
| 912 } | 912 } |
| 913 | 913 |
| 914 TEST_P(ParseNameConstraints, EdiPartyNamesInPermitted) { | 914 TEST_P(ParseNameConstraints, EdiPartyNamesInPermitted) { |
| 915 std::string constraints_der; | 915 std::string constraints_der; |
| 916 ASSERT_TRUE( | 916 ASSERT_TRUE( |
| 917 LoadTestNameConstraint("edipartyname-permitted.pem", &constraints_der)); | 917 LoadTestNameConstraint("edipartyname-permitted.pem", &constraints_der)); |
| 918 scoped_ptr<NameConstraints> name_constraints(NameConstraints::CreateFromDer( | 918 scoped_ptr<NameConstraints> name_constraints(NameConstraints::CreateFromDer( |
| 919 der::Input(&constraints_der), is_critical())); | 919 der::Input(&constraints_der), is_critical())); |
| 920 ASSERT_TRUE(name_constraints); | 920 ASSERT_TRUE(name_constraints); |
| 921 | 921 |
| 922 if (is_critical()) { | 922 if (is_critical()) { |
| 923 EXPECT_EQ(GENERAL_NAME_EDI_PARTY_NAME, | 923 EXPECT_EQ(GENERAL_NAME_EDI_PARTY_NAME, |
| 924 name_constraints->ConstrainedNameTypes()); | 924 name_constraints->ConstrainedNameTypes()); |
| 925 } else { | 925 } else { |
| 926 EXPECT_EQ(0, name_constraints->ConstrainedNameTypes()); | 926 EXPECT_EQ(0, name_constraints->ConstrainedNameTypes()); |
| 927 } | 927 } |
| 928 | 928 |
| 929 std::string san; | 929 std::string san; |
| 930 ASSERT_TRUE(LoadTestSubjectAltName("san-edipartyname.pem", &san)); | 930 ASSERT_TRUE(LoadTestSubjectAltName("san-edipartyname.pem", &san)); |
| 931 EXPECT_EQ(!is_critical(), | 931 EXPECT_EQ(!is_critical(), name_constraints->IsPermittedCert( |
| 932 name_constraints->IsPermittedCert(der::Input(), der::Input(&san))); | 932 der::Input(), true, der::Input(&san))); |
| 933 } | 933 } |
| 934 | 934 |
| 935 TEST_P(ParseNameConstraints, EdiPartyNamesInExcluded) { | 935 TEST_P(ParseNameConstraints, EdiPartyNamesInExcluded) { |
| 936 std::string constraints_der; | 936 std::string constraints_der; |
| 937 ASSERT_TRUE( | 937 ASSERT_TRUE( |
| 938 LoadTestNameConstraint("edipartyname-excluded.pem", &constraints_der)); | 938 LoadTestNameConstraint("edipartyname-excluded.pem", &constraints_der)); |
| 939 scoped_ptr<NameConstraints> name_constraints(NameConstraints::CreateFromDer( | 939 scoped_ptr<NameConstraints> name_constraints(NameConstraints::CreateFromDer( |
| 940 der::Input(&constraints_der), is_critical())); | 940 der::Input(&constraints_der), is_critical())); |
| 941 ASSERT_TRUE(name_constraints); | 941 ASSERT_TRUE(name_constraints); |
| 942 | 942 |
| 943 if (is_critical()) { | 943 if (is_critical()) { |
| 944 EXPECT_EQ(GENERAL_NAME_EDI_PARTY_NAME, | 944 EXPECT_EQ(GENERAL_NAME_EDI_PARTY_NAME, |
| 945 name_constraints->ConstrainedNameTypes()); | 945 name_constraints->ConstrainedNameTypes()); |
| 946 } else { | 946 } else { |
| 947 EXPECT_EQ(0, name_constraints->ConstrainedNameTypes()); | 947 EXPECT_EQ(0, name_constraints->ConstrainedNameTypes()); |
| 948 } | 948 } |
| 949 | 949 |
| 950 std::string san; | 950 std::string san; |
| 951 ASSERT_TRUE(LoadTestSubjectAltName("san-edipartyname.pem", &san)); | 951 ASSERT_TRUE(LoadTestSubjectAltName("san-edipartyname.pem", &san)); |
| 952 EXPECT_EQ(!is_critical(), | 952 EXPECT_EQ(!is_critical(), name_constraints->IsPermittedCert( |
| 953 name_constraints->IsPermittedCert(der::Input(), der::Input(&san))); | 953 der::Input(), true, der::Input(&san))); |
| 954 } | 954 } |
| 955 | 955 |
| 956 TEST_P(ParseNameConstraints, URIsInPermitted) { | 956 TEST_P(ParseNameConstraints, URIsInPermitted) { |
| 957 std::string constraints_der; | 957 std::string constraints_der; |
| 958 ASSERT_TRUE(LoadTestNameConstraint("uri-permitted.pem", &constraints_der)); | 958 ASSERT_TRUE(LoadTestNameConstraint("uri-permitted.pem", &constraints_der)); |
| 959 scoped_ptr<NameConstraints> name_constraints(NameConstraints::CreateFromDer( | 959 scoped_ptr<NameConstraints> name_constraints(NameConstraints::CreateFromDer( |
| 960 der::Input(&constraints_der), is_critical())); | 960 der::Input(&constraints_der), is_critical())); |
| 961 ASSERT_TRUE(name_constraints); | 961 ASSERT_TRUE(name_constraints); |
| 962 | 962 |
| 963 if (is_critical()) { | 963 if (is_critical()) { |
| 964 EXPECT_EQ(GENERAL_NAME_UNIFORM_RESOURCE_IDENTIFIER, | 964 EXPECT_EQ(GENERAL_NAME_UNIFORM_RESOURCE_IDENTIFIER, |
| 965 name_constraints->ConstrainedNameTypes()); | 965 name_constraints->ConstrainedNameTypes()); |
| 966 } else { | 966 } else { |
| 967 EXPECT_EQ(0, name_constraints->ConstrainedNameTypes()); | 967 EXPECT_EQ(0, name_constraints->ConstrainedNameTypes()); |
| 968 } | 968 } |
| 969 | 969 |
| 970 std::string san; | 970 std::string san; |
| 971 ASSERT_TRUE(LoadTestSubjectAltName("san-uri.pem", &san)); | 971 ASSERT_TRUE(LoadTestSubjectAltName("san-uri.pem", &san)); |
| 972 EXPECT_EQ(!is_critical(), | 972 EXPECT_EQ(!is_critical(), name_constraints->IsPermittedCert( |
| 973 name_constraints->IsPermittedCert(der::Input(), der::Input(&san))); | 973 der::Input(), true, der::Input(&san))); |
| 974 } | 974 } |
| 975 | 975 |
| 976 TEST_P(ParseNameConstraints, URIsInExcluded) { | 976 TEST_P(ParseNameConstraints, URIsInExcluded) { |
| 977 std::string constraints_der; | 977 std::string constraints_der; |
| 978 ASSERT_TRUE(LoadTestNameConstraint("uri-excluded.pem", &constraints_der)); | 978 ASSERT_TRUE(LoadTestNameConstraint("uri-excluded.pem", &constraints_der)); |
| 979 scoped_ptr<NameConstraints> name_constraints(NameConstraints::CreateFromDer( | 979 scoped_ptr<NameConstraints> name_constraints(NameConstraints::CreateFromDer( |
| 980 der::Input(&constraints_der), is_critical())); | 980 der::Input(&constraints_der), is_critical())); |
| 981 ASSERT_TRUE(name_constraints); | 981 ASSERT_TRUE(name_constraints); |
| 982 | 982 |
| 983 if (is_critical()) { | 983 if (is_critical()) { |
| 984 EXPECT_EQ(GENERAL_NAME_UNIFORM_RESOURCE_IDENTIFIER, | 984 EXPECT_EQ(GENERAL_NAME_UNIFORM_RESOURCE_IDENTIFIER, |
| 985 name_constraints->ConstrainedNameTypes()); | 985 name_constraints->ConstrainedNameTypes()); |
| 986 } else { | 986 } else { |
| 987 EXPECT_EQ(0, name_constraints->ConstrainedNameTypes()); | 987 EXPECT_EQ(0, name_constraints->ConstrainedNameTypes()); |
| 988 } | 988 } |
| 989 | 989 |
| 990 std::string san; | 990 std::string san; |
| 991 ASSERT_TRUE(LoadTestSubjectAltName("san-uri.pem", &san)); | 991 ASSERT_TRUE(LoadTestSubjectAltName("san-uri.pem", &san)); |
| 992 EXPECT_EQ(!is_critical(), | 992 EXPECT_EQ(!is_critical(), name_constraints->IsPermittedCert( |
| 993 name_constraints->IsPermittedCert(der::Input(), der::Input(&san))); | 993 der::Input(), true, der::Input(&san))); |
| 994 } | 994 } |
| 995 | 995 |
| 996 TEST_P(ParseNameConstraints, RegisteredIDsInPermitted) { | 996 TEST_P(ParseNameConstraints, RegisteredIDsInPermitted) { |
| 997 std::string constraints_der; | 997 std::string constraints_der; |
| 998 ASSERT_TRUE( | 998 ASSERT_TRUE( |
| 999 LoadTestNameConstraint("registeredid-permitted.pem", &constraints_der)); | 999 LoadTestNameConstraint("registeredid-permitted.pem", &constraints_der)); |
| 1000 scoped_ptr<NameConstraints> name_constraints(NameConstraints::CreateFromDer( | 1000 scoped_ptr<NameConstraints> name_constraints(NameConstraints::CreateFromDer( |
| 1001 der::Input(&constraints_der), is_critical())); | 1001 der::Input(&constraints_der), is_critical())); |
| 1002 ASSERT_TRUE(name_constraints); | 1002 ASSERT_TRUE(name_constraints); |
| 1003 | 1003 |
| 1004 if (is_critical()) { | 1004 if (is_critical()) { |
| 1005 EXPECT_EQ(GENERAL_NAME_REGISTERED_ID, | 1005 EXPECT_EQ(GENERAL_NAME_REGISTERED_ID, |
| 1006 name_constraints->ConstrainedNameTypes()); | 1006 name_constraints->ConstrainedNameTypes()); |
| 1007 } else { | 1007 } else { |
| 1008 EXPECT_EQ(0, name_constraints->ConstrainedNameTypes()); | 1008 EXPECT_EQ(0, name_constraints->ConstrainedNameTypes()); |
| 1009 } | 1009 } |
| 1010 | 1010 |
| 1011 std::string san; | 1011 std::string san; |
| 1012 ASSERT_TRUE(LoadTestSubjectAltName("san-registeredid.pem", &san)); | 1012 ASSERT_TRUE(LoadTestSubjectAltName("san-registeredid.pem", &san)); |
| 1013 EXPECT_EQ(!is_critical(), | 1013 EXPECT_EQ(!is_critical(), name_constraints->IsPermittedCert( |
| 1014 name_constraints->IsPermittedCert(der::Input(), der::Input(&san))); | 1014 der::Input(), true, der::Input(&san))); |
| 1015 } | 1015 } |
| 1016 | 1016 |
| 1017 TEST_P(ParseNameConstraints, RegisteredIDsInExcluded) { | 1017 TEST_P(ParseNameConstraints, RegisteredIDsInExcluded) { |
| 1018 std::string constraints_der; | 1018 std::string constraints_der; |
| 1019 ASSERT_TRUE( | 1019 ASSERT_TRUE( |
| 1020 LoadTestNameConstraint("registeredid-excluded.pem", &constraints_der)); | 1020 LoadTestNameConstraint("registeredid-excluded.pem", &constraints_der)); |
| 1021 scoped_ptr<NameConstraints> name_constraints(NameConstraints::CreateFromDer( | 1021 scoped_ptr<NameConstraints> name_constraints(NameConstraints::CreateFromDer( |
| 1022 der::Input(&constraints_der), is_critical())); | 1022 der::Input(&constraints_der), is_critical())); |
| 1023 ASSERT_TRUE(name_constraints); | 1023 ASSERT_TRUE(name_constraints); |
| 1024 | 1024 |
| 1025 if (is_critical()) { | 1025 if (is_critical()) { |
| 1026 EXPECT_EQ(GENERAL_NAME_REGISTERED_ID, | 1026 EXPECT_EQ(GENERAL_NAME_REGISTERED_ID, |
| 1027 name_constraints->ConstrainedNameTypes()); | 1027 name_constraints->ConstrainedNameTypes()); |
| 1028 } else { | 1028 } else { |
| 1029 EXPECT_EQ(0, name_constraints->ConstrainedNameTypes()); | 1029 EXPECT_EQ(0, name_constraints->ConstrainedNameTypes()); |
| 1030 } | 1030 } |
| 1031 | 1031 |
| 1032 std::string san; | 1032 std::string san; |
| 1033 ASSERT_TRUE(LoadTestSubjectAltName("san-registeredid.pem", &san)); | 1033 ASSERT_TRUE(LoadTestSubjectAltName("san-registeredid.pem", &san)); |
| 1034 EXPECT_EQ(!is_critical(), | 1034 EXPECT_EQ(!is_critical(), name_constraints->IsPermittedCert( |
| 1035 name_constraints->IsPermittedCert(der::Input(), der::Input(&san))); | 1035 der::Input(), true, der::Input(&san))); |
| 1036 } | 1036 } |
| 1037 | 1037 |
| 1038 TEST_P(ParseNameConstraints, | 1038 TEST_P(ParseNameConstraints, |
| 1039 failsOnGeneralSubtreeWithMinimumZeroEncodedUnnecessarily) { | 1039 failsOnGeneralSubtreeWithMinimumZeroEncodedUnnecessarily) { |
| 1040 std::string constraints_der; | 1040 std::string constraints_der; |
| 1041 ASSERT_TRUE( | 1041 ASSERT_TRUE( |
| 1042 LoadTestNameConstraint("dnsname-with_min_0.pem", &constraints_der)); | 1042 LoadTestNameConstraint("dnsname-with_min_0.pem", &constraints_der)); |
| 1043 // The value should not be in the DER encoding if it is the default. But this | 1043 // The value should not be in the DER encoding if it is the default. But this |
| 1044 // could be changed to allowed if there are buggy encoders out there that | 1044 // could be changed to allowed if there are buggy encoders out there that |
| 1045 // include it anyway. | 1045 // include it anyway. |
| (...skipping 70 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1116 der::Input(&constraints_der), is_critical())); | 1116 der::Input(&constraints_der), is_critical())); |
| 1117 ASSERT_TRUE(name_constraints); | 1117 ASSERT_TRUE(name_constraints); |
| 1118 | 1118 |
| 1119 std::string name_us_arizona_email; | 1119 std::string name_us_arizona_email; |
| 1120 ASSERT_TRUE( | 1120 ASSERT_TRUE( |
| 1121 LoadTestName("name-us-arizona-email.pem", &name_us_arizona_email)); | 1121 LoadTestName("name-us-arizona-email.pem", &name_us_arizona_email)); |
| 1122 | 1122 |
| 1123 // Name constraints don't contain rfc822Name, so emailAddress in subject is | 1123 // Name constraints don't contain rfc822Name, so emailAddress in subject is |
| 1124 // allowed regardless. | 1124 // allowed regardless. |
| 1125 EXPECT_TRUE(name_constraints->IsPermittedCert( | 1125 EXPECT_TRUE(name_constraints->IsPermittedCert( |
| 1126 SequenceValueFromString(&name_us_arizona_email), der::Input())); | 1126 SequenceValueFromString(&name_us_arizona_email), false, der::Input())); |
| 1127 } | 1127 } |
| 1128 | 1128 |
| 1129 TEST_P(ParseNameConstraints, IsPermittedCertSubjectEmailAddressIsNotOk) { | 1129 TEST_P(ParseNameConstraints, IsPermittedCertSubjectEmailAddressIsNotOk) { |
| 1130 std::string constraints_der; | 1130 std::string constraints_der; |
| 1131 ASSERT_TRUE( | 1131 ASSERT_TRUE( |
| 1132 LoadTestNameConstraint("rfc822name-permitted.pem", &constraints_der)); | 1132 LoadTestNameConstraint("rfc822name-permitted.pem", &constraints_der)); |
| 1133 scoped_ptr<NameConstraints> name_constraints(NameConstraints::CreateFromDer( | 1133 scoped_ptr<NameConstraints> name_constraints(NameConstraints::CreateFromDer( |
| 1134 der::Input(&constraints_der), is_critical())); | 1134 der::Input(&constraints_der), is_critical())); |
| 1135 ASSERT_TRUE(name_constraints); | 1135 ASSERT_TRUE(name_constraints); |
| 1136 | 1136 |
| 1137 std::string name_us_arizona_email; | 1137 std::string name_us_arizona_email; |
| 1138 ASSERT_TRUE( | 1138 ASSERT_TRUE( |
| 1139 LoadTestName("name-us-arizona-email.pem", &name_us_arizona_email)); | 1139 LoadTestName("name-us-arizona-email.pem", &name_us_arizona_email)); |
| 1140 | 1140 |
| 1141 // Name constraints contain rfc822Name, so emailAddress in subject is not | 1141 // Name constraints contain rfc822Name, so emailAddress in subject is not |
| 1142 // allowed if the constraints were critical. | 1142 // allowed if the constraints were critical. |
| 1143 EXPECT_EQ(!is_critical(), | 1143 EXPECT_EQ(!is_critical(), name_constraints->IsPermittedCert( |
| 1144 name_constraints->IsPermittedCert( | 1144 SequenceValueFromString(&name_us_arizona_email), |
| 1145 SequenceValueFromString(&name_us_arizona_email), der::Input())); | 1145 false, der::Input())); |
| 1146 } | 1146 } |
| 1147 | 1147 |
| 1148 // Hostname in commonName is not allowed (crbug.com/308330), so these are tests | 1148 // Hostname in commonName is not allowed (crbug.com/308330), so these are tests |
| 1149 // are not particularly interesting, just verifying that the commonName is | 1149 // are not particularly interesting, just verifying that the commonName is |
| 1150 // ignored for dNSName constraints. | 1150 // ignored for dNSName constraints. |
| 1151 TEST_P(ParseNameConstraints, IsPermittedCertSubjectDnsNames) { | 1151 TEST_P(ParseNameConstraints, IsPermittedCertSubjectDnsNames) { |
| 1152 std::string constraints_der; | 1152 std::string constraints_der; |
| 1153 ASSERT_TRUE(LoadTestNameConstraint("directoryname_and_dnsname.pem", | 1153 ASSERT_TRUE(LoadTestNameConstraint("directoryname_and_dnsname.pem", |
| 1154 &constraints_der)); | 1154 &constraints_der)); |
| 1155 scoped_ptr<NameConstraints> name_constraints(NameConstraints::CreateFromDer( | 1155 scoped_ptr<NameConstraints> name_constraints(NameConstraints::CreateFromDer( |
| 1156 der::Input(&constraints_der), is_critical())); | 1156 der::Input(&constraints_der), is_critical())); |
| 1157 ASSERT_TRUE(name_constraints); | 1157 ASSERT_TRUE(name_constraints); |
| 1158 | 1158 |
| 1159 std::string name_us_az_foocom; | 1159 std::string name_us_az_foocom; |
| 1160 ASSERT_TRUE(LoadTestName("name-us-arizona-foo.com.pem", &name_us_az_foocom)); | 1160 ASSERT_TRUE(LoadTestName("name-us-arizona-foo.com.pem", &name_us_az_foocom)); |
| 1161 // The subject is within permitted directoryName constraints, so permitted. | 1161 // The subject is within permitted directoryName constraints, so permitted. |
| 1162 // (The commonName hostname is not within permitted dNSName constraints, so | 1162 // (The commonName hostname is not within permitted dNSName constraints, so |
| 1163 // this would not be permitted if hostnames in commonName were checked.) | 1163 // this would not be permitted if hostnames in commonName were checked.) |
| 1164 EXPECT_TRUE(name_constraints->IsPermittedCert( | 1164 EXPECT_TRUE(name_constraints->IsPermittedCert( |
| 1165 SequenceValueFromString(&name_us_az_foocom), der::Input())); | 1165 SequenceValueFromString(&name_us_az_foocom), false, der::Input())); |
| 1166 | 1166 |
| 1167 std::string name_us_az_permitted; | 1167 std::string name_us_az_permitted; |
| 1168 ASSERT_TRUE(LoadTestName("name-us-arizona-permitted.example.com.pem", | 1168 ASSERT_TRUE(LoadTestName("name-us-arizona-permitted.example.com.pem", |
| 1169 &name_us_az_permitted)); | 1169 &name_us_az_permitted)); |
| 1170 // The subject is in permitted directoryName and the commonName is within | 1170 // The subject is in permitted directoryName and the commonName is within |
| 1171 // permitted dNSName constraints, so this should be permitted regardless if | 1171 // permitted dNSName constraints, so this should be permitted regardless if |
| 1172 // hostnames in commonName are checked or not. | 1172 // hostnames in commonName are checked or not. |
| 1173 EXPECT_TRUE(name_constraints->IsPermittedCert( | 1173 EXPECT_TRUE(name_constraints->IsPermittedCert( |
| 1174 SequenceValueFromString(&name_us_az_permitted), der::Input())); | 1174 SequenceValueFromString(&name_us_az_permitted), false, der::Input())); |
| 1175 | 1175 |
| 1176 std::string name_us_ca_permitted; | 1176 std::string name_us_ca_permitted; |
| 1177 ASSERT_TRUE(LoadTestName("name-us-california-permitted.example.com.pem", | 1177 ASSERT_TRUE(LoadTestName("name-us-california-permitted.example.com.pem", |
| 1178 &name_us_ca_permitted)); | 1178 &name_us_ca_permitted)); |
| 1179 // The subject is within the excluded C=US,ST=California directoryName, so | 1179 // The subject is within the excluded C=US,ST=California directoryName, so |
| 1180 // this should not be allowed, regardless of checking the | 1180 // this should not be allowed, regardless of checking the |
| 1181 // permitted.example.com in commonName. | 1181 // permitted.example.com in commonName. |
| 1182 EXPECT_FALSE(name_constraints->IsPermittedCert( | 1182 EXPECT_FALSE(name_constraints->IsPermittedCert( |
| 1183 SequenceValueFromString(&name_us_ca_permitted), der::Input())); | 1183 SequenceValueFromString(&name_us_ca_permitted), false, der::Input())); |
| 1184 } | 1184 } |
| 1185 | 1185 |
| 1186 // IP addresses in commonName are not allowed (crbug.com/308330), so these are | 1186 // IP addresses in commonName are not allowed (crbug.com/308330), so these are |
| 1187 // tests are not particularly interesting, just verifying that the commonName is | 1187 // tests are not particularly interesting, just verifying that the commonName is |
| 1188 // ignored for iPAddress constraints. | 1188 // ignored for iPAddress constraints. |
| 1189 TEST_P(ParseNameConstraints, IsPermittedCertSubjectIpAddresses) { | 1189 TEST_P(ParseNameConstraints, IsPermittedCertSubjectIpAddresses) { |
| 1190 std::string constraints_der; | 1190 std::string constraints_der; |
| 1191 ASSERT_TRUE(LoadTestNameConstraint( | 1191 ASSERT_TRUE(LoadTestNameConstraint( |
| 1192 "directoryname_and_dnsname_and_ipaddress.pem", &constraints_der)); | 1192 "directoryname_and_dnsname_and_ipaddress.pem", &constraints_der)); |
| 1193 scoped_ptr<NameConstraints> name_constraints(NameConstraints::CreateFromDer( | 1193 scoped_ptr<NameConstraints> name_constraints(NameConstraints::CreateFromDer( |
| 1194 der::Input(&constraints_der), is_critical())); | 1194 der::Input(&constraints_der), is_critical())); |
| 1195 ASSERT_TRUE(name_constraints); | 1195 ASSERT_TRUE(name_constraints); |
| 1196 | 1196 |
| 1197 std::string name_us_az_1_1_1_1; | 1197 std::string name_us_az_1_1_1_1; |
| 1198 ASSERT_TRUE(LoadTestName("name-us-arizona-1.1.1.1.pem", &name_us_az_1_1_1_1)); | 1198 ASSERT_TRUE(LoadTestName("name-us-arizona-1.1.1.1.pem", &name_us_az_1_1_1_1)); |
| 1199 // The subject is within permitted directoryName constraints, so permitted. | 1199 // The subject is within permitted directoryName constraints, so permitted. |
| 1200 // (The commonName IP address is not within permitted iPAddresses constraints, | 1200 // (The commonName IP address is not within permitted iPAddresses constraints, |
| 1201 // so this would not be permitted if IP addresses in commonName were checked.) | 1201 // so this would not be permitted if IP addresses in commonName were checked.) |
| 1202 EXPECT_TRUE(name_constraints->IsPermittedCert( | 1202 EXPECT_TRUE(name_constraints->IsPermittedCert( |
| 1203 SequenceValueFromString(&name_us_az_1_1_1_1), der::Input())); | 1203 SequenceValueFromString(&name_us_az_1_1_1_1), false, der::Input())); |
| 1204 | 1204 |
| 1205 std::string name_us_az_192_168_1_1; | 1205 std::string name_us_az_192_168_1_1; |
| 1206 ASSERT_TRUE( | 1206 ASSERT_TRUE( |
| 1207 LoadTestName("name-us-arizona-192.168.1.1.pem", &name_us_az_192_168_1_1)); | 1207 LoadTestName("name-us-arizona-192.168.1.1.pem", &name_us_az_192_168_1_1)); |
| 1208 // The subject is in permitted directoryName and the commonName is within | 1208 // The subject is in permitted directoryName and the commonName is within |
| 1209 // permitted iPAddress constraints, so this should be permitted regardless if | 1209 // permitted iPAddress constraints, so this should be permitted regardless if |
| 1210 // IP addresses in commonName are checked or not. | 1210 // IP addresses in commonName are checked or not. |
| 1211 EXPECT_TRUE(name_constraints->IsPermittedCert( | 1211 EXPECT_TRUE(name_constraints->IsPermittedCert( |
| 1212 SequenceValueFromString(&name_us_az_192_168_1_1), der::Input())); | 1212 SequenceValueFromString(&name_us_az_192_168_1_1), false, der::Input())); |
| 1213 | 1213 |
| 1214 std::string name_us_ca_192_168_1_1; | 1214 std::string name_us_ca_192_168_1_1; |
| 1215 ASSERT_TRUE(LoadTestName("name-us-california-192.168.1.1.pem", | 1215 ASSERT_TRUE(LoadTestName("name-us-california-192.168.1.1.pem", |
| 1216 &name_us_ca_192_168_1_1)); | 1216 &name_us_ca_192_168_1_1)); |
| 1217 // The subject is within the excluded C=US,ST=California directoryName, so | 1217 // The subject is within the excluded C=US,ST=California directoryName, so |
| 1218 // this should not be allowed, regardless of checking the | 1218 // this should not be allowed, regardless of checking the |
| 1219 // IP address in commonName. | 1219 // IP address in commonName. |
| 1220 EXPECT_FALSE(name_constraints->IsPermittedCert( | 1220 EXPECT_FALSE(name_constraints->IsPermittedCert( |
| 1221 SequenceValueFromString(&name_us_ca_192_168_1_1), der::Input())); | 1221 SequenceValueFromString(&name_us_ca_192_168_1_1), false, der::Input())); |
| 1222 | 1222 |
| 1223 std::string name_us_az_ipv6; | 1223 std::string name_us_az_ipv6; |
| 1224 ASSERT_TRUE(LoadTestName("name-us-arizona-ipv6.pem", &name_us_az_ipv6)); | 1224 ASSERT_TRUE(LoadTestName("name-us-arizona-ipv6.pem", &name_us_az_ipv6)); |
| 1225 // The subject is within permitted directoryName constraints, so permitted. | 1225 // The subject is within permitted directoryName constraints, so permitted. |
| 1226 // (The commonName is an ipv6 address which wasn't supported in the past, but | 1226 // (The commonName is an ipv6 address which wasn't supported in the past, but |
| 1227 // since commonName checking is ignored entirely, this is permitted.) | 1227 // since commonName checking is ignored entirely, this is permitted.) |
| 1228 EXPECT_TRUE(name_constraints->IsPermittedCert( | 1228 EXPECT_TRUE(name_constraints->IsPermittedCert( |
| 1229 SequenceValueFromString(&name_us_az_ipv6), der::Input())); | 1229 SequenceValueFromString(&name_us_az_ipv6), false, der::Input())); |
| 1230 } | 1230 } |
| 1231 | 1231 |
| 1232 TEST_P(ParseNameConstraints, IsPermittedCertFailsOnEmptySubjectAltName) { | 1232 TEST_P(ParseNameConstraints, IsPermittedCertFailsOnEmptySubjectAltName) { |
| 1233 std::string constraints_der; | 1233 std::string constraints_der; |
| 1234 ASSERT_TRUE(LoadTestNameConstraint("dnsname.pem", &constraints_der)); | 1234 ASSERT_TRUE(LoadTestNameConstraint("dnsname.pem", &constraints_der)); |
| 1235 scoped_ptr<NameConstraints> name_constraints(NameConstraints::CreateFromDer( | 1235 scoped_ptr<NameConstraints> name_constraints(NameConstraints::CreateFromDer( |
| 1236 der::Input(&constraints_der), is_critical())); | 1236 der::Input(&constraints_der), is_critical())); |
| 1237 ASSERT_TRUE(name_constraints); | 1237 ASSERT_TRUE(name_constraints); |
| 1238 | 1238 |
| 1239 std::string name_us_az; | 1239 std::string name_us_az; |
| 1240 ASSERT_TRUE(LoadTestName("name-us-arizona.pem", &name_us_az)); | 1240 ASSERT_TRUE(LoadTestName("name-us-arizona.pem", &name_us_az)); |
| 1241 | 1241 |
| 1242 // No constraints on directoryName type, so name_us_az should be allowed when | 1242 // No constraints on directoryName type, so name_us_az should be allowed when |
| 1243 // subjectAltName is not present. | 1243 // subjectAltName is not present. |
| 1244 EXPECT_TRUE(name_constraints->IsPermittedCert( | 1244 EXPECT_TRUE(name_constraints->IsPermittedCert( |
| 1245 SequenceValueFromString(&name_us_az), der::Input())); | 1245 SequenceValueFromString(&name_us_az), false, der::Input())); |
| 1246 | 1246 |
| 1247 std::string san; | 1247 std::string san; |
| 1248 ASSERT_TRUE(LoadTestSubjectAltName("san-invalid-empty.pem", &san)); | 1248 ASSERT_TRUE(LoadTestSubjectAltName("san-invalid-empty.pem", &san)); |
| 1249 // Should fail if subjectAltName is present but empty. | 1249 // Should fail if subjectAltName is present but empty. |
| 1250 EXPECT_FALSE(name_constraints->IsPermittedCert( | 1250 EXPECT_FALSE(name_constraints->IsPermittedCert( |
| 1251 SequenceValueFromString(&name_us_az), der::Input(&san))); | 1251 SequenceValueFromString(&name_us_az), true, der::Input(&san))); |
| 1252 } | 1252 } |
| 1253 | 1253 |
| 1254 TEST_P(ParseNameConstraints, IsPermittedCertFailsOnInvalidIpInSubjectAltName) { | 1254 TEST_P(ParseNameConstraints, IsPermittedCertFailsOnInvalidIpInSubjectAltName) { |
| 1255 std::string constraints_der; | 1255 std::string constraints_der; |
| 1256 ASSERT_TRUE(LoadTestNameConstraint("ipaddress.pem", &constraints_der)); | 1256 ASSERT_TRUE(LoadTestNameConstraint("ipaddress.pem", &constraints_der)); |
| 1257 scoped_ptr<NameConstraints> name_constraints(NameConstraints::CreateFromDer( | 1257 scoped_ptr<NameConstraints> name_constraints(NameConstraints::CreateFromDer( |
| 1258 der::Input(&constraints_der), is_critical())); | 1258 der::Input(&constraints_der), is_critical())); |
| 1259 ASSERT_TRUE(name_constraints); | 1259 ASSERT_TRUE(name_constraints); |
| 1260 | 1260 |
| 1261 std::string name_us_az_192_168_1_1; | 1261 std::string name_us_az_192_168_1_1; |
| 1262 ASSERT_TRUE( | 1262 ASSERT_TRUE( |
| 1263 LoadTestName("name-us-arizona-192.168.1.1.pem", &name_us_az_192_168_1_1)); | 1263 LoadTestName("name-us-arizona-192.168.1.1.pem", &name_us_az_192_168_1_1)); |
| 1264 | 1264 |
| 1265 // Without the invalid subjectAltName, it passes. | 1265 // Without the invalid subjectAltName, it passes. |
| 1266 EXPECT_TRUE(name_constraints->IsPermittedCert( | 1266 EXPECT_TRUE(name_constraints->IsPermittedCert( |
| 1267 SequenceValueFromString(&name_us_az_192_168_1_1), der::Input())); | 1267 SequenceValueFromString(&name_us_az_192_168_1_1), false, der::Input())); |
| 1268 | 1268 |
| 1269 std::string san; | 1269 std::string san; |
| 1270 ASSERT_TRUE(LoadTestSubjectAltName("san-invalid-ipaddress.pem", &san)); | 1270 ASSERT_TRUE(LoadTestSubjectAltName("san-invalid-ipaddress.pem", &san)); |
| 1271 // Should fail if subjectAltName contains an invalid ip address. | 1271 // Should fail if subjectAltName contains an invalid ip address. |
| 1272 EXPECT_FALSE(name_constraints->IsPermittedCert( | 1272 EXPECT_FALSE(name_constraints->IsPermittedCert( |
| 1273 SequenceValueFromString(&name_us_az_192_168_1_1), der::Input(&san))); | 1273 SequenceValueFromString(&name_us_az_192_168_1_1), true, |
| 1274 der::Input(&san))); |
| 1274 } | 1275 } |
| 1275 | 1276 |
| 1276 } // namespace net | 1277 } // namespace net |
| OLD | NEW |