| 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 38 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 49 // supported name types, the results should be the same for both. | 49 // supported name types, the results should be the same for both. |
| 50 INSTANTIATE_TEST_CASE_P(InstantiationName, | 50 INSTANTIATE_TEST_CASE_P(InstantiationName, |
| 51 ParseNameConstraints, | 51 ParseNameConstraints, |
| 52 ::testing::Values(true, false)); | 52 ::testing::Values(true, false)); |
| 53 | 53 |
| 54 TEST_P(ParseNameConstraints, DNSNames) { | 54 TEST_P(ParseNameConstraints, DNSNames) { |
| 55 std::string a; | 55 std::string a; |
| 56 ASSERT_TRUE(LoadTestNameConstraint("dnsname.pem", &a)); | 56 ASSERT_TRUE(LoadTestNameConstraint("dnsname.pem", &a)); |
| 57 | 57 |
| 58 scoped_ptr<NameConstraints> name_constraints( | 58 scoped_ptr<NameConstraints> name_constraints( |
| 59 NameConstraints::CreateFromDer(InputFromString(&a), is_critical())); | 59 NameConstraints::CreateFromDer(der::Input(&a), is_critical())); |
| 60 ASSERT_TRUE(name_constraints); | 60 ASSERT_TRUE(name_constraints); |
| 61 | 61 |
| 62 EXPECT_TRUE(name_constraints->IsPermittedDNSName("permitted.example.com")); | 62 EXPECT_TRUE(name_constraints->IsPermittedDNSName("permitted.example.com")); |
| 63 EXPECT_TRUE(name_constraints->IsPermittedDNSName("permitted.example.com.")); | 63 EXPECT_TRUE(name_constraints->IsPermittedDNSName("permitted.example.com.")); |
| 64 EXPECT_TRUE(name_constraints->IsPermittedDNSName("a.permitted.example.com")); | 64 EXPECT_TRUE(name_constraints->IsPermittedDNSName("a.permitted.example.com")); |
| 65 EXPECT_FALSE(name_constraints->IsPermittedDNSName("apermitted.example.com")); | 65 EXPECT_FALSE(name_constraints->IsPermittedDNSName("apermitted.example.com")); |
| 66 EXPECT_FALSE(name_constraints->IsPermittedDNSName("apermitted.example.com.")); | 66 EXPECT_FALSE(name_constraints->IsPermittedDNSName("apermitted.example.com.")); |
| 67 EXPECT_TRUE( | 67 EXPECT_TRUE( |
| 68 name_constraints->IsPermittedDNSName("alsopermitted.example.com")); | 68 name_constraints->IsPermittedDNSName("alsopermitted.example.com")); |
| 69 EXPECT_FALSE( | 69 EXPECT_FALSE( |
| (...skipping 46 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(), InputFromString(&san))); | 126 name_constraints->IsPermittedCert(der::Input(), 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(), InputFromString(&san))); | 130 name_constraints->IsPermittedCert(der::Input(), 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(), InputFromString(&san))); | 134 name_constraints->IsPermittedCert(der::Input(), 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(), InputFromString(&san))); | 138 name_constraints->IsPermittedCert(der::Input(), 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(InputFromString(&a), is_critical())); | 146 NameConstraints::CreateFromDer(der::Input(&a), is_critical())); |
| 147 ASSERT_TRUE(name_constraints); | 147 ASSERT_TRUE(name_constraints); |
| 148 | 148 |
| 149 // Matches permitted exactly. | 149 // Matches permitted exactly. |
| 150 EXPECT_TRUE(name_constraints->IsPermittedDNSName("com")); | 150 EXPECT_TRUE(name_constraints->IsPermittedDNSName("com")); |
| 151 // Contained within permitted and doesn't match excluded (foo.bar.com). | 151 // Contained within permitted and doesn't match excluded (foo.bar.com). |
| 152 EXPECT_TRUE(name_constraints->IsPermittedDNSName("bar.com")); | 152 EXPECT_TRUE(name_constraints->IsPermittedDNSName("bar.com")); |
| 153 EXPECT_TRUE(name_constraints->IsPermittedDNSName("baz.bar.com")); | 153 EXPECT_TRUE(name_constraints->IsPermittedDNSName("baz.bar.com")); |
| 154 // Matches excluded exactly. | 154 // Matches excluded exactly. |
| 155 EXPECT_FALSE(name_constraints->IsPermittedDNSName("foo.bar.com")); | 155 EXPECT_FALSE(name_constraints->IsPermittedDNSName("foo.bar.com")); |
| 156 // Contained within excluded. | 156 // Contained within excluded. |
| 157 EXPECT_FALSE(name_constraints->IsPermittedDNSName("baz.foo.bar.com")); | 157 EXPECT_FALSE(name_constraints->IsPermittedDNSName("baz.foo.bar.com")); |
| 158 | 158 |
| 159 // Cannot match anything within excluded. | 159 // Cannot match anything within excluded. |
| 160 EXPECT_TRUE(name_constraints->IsPermittedDNSName("*.baz.bar.com")); | 160 EXPECT_TRUE(name_constraints->IsPermittedDNSName("*.baz.bar.com")); |
| 161 // Wildcard hostnames only match a single label, so cannot match excluded | 161 // Wildcard hostnames only match a single label, so cannot match excluded |
| 162 // which has two labels before .com. | 162 // which has two labels before .com. |
| 163 EXPECT_TRUE(name_constraints->IsPermittedDNSName("*.com")); | 163 EXPECT_TRUE(name_constraints->IsPermittedDNSName("*.com")); |
| 164 | 164 |
| 165 // Partial match of foo.bar.com. | 165 // Partial match of foo.bar.com. |
| 166 EXPECT_FALSE(name_constraints->IsPermittedDNSName("*.bar.com")); | 166 EXPECT_FALSE(name_constraints->IsPermittedDNSName("*.bar.com")); |
| 167 // All expansions of wildcard are within excluded. | 167 // All expansions of wildcard are within excluded. |
| 168 EXPECT_FALSE(name_constraints->IsPermittedDNSName("*.foo.bar.com")); | 168 EXPECT_FALSE(name_constraints->IsPermittedDNSName("*.foo.bar.com")); |
| 169 } | 169 } |
| 170 | 170 |
| 171 TEST_P(ParseNameConstraints, DNSNamesWithLeadingDot) { | 171 TEST_P(ParseNameConstraints, DNSNamesWithLeadingDot) { |
| 172 std::string a; | 172 std::string a; |
| 173 ASSERT_TRUE( | 173 ASSERT_TRUE( |
| 174 LoadTestNameConstraint("dnsname-permitted_with_leading_dot.pem", &a)); | 174 LoadTestNameConstraint("dnsname-permitted_with_leading_dot.pem", &a)); |
| 175 scoped_ptr<NameConstraints> name_constraints( | 175 scoped_ptr<NameConstraints> name_constraints( |
| 176 NameConstraints::CreateFromDer(InputFromString(&a), is_critical())); | 176 NameConstraints::CreateFromDer(der::Input(&a), is_critical())); |
| 177 ASSERT_TRUE(name_constraints); | 177 ASSERT_TRUE(name_constraints); |
| 178 | 178 |
| 179 // dNSName constraints should be specified as a host. A dNSName constraint | 179 // dNSName constraints should be specified as a host. A dNSName constraint |
| 180 // with a leading "." doesn't make sense, though some certs include it | 180 // with a leading "." doesn't make sense, though some certs include it |
| 181 // (probably confusing it with the rules for uniformResourceIdentifier | 181 // (probably confusing it with the rules for uniformResourceIdentifier |
| 182 // constraints). It should not match anything. | 182 // constraints). It should not match anything. |
| 183 EXPECT_FALSE(name_constraints->IsPermittedDNSName("com")); | 183 EXPECT_FALSE(name_constraints->IsPermittedDNSName("com")); |
| 184 EXPECT_FALSE(name_constraints->IsPermittedDNSName("bar.com")); | 184 EXPECT_FALSE(name_constraints->IsPermittedDNSName("bar.com")); |
| 185 EXPECT_FALSE(name_constraints->IsPermittedDNSName("foo.bar.com")); | 185 EXPECT_FALSE(name_constraints->IsPermittedDNSName("foo.bar.com")); |
| 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(der::Input(&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, but since no dNSNames |
| 197 // are permitted, everything is excluded. | 197 // are permitted, everything is excluded. |
| 198 EXPECT_FALSE(name_constraints->IsPermittedDNSName("")); | 198 EXPECT_FALSE(name_constraints->IsPermittedDNSName("")); |
| 199 EXPECT_FALSE(name_constraints->IsPermittedDNSName("foo.com")); | 199 EXPECT_FALSE(name_constraints->IsPermittedDNSName("foo.com")); |
| 200 EXPECT_FALSE(name_constraints->IsPermittedDNSName("permitted.example.com")); | 200 EXPECT_FALSE(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 |
| 211 scoped_ptr<NameConstraints> name_constraints( | 211 scoped_ptr<NameConstraints> name_constraints( |
| 212 NameConstraints::CreateFromDer(InputFromString(&a), is_critical())); | 212 NameConstraints::CreateFromDer(der::Input(&a), is_critical())); |
| 213 ASSERT_TRUE(name_constraints); | 213 ASSERT_TRUE(name_constraints); |
| 214 | 214 |
| 215 // "permitted.example.com" is in the permitted section, but since "" is | 215 // "permitted.example.com" is in the permitted section, but since "" is |
| 216 // excluded, nothing is permitted. | 216 // excluded, nothing is permitted. |
| 217 EXPECT_FALSE(name_constraints->IsPermittedDNSName("")); | 217 EXPECT_FALSE(name_constraints->IsPermittedDNSName("")); |
| 218 EXPECT_FALSE(name_constraints->IsPermittedDNSName("foo.com")); | 218 EXPECT_FALSE(name_constraints->IsPermittedDNSName("foo.com")); |
| 219 EXPECT_FALSE(name_constraints->IsPermittedDNSName("permitted.example.com")); | 219 EXPECT_FALSE(name_constraints->IsPermittedDNSName("permitted.example.com")); |
| 220 EXPECT_FALSE( | 220 EXPECT_FALSE( |
| 221 name_constraints->IsPermittedDNSName("foo.permitted.example.com")); | 221 name_constraints->IsPermittedDNSName("foo.permitted.example.com")); |
| 222 } | 222 } |
| 223 | 223 |
| 224 TEST_P(ParseNameConstraints, DNSNamesExcludeDot) { | 224 TEST_P(ParseNameConstraints, DNSNamesExcludeDot) { |
| 225 std::string a; | 225 std::string a; |
| 226 ASSERT_TRUE(LoadTestNameConstraint("dnsname-exclude_dot.pem", &a)); | 226 ASSERT_TRUE(LoadTestNameConstraint("dnsname-exclude_dot.pem", &a)); |
| 227 | 227 |
| 228 scoped_ptr<NameConstraints> name_constraints( | 228 scoped_ptr<NameConstraints> name_constraints( |
| 229 NameConstraints::CreateFromDer(InputFromString(&a), is_critical())); | 229 NameConstraints::CreateFromDer(der::Input(&a), is_critical())); |
| 230 ASSERT_TRUE(name_constraints); | 230 ASSERT_TRUE(name_constraints); |
| 231 | 231 |
| 232 // "." is excluded, which should match nothing. | 232 // "." is excluded, which should match nothing. |
| 233 EXPECT_FALSE(name_constraints->IsPermittedDNSName("foo.com")); | 233 EXPECT_FALSE(name_constraints->IsPermittedDNSName("foo.com")); |
| 234 EXPECT_TRUE(name_constraints->IsPermittedDNSName("permitted.example.com")); | 234 EXPECT_TRUE(name_constraints->IsPermittedDNSName("permitted.example.com")); |
| 235 EXPECT_TRUE( | 235 EXPECT_TRUE( |
| 236 name_constraints->IsPermittedDNSName("foo.permitted.example.com")); | 236 name_constraints->IsPermittedDNSName("foo.permitted.example.com")); |
| 237 } | 237 } |
| 238 | 238 |
| 239 TEST_P(ParseNameConstraints, DNSNamesFailOnInvalidIA5String) { | 239 TEST_P(ParseNameConstraints, DNSNamesFailOnInvalidIA5String) { |
| 240 std::string a; | 240 std::string a; |
| 241 ASSERT_TRUE(LoadTestNameConstraint("dnsname.pem", &a)); | 241 ASSERT_TRUE(LoadTestNameConstraint("dnsname.pem", &a)); |
| 242 | 242 |
| 243 size_t replace_location = a.find("permitted.example2.com"); | 243 size_t replace_location = a.find("permitted.example2.com"); |
| 244 ASSERT_NE(std::string::npos, replace_location); | 244 ASSERT_NE(std::string::npos, replace_location); |
| 245 a.replace(replace_location, 1, 1, -1); | 245 a.replace(replace_location, 1, 1, -1); |
| 246 | 246 |
| 247 EXPECT_FALSE( | 247 EXPECT_FALSE(NameConstraints::CreateFromDer(der::Input(&a), is_critical())); |
| 248 NameConstraints::CreateFromDer(InputFromString(&a), is_critical())); | |
| 249 } | 248 } |
| 250 | 249 |
| 251 TEST_P(ParseNameConstraints, DirectoryNames) { | 250 TEST_P(ParseNameConstraints, DirectoryNames) { |
| 252 std::string constraints_der; | 251 std::string constraints_der; |
| 253 ASSERT_TRUE(LoadTestNameConstraint("directoryname.pem", &constraints_der)); | 252 ASSERT_TRUE(LoadTestNameConstraint("directoryname.pem", &constraints_der)); |
| 254 | 253 |
| 255 std::string name_us; | 254 std::string name_us; |
| 256 ASSERT_TRUE(LoadTestName("name-us.pem", &name_us)); | 255 ASSERT_TRUE(LoadTestName("name-us.pem", &name_us)); |
| 257 std::string name_us_ca; | 256 std::string name_us_ca; |
| 258 ASSERT_TRUE(LoadTestName("name-us-california.pem", &name_us_ca)); | 257 ASSERT_TRUE(LoadTestName("name-us-california.pem", &name_us_ca)); |
| 259 std::string name_us_ca_mountain_view; | 258 std::string name_us_ca_mountain_view; |
| 260 ASSERT_TRUE(LoadTestName("name-us-california-mountain_view.pem", | 259 ASSERT_TRUE(LoadTestName("name-us-california-mountain_view.pem", |
| 261 &name_us_ca_mountain_view)); | 260 &name_us_ca_mountain_view)); |
| 262 std::string name_us_az; | 261 std::string name_us_az; |
| 263 ASSERT_TRUE(LoadTestName("name-us-arizona.pem", &name_us_az)); | 262 ASSERT_TRUE(LoadTestName("name-us-arizona.pem", &name_us_az)); |
| 264 std::string name_jp; | 263 std::string name_jp; |
| 265 ASSERT_TRUE(LoadTestName("name-jp.pem", &name_jp)); | 264 ASSERT_TRUE(LoadTestName("name-jp.pem", &name_jp)); |
| 266 std::string name_jp_tokyo; | 265 std::string name_jp_tokyo; |
| 267 ASSERT_TRUE(LoadTestName("name-jp-tokyo.pem", &name_jp_tokyo)); | 266 ASSERT_TRUE(LoadTestName("name-jp-tokyo.pem", &name_jp_tokyo)); |
| 268 std::string name_de; | 267 std::string name_de; |
| 269 ASSERT_TRUE(LoadTestName("name-de.pem", &name_de)); | 268 ASSERT_TRUE(LoadTestName("name-de.pem", &name_de)); |
| 270 std::string name_ca; | 269 std::string name_ca; |
| 271 ASSERT_TRUE(LoadTestName("name-ca.pem", &name_ca)); | 270 ASSERT_TRUE(LoadTestName("name-ca.pem", &name_ca)); |
| 272 | 271 |
| 273 scoped_ptr<NameConstraints> name_constraints(NameConstraints::CreateFromDer( | 272 scoped_ptr<NameConstraints> name_constraints(NameConstraints::CreateFromDer( |
| 274 InputFromString(&constraints_der), is_critical())); | 273 der::Input(&constraints_der), is_critical())); |
| 275 ASSERT_TRUE(name_constraints); | 274 ASSERT_TRUE(name_constraints); |
| 276 | 275 |
| 277 // Not in any permitted subtree. | 276 // Not in any permitted subtree. |
| 278 EXPECT_FALSE(name_constraints->IsPermittedDirectoryName( | 277 EXPECT_FALSE(name_constraints->IsPermittedDirectoryName( |
| 279 SequenceValueFromString(&name_ca))); | 278 SequenceValueFromString(&name_ca))); |
| 280 // Within the permitted C=US subtree. | 279 // Within the permitted C=US subtree. |
| 281 EXPECT_TRUE(name_constraints->IsPermittedDirectoryName( | 280 EXPECT_TRUE(name_constraints->IsPermittedDirectoryName( |
| 282 SequenceValueFromString(&name_us))); | 281 SequenceValueFromString(&name_us))); |
| 283 // Within the permitted C=US subtree. | 282 // Within the permitted C=US subtree. |
| 284 EXPECT_TRUE(name_constraints->IsPermittedDirectoryName( | 283 EXPECT_TRUE(name_constraints->IsPermittedDirectoryName( |
| (...skipping 25 matching lines...) Expand all Loading... |
| 310 EXPECT_TRUE(name_constraints->IsPermittedCert( | 309 EXPECT_TRUE(name_constraints->IsPermittedCert( |
| 311 SequenceValueFromString(&name_us), der::Input())); | 310 SequenceValueFromString(&name_us), der::Input())); |
| 312 // 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 |
| 313 // subtree takes priority. | 312 // subtree takes priority. |
| 314 EXPECT_FALSE(name_constraints->IsPermittedCert( | 313 EXPECT_FALSE(name_constraints->IsPermittedCert( |
| 315 SequenceValueFromString(&name_us_ca), der::Input())); | 314 SequenceValueFromString(&name_us_ca), der::Input())); |
| 316 | 315 |
| 317 std::string san; | 316 std::string san; |
| 318 ASSERT_TRUE(LoadTestSubjectAltName("san-permitted.pem", &san)); | 317 ASSERT_TRUE(LoadTestSubjectAltName("san-permitted.pem", &san)); |
| 319 EXPECT_TRUE( | 318 EXPECT_TRUE( |
| 320 name_constraints->IsPermittedCert(der::Input(), InputFromString(&san))); | 319 name_constraints->IsPermittedCert(der::Input(), der::Input(&san))); |
| 321 | 320 |
| 322 ASSERT_TRUE(LoadTestSubjectAltName("san-excluded-dnsname.pem", &san)); | 321 ASSERT_TRUE(LoadTestSubjectAltName("san-excluded-dnsname.pem", &san)); |
| 323 EXPECT_TRUE( | 322 EXPECT_TRUE( |
| 324 name_constraints->IsPermittedCert(der::Input(), InputFromString(&san))); | 323 name_constraints->IsPermittedCert(der::Input(), der::Input(&san))); |
| 325 | 324 |
| 326 ASSERT_TRUE(LoadTestSubjectAltName("san-excluded-directoryname.pem", &san)); | 325 ASSERT_TRUE(LoadTestSubjectAltName("san-excluded-directoryname.pem", &san)); |
| 327 EXPECT_FALSE( | 326 EXPECT_FALSE( |
| 328 name_constraints->IsPermittedCert(der::Input(), InputFromString(&san))); | 327 name_constraints->IsPermittedCert(der::Input(), der::Input(&san))); |
| 329 | 328 |
| 330 ASSERT_TRUE(LoadTestSubjectAltName("san-excluded-ipaddress.pem", &san)); | 329 ASSERT_TRUE(LoadTestSubjectAltName("san-excluded-ipaddress.pem", &san)); |
| 331 EXPECT_TRUE( | 330 EXPECT_TRUE( |
| 332 name_constraints->IsPermittedCert(der::Input(), InputFromString(&san))); | 331 name_constraints->IsPermittedCert(der::Input(), der::Input(&san))); |
| 333 } | 332 } |
| 334 | 333 |
| 335 TEST_P(ParseNameConstraints, DirectoryNamesExcludeOnly) { | 334 TEST_P(ParseNameConstraints, DirectoryNamesExcludeOnly) { |
| 336 std::string constraints_der; | 335 std::string constraints_der; |
| 337 ASSERT_TRUE( | 336 ASSERT_TRUE( |
| 338 LoadTestNameConstraint("directoryname-excluded.pem", &constraints_der)); | 337 LoadTestNameConstraint("directoryname-excluded.pem", &constraints_der)); |
| 339 scoped_ptr<NameConstraints> name_constraints(NameConstraints::CreateFromDer( | 338 scoped_ptr<NameConstraints> name_constraints(NameConstraints::CreateFromDer( |
| 340 InputFromString(&constraints_der), is_critical())); | 339 der::Input(&constraints_der), is_critical())); |
| 341 ASSERT_TRUE(name_constraints); | 340 ASSERT_TRUE(name_constraints); |
| 342 | 341 |
| 343 std::string name_empty; | 342 std::string name_empty; |
| 344 ASSERT_TRUE(LoadTestName("name-empty.pem", &name_empty)); | 343 ASSERT_TRUE(LoadTestName("name-empty.pem", &name_empty)); |
| 345 std::string name_us; | 344 std::string name_us; |
| 346 ASSERT_TRUE(LoadTestName("name-us.pem", &name_us)); | 345 ASSERT_TRUE(LoadTestName("name-us.pem", &name_us)); |
| 347 std::string name_us_ca; | 346 std::string name_us_ca; |
| 348 ASSERT_TRUE(LoadTestName("name-us-california.pem", &name_us_ca)); | 347 ASSERT_TRUE(LoadTestName("name-us-california.pem", &name_us_ca)); |
| 349 std::string name_us_ca_mountain_view; | 348 std::string name_us_ca_mountain_view; |
| 350 ASSERT_TRUE(LoadTestName("name-us-california-mountain_view.pem", | 349 ASSERT_TRUE(LoadTestName("name-us-california-mountain_view.pem", |
| 351 &name_us_ca_mountain_view)); | 350 &name_us_ca_mountain_view)); |
| 352 | 351 |
| 353 // Only "C=US,ST=California" is excluded, but since no directoryNames are | 352 // Only "C=US,ST=California" is excluded, but since no directoryNames are |
| 354 // permitted, everything is excluded. | 353 // permitted, everything is excluded. |
| 355 EXPECT_FALSE(name_constraints->IsPermittedDirectoryName( | 354 EXPECT_FALSE(name_constraints->IsPermittedDirectoryName( |
| 356 SequenceValueFromString(&name_empty))); | 355 SequenceValueFromString(&name_empty))); |
| 357 EXPECT_FALSE(name_constraints->IsPermittedDirectoryName( | 356 EXPECT_FALSE(name_constraints->IsPermittedDirectoryName( |
| 358 SequenceValueFromString(&name_us))); | 357 SequenceValueFromString(&name_us))); |
| 359 EXPECT_FALSE(name_constraints->IsPermittedDirectoryName( | 358 EXPECT_FALSE(name_constraints->IsPermittedDirectoryName( |
| 360 SequenceValueFromString(&name_us_ca))); | 359 SequenceValueFromString(&name_us_ca))); |
| 361 EXPECT_FALSE(name_constraints->IsPermittedDirectoryName( | 360 EXPECT_FALSE(name_constraints->IsPermittedDirectoryName( |
| 362 SequenceValueFromString(&name_us_ca_mountain_view))); | 361 SequenceValueFromString(&name_us_ca_mountain_view))); |
| 363 } | 362 } |
| 364 | 363 |
| 365 TEST_P(ParseNameConstraints, DirectoryNamesExcludeAll) { | 364 TEST_P(ParseNameConstraints, DirectoryNamesExcludeAll) { |
| 366 std::string constraints_der; | 365 std::string constraints_der; |
| 367 ASSERT_TRUE( | 366 ASSERT_TRUE( |
| 368 LoadTestNameConstraint("directoryname-excluded.pem", &constraints_der)); | 367 LoadTestNameConstraint("directoryname-excluded.pem", &constraints_der)); |
| 369 scoped_ptr<NameConstraints> name_constraints(NameConstraints::CreateFromDer( | 368 scoped_ptr<NameConstraints> name_constraints(NameConstraints::CreateFromDer( |
| 370 InputFromString(&constraints_der), is_critical())); | 369 der::Input(&constraints_der), is_critical())); |
| 371 ASSERT_TRUE(name_constraints); | 370 ASSERT_TRUE(name_constraints); |
| 372 | 371 |
| 373 std::string name_empty; | 372 std::string name_empty; |
| 374 ASSERT_TRUE(LoadTestName("name-empty.pem", &name_empty)); | 373 ASSERT_TRUE(LoadTestName("name-empty.pem", &name_empty)); |
| 375 std::string name_us; | 374 std::string name_us; |
| 376 ASSERT_TRUE(LoadTestName("name-us.pem", &name_us)); | 375 ASSERT_TRUE(LoadTestName("name-us.pem", &name_us)); |
| 377 std::string name_us_ca; | 376 std::string name_us_ca; |
| 378 ASSERT_TRUE(LoadTestName("name-us-california.pem", &name_us_ca)); | 377 ASSERT_TRUE(LoadTestName("name-us-california.pem", &name_us_ca)); |
| 379 std::string name_us_ca_mountain_view; | 378 std::string name_us_ca_mountain_view; |
| 380 ASSERT_TRUE(LoadTestName("name-us-california-mountain_view.pem", | 379 ASSERT_TRUE(LoadTestName("name-us-california-mountain_view.pem", |
| (...skipping 11 matching lines...) Expand all Loading... |
| 392 SequenceValueFromString(&name_us_ca))); | 391 SequenceValueFromString(&name_us_ca))); |
| 393 EXPECT_FALSE(name_constraints->IsPermittedDirectoryName( | 392 EXPECT_FALSE(name_constraints->IsPermittedDirectoryName( |
| 394 SequenceValueFromString(&name_jp))); | 393 SequenceValueFromString(&name_jp))); |
| 395 } | 394 } |
| 396 | 395 |
| 397 TEST_P(ParseNameConstraints, IPAdresses) { | 396 TEST_P(ParseNameConstraints, IPAdresses) { |
| 398 std::string a; | 397 std::string a; |
| 399 ASSERT_TRUE(LoadTestNameConstraint("ipaddress.pem", &a)); | 398 ASSERT_TRUE(LoadTestNameConstraint("ipaddress.pem", &a)); |
| 400 | 399 |
| 401 scoped_ptr<NameConstraints> name_constraints( | 400 scoped_ptr<NameConstraints> name_constraints( |
| 402 NameConstraints::CreateFromDer(InputFromString(&a), is_critical())); | 401 NameConstraints::CreateFromDer(der::Input(&a), is_critical())); |
| 403 ASSERT_TRUE(name_constraints); | 402 ASSERT_TRUE(name_constraints); |
| 404 | 403 |
| 405 // IPv4 tests: | 404 // IPv4 tests: |
| 406 { | 405 { |
| 407 // Not in any permitted range. | 406 // Not in any permitted range. |
| 408 const uint8_t ip4[] = {192, 169, 0, 1}; | 407 const uint8_t ip4[] = {192, 169, 0, 1}; |
| 409 EXPECT_FALSE(name_constraints->IsPermittedIP( | 408 EXPECT_FALSE(name_constraints->IsPermittedIP( |
| 410 IPAddressNumber(ip4, ip4 + arraysize(ip4)))); | 409 IPAddressNumber(ip4, ip4 + arraysize(ip4)))); |
| 411 } | 410 } |
| 412 { | 411 { |
| (...skipping 125 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 538 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}; |
| 539 EXPECT_FALSE(name_constraints->IsPermittedIP( | 538 EXPECT_FALSE(name_constraints->IsPermittedIP( |
| 540 IPAddressNumber(ip6, ip6 + arraysize(ip6)))); | 539 IPAddressNumber(ip6, ip6 + arraysize(ip6)))); |
| 541 } | 540 } |
| 542 | 541 |
| 543 EXPECT_EQ(GENERAL_NAME_IP_ADDRESS, name_constraints->ConstrainedNameTypes()); | 542 EXPECT_EQ(GENERAL_NAME_IP_ADDRESS, name_constraints->ConstrainedNameTypes()); |
| 544 | 543 |
| 545 std::string san; | 544 std::string san; |
| 546 ASSERT_TRUE(LoadTestSubjectAltName("san-permitted.pem", &san)); | 545 ASSERT_TRUE(LoadTestSubjectAltName("san-permitted.pem", &san)); |
| 547 EXPECT_TRUE( | 546 EXPECT_TRUE( |
| 548 name_constraints->IsPermittedCert(der::Input(), InputFromString(&san))); | 547 name_constraints->IsPermittedCert(der::Input(), der::Input(&san))); |
| 549 | 548 |
| 550 ASSERT_TRUE(LoadTestSubjectAltName("san-excluded-dnsname.pem", &san)); | 549 ASSERT_TRUE(LoadTestSubjectAltName("san-excluded-dnsname.pem", &san)); |
| 551 EXPECT_TRUE( | 550 EXPECT_TRUE( |
| 552 name_constraints->IsPermittedCert(der::Input(), InputFromString(&san))); | 551 name_constraints->IsPermittedCert(der::Input(), der::Input(&san))); |
| 553 | 552 |
| 554 ASSERT_TRUE(LoadTestSubjectAltName("san-excluded-directoryname.pem", &san)); | 553 ASSERT_TRUE(LoadTestSubjectAltName("san-excluded-directoryname.pem", &san)); |
| 555 EXPECT_TRUE( | 554 EXPECT_TRUE( |
| 556 name_constraints->IsPermittedCert(der::Input(), InputFromString(&san))); | 555 name_constraints->IsPermittedCert(der::Input(), der::Input(&san))); |
| 557 | 556 |
| 558 ASSERT_TRUE(LoadTestSubjectAltName("san-excluded-ipaddress.pem", &san)); | 557 ASSERT_TRUE(LoadTestSubjectAltName("san-excluded-ipaddress.pem", &san)); |
| 559 EXPECT_FALSE( | 558 EXPECT_FALSE( |
| 560 name_constraints->IsPermittedCert(der::Input(), InputFromString(&san))); | 559 name_constraints->IsPermittedCert(der::Input(), der::Input(&san))); |
| 561 } | 560 } |
| 562 | 561 |
| 563 TEST_P(ParseNameConstraints, IPAdressesExcludeOnly) { | 562 TEST_P(ParseNameConstraints, IPAdressesExcludeOnly) { |
| 564 std::string a; | 563 std::string a; |
| 565 ASSERT_TRUE(LoadTestNameConstraint("ipaddress-excluded.pem", &a)); | 564 ASSERT_TRUE(LoadTestNameConstraint("ipaddress-excluded.pem", &a)); |
| 566 | 565 |
| 567 scoped_ptr<NameConstraints> name_constraints( | 566 scoped_ptr<NameConstraints> name_constraints( |
| 568 NameConstraints::CreateFromDer(InputFromString(&a), is_critical())); | 567 NameConstraints::CreateFromDer(der::Input(&a), is_critical())); |
| 569 ASSERT_TRUE(name_constraints); | 568 ASSERT_TRUE(name_constraints); |
| 570 | 569 |
| 571 // Only 192.168.5.0/255.255.255.0 is excluded, but since no iPAddresses | 570 // Only 192.168.5.0/255.255.255.0 is excluded, but since no iPAddresses |
| 572 // are permitted, everything is excluded. | 571 // are permitted, everything is excluded. |
| 573 { | 572 { |
| 574 const uint8_t ip4[] = {192, 168, 0, 1}; | 573 const uint8_t ip4[] = {192, 168, 0, 1}; |
| 575 EXPECT_FALSE(name_constraints->IsPermittedIP( | 574 EXPECT_FALSE(name_constraints->IsPermittedIP( |
| 576 IPAddressNumber(ip4, ip4 + arraysize(ip4)))); | 575 IPAddressNumber(ip4, ip4 + arraysize(ip4)))); |
| 577 } | 576 } |
| 578 { | 577 { |
| 579 const uint8_t ip4[] = {192, 168, 5, 1}; | 578 const uint8_t ip4[] = {192, 168, 5, 1}; |
| 580 EXPECT_FALSE(name_constraints->IsPermittedIP( | 579 EXPECT_FALSE(name_constraints->IsPermittedIP( |
| 581 IPAddressNumber(ip4, ip4 + arraysize(ip4)))); | 580 IPAddressNumber(ip4, ip4 + arraysize(ip4)))); |
| 582 } | 581 } |
| 583 { | 582 { |
| 584 const uint8_t ip6[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 13, 0, 0, 0, 1}; | 583 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( | 584 EXPECT_FALSE(name_constraints->IsPermittedIP( |
| 586 IPAddressNumber(ip6, ip6 + arraysize(ip6)))); | 585 IPAddressNumber(ip6, ip6 + arraysize(ip6)))); |
| 587 } | 586 } |
| 588 } | 587 } |
| 589 | 588 |
| 590 TEST_P(ParseNameConstraints, IPAdressesExcludeAll) { | 589 TEST_P(ParseNameConstraints, IPAdressesExcludeAll) { |
| 591 std::string a; | 590 std::string a; |
| 592 ASSERT_TRUE(LoadTestNameConstraint("ipaddress-excludeall.pem", &a)); | 591 ASSERT_TRUE(LoadTestNameConstraint("ipaddress-excludeall.pem", &a)); |
| 593 | 592 |
| 594 scoped_ptr<NameConstraints> name_constraints( | 593 scoped_ptr<NameConstraints> name_constraints( |
| 595 NameConstraints::CreateFromDer(InputFromString(&a), is_critical())); | 594 NameConstraints::CreateFromDer(der::Input(&a), is_critical())); |
| 596 ASSERT_TRUE(name_constraints); | 595 ASSERT_TRUE(name_constraints); |
| 597 | 596 |
| 598 // 192.168.0.0/255.255.0.0 and | 597 // 192.168.0.0/255.255.0.0 and |
| 599 // 102:304:506:708:90a:b0c::/ffff:ffff:ffff:ffff:ffff:ffff:: are permitted, | 598 // 102:304:506:708:90a:b0c::/ffff:ffff:ffff:ffff:ffff:ffff:: are permitted, |
| 600 // but since 0.0.0.0/0 and ::/0 are excluded nothing is permitted. | 599 // but since 0.0.0.0/0 and ::/0 are excluded nothing is permitted. |
| 601 { | 600 { |
| 602 const uint8_t ip4[] = {192, 168, 0, 1}; | 601 const uint8_t ip4[] = {192, 168, 0, 1}; |
| 603 EXPECT_FALSE(name_constraints->IsPermittedIP( | 602 EXPECT_FALSE(name_constraints->IsPermittedIP( |
| 604 IPAddressNumber(ip4, ip4 + arraysize(ip4)))); | 603 IPAddressNumber(ip4, ip4 + arraysize(ip4)))); |
| 605 } | 604 } |
| (...skipping 12 matching lines...) Expand all Loading... |
| 618 EXPECT_FALSE(name_constraints->IsPermittedIP( | 617 EXPECT_FALSE(name_constraints->IsPermittedIP( |
| 619 IPAddressNumber(ip6, ip6 + arraysize(ip6)))); | 618 IPAddressNumber(ip6, ip6 + arraysize(ip6)))); |
| 620 } | 619 } |
| 621 } | 620 } |
| 622 | 621 |
| 623 TEST_P(ParseNameConstraints, IPAdressesNetmaskPermitSingleHost) { | 622 TEST_P(ParseNameConstraints, IPAdressesNetmaskPermitSingleHost) { |
| 624 std::string a; | 623 std::string a; |
| 625 ASSERT_TRUE(LoadTestNameConstraint("ipaddress-permit_singlehost.pem", &a)); | 624 ASSERT_TRUE(LoadTestNameConstraint("ipaddress-permit_singlehost.pem", &a)); |
| 626 | 625 |
| 627 scoped_ptr<NameConstraints> name_constraints( | 626 scoped_ptr<NameConstraints> name_constraints( |
| 628 NameConstraints::CreateFromDer(InputFromString(&a), is_critical())); | 627 NameConstraints::CreateFromDer(der::Input(&a), is_critical())); |
| 629 ASSERT_TRUE(name_constraints); | 628 ASSERT_TRUE(name_constraints); |
| 630 | 629 |
| 631 { | 630 { |
| 632 const uint8_t ip4[] = {0, 0, 0, 0}; | 631 const uint8_t ip4[] = {0, 0, 0, 0}; |
| 633 EXPECT_FALSE(name_constraints->IsPermittedIP( | 632 EXPECT_FALSE(name_constraints->IsPermittedIP( |
| 634 IPAddressNumber(ip4, ip4 + arraysize(ip4)))); | 633 IPAddressNumber(ip4, ip4 + arraysize(ip4)))); |
| 635 } | 634 } |
| 636 { | 635 { |
| 637 const uint8_t ip4[] = {192, 168, 1, 1}; | 636 const uint8_t ip4[] = {192, 168, 1, 1}; |
| 638 EXPECT_FALSE(name_constraints->IsPermittedIP( | 637 EXPECT_FALSE(name_constraints->IsPermittedIP( |
| (...skipping 19 matching lines...) Expand all Loading... |
| 658 EXPECT_FALSE(name_constraints->IsPermittedIP( | 657 EXPECT_FALSE(name_constraints->IsPermittedIP( |
| 659 IPAddressNumber(ip4, ip4 + arraysize(ip4)))); | 658 IPAddressNumber(ip4, ip4 + arraysize(ip4)))); |
| 660 } | 659 } |
| 661 } | 660 } |
| 662 | 661 |
| 663 TEST_P(ParseNameConstraints, IPAdressesNetmaskPermitPrefixLen31) { | 662 TEST_P(ParseNameConstraints, IPAdressesNetmaskPermitPrefixLen31) { |
| 664 std::string a; | 663 std::string a; |
| 665 ASSERT_TRUE(LoadTestNameConstraint("ipaddress-permit_prefix31.pem", &a)); | 664 ASSERT_TRUE(LoadTestNameConstraint("ipaddress-permit_prefix31.pem", &a)); |
| 666 | 665 |
| 667 scoped_ptr<NameConstraints> name_constraints( | 666 scoped_ptr<NameConstraints> name_constraints( |
| 668 NameConstraints::CreateFromDer(InputFromString(&a), is_critical())); | 667 NameConstraints::CreateFromDer(der::Input(&a), is_critical())); |
| 669 ASSERT_TRUE(name_constraints); | 668 ASSERT_TRUE(name_constraints); |
| 670 | 669 |
| 671 { | 670 { |
| 672 const uint8_t ip4[] = {0, 0, 0, 0}; | 671 const uint8_t ip4[] = {0, 0, 0, 0}; |
| 673 EXPECT_FALSE(name_constraints->IsPermittedIP( | 672 EXPECT_FALSE(name_constraints->IsPermittedIP( |
| 674 IPAddressNumber(ip4, ip4 + arraysize(ip4)))); | 673 IPAddressNumber(ip4, ip4 + arraysize(ip4)))); |
| 675 } | 674 } |
| 676 { | 675 { |
| 677 const uint8_t ip4[] = {192, 168, 1, 1}; | 676 const uint8_t ip4[] = {192, 168, 1, 1}; |
| 678 EXPECT_FALSE(name_constraints->IsPermittedIP( | 677 EXPECT_FALSE(name_constraints->IsPermittedIP( |
| (...skipping 24 matching lines...) Expand all Loading... |
| 703 EXPECT_FALSE(name_constraints->IsPermittedIP( | 702 EXPECT_FALSE(name_constraints->IsPermittedIP( |
| 704 IPAddressNumber(ip4, ip4 + arraysize(ip4)))); | 703 IPAddressNumber(ip4, ip4 + arraysize(ip4)))); |
| 705 } | 704 } |
| 706 } | 705 } |
| 707 | 706 |
| 708 TEST_P(ParseNameConstraints, IPAdressesNetmaskPermitPrefixLen1) { | 707 TEST_P(ParseNameConstraints, IPAdressesNetmaskPermitPrefixLen1) { |
| 709 std::string a; | 708 std::string a; |
| 710 ASSERT_TRUE(LoadTestNameConstraint("ipaddress-permit_prefix1.pem", &a)); | 709 ASSERT_TRUE(LoadTestNameConstraint("ipaddress-permit_prefix1.pem", &a)); |
| 711 | 710 |
| 712 scoped_ptr<NameConstraints> name_constraints( | 711 scoped_ptr<NameConstraints> name_constraints( |
| 713 NameConstraints::CreateFromDer(InputFromString(&a), is_critical())); | 712 NameConstraints::CreateFromDer(der::Input(&a), is_critical())); |
| 714 ASSERT_TRUE(name_constraints); | 713 ASSERT_TRUE(name_constraints); |
| 715 | 714 |
| 716 { | 715 { |
| 717 const uint8_t ip4[] = {0, 0, 0, 0}; | 716 const uint8_t ip4[] = {0, 0, 0, 0}; |
| 718 EXPECT_FALSE(name_constraints->IsPermittedIP( | 717 EXPECT_FALSE(name_constraints->IsPermittedIP( |
| 719 IPAddressNumber(ip4, ip4 + arraysize(ip4)))); | 718 IPAddressNumber(ip4, ip4 + arraysize(ip4)))); |
| 720 } | 719 } |
| 721 { | 720 { |
| 722 const uint8_t ip4[] = {0x7F, 0xFF, 0xFF, 0xFF}; | 721 const uint8_t ip4[] = {0x7F, 0xFF, 0xFF, 0xFF}; |
| 723 EXPECT_FALSE(name_constraints->IsPermittedIP( | 722 EXPECT_FALSE(name_constraints->IsPermittedIP( |
| 724 IPAddressNumber(ip4, ip4 + arraysize(ip4)))); | 723 IPAddressNumber(ip4, ip4 + arraysize(ip4)))); |
| 725 } | 724 } |
| 726 { | 725 { |
| 727 const uint8_t ip4[] = {0x80, 0, 0, 0}; | 726 const uint8_t ip4[] = {0x80, 0, 0, 0}; |
| 728 EXPECT_TRUE(name_constraints->IsPermittedIP( | 727 EXPECT_TRUE(name_constraints->IsPermittedIP( |
| 729 IPAddressNumber(ip4, ip4 + arraysize(ip4)))); | 728 IPAddressNumber(ip4, ip4 + arraysize(ip4)))); |
| 730 } | 729 } |
| 731 { | 730 { |
| 732 const uint8_t ip4[] = {0xFF, 0xFF, 0xFF, 0xFF}; | 731 const uint8_t ip4[] = {0xFF, 0xFF, 0xFF, 0xFF}; |
| 733 EXPECT_TRUE(name_constraints->IsPermittedIP( | 732 EXPECT_TRUE(name_constraints->IsPermittedIP( |
| 734 IPAddressNumber(ip4, ip4 + arraysize(ip4)))); | 733 IPAddressNumber(ip4, ip4 + arraysize(ip4)))); |
| 735 } | 734 } |
| 736 } | 735 } |
| 737 | 736 |
| 738 TEST_P(ParseNameConstraints, IPAdressesNetmaskPermitAll) { | 737 TEST_P(ParseNameConstraints, IPAdressesNetmaskPermitAll) { |
| 739 std::string a; | 738 std::string a; |
| 740 ASSERT_TRUE(LoadTestNameConstraint("ipaddress-permit_all.pem", &a)); | 739 ASSERT_TRUE(LoadTestNameConstraint("ipaddress-permit_all.pem", &a)); |
| 741 | 740 |
| 742 scoped_ptr<NameConstraints> name_constraints( | 741 scoped_ptr<NameConstraints> name_constraints( |
| 743 NameConstraints::CreateFromDer(InputFromString(&a), is_critical())); | 742 NameConstraints::CreateFromDer(der::Input(&a), is_critical())); |
| 744 ASSERT_TRUE(name_constraints); | 743 ASSERT_TRUE(name_constraints); |
| 745 | 744 |
| 746 { | 745 { |
| 747 const uint8_t ip4[] = {0, 0, 0, 0}; | 746 const uint8_t ip4[] = {0, 0, 0, 0}; |
| 748 EXPECT_TRUE(name_constraints->IsPermittedIP( | 747 EXPECT_TRUE(name_constraints->IsPermittedIP( |
| 749 IPAddressNumber(ip4, ip4 + arraysize(ip4)))); | 748 IPAddressNumber(ip4, ip4 + arraysize(ip4)))); |
| 750 } | 749 } |
| 751 { | 750 { |
| 752 const uint8_t ip4[] = {192, 168, 1, 1}; | 751 const uint8_t ip4[] = {192, 168, 1, 1}; |
| 753 EXPECT_TRUE(name_constraints->IsPermittedIP( | 752 EXPECT_TRUE(name_constraints->IsPermittedIP( |
| 754 IPAddressNumber(ip4, ip4 + arraysize(ip4)))); | 753 IPAddressNumber(ip4, ip4 + arraysize(ip4)))); |
| 755 } | 754 } |
| 756 { | 755 { |
| 757 const uint8_t ip4[] = {255, 255, 255, 255}; | 756 const uint8_t ip4[] = {255, 255, 255, 255}; |
| 758 EXPECT_TRUE(name_constraints->IsPermittedIP( | 757 EXPECT_TRUE(name_constraints->IsPermittedIP( |
| 759 IPAddressNumber(ip4, ip4 + arraysize(ip4)))); | 758 IPAddressNumber(ip4, ip4 + arraysize(ip4)))); |
| 760 } | 759 } |
| 761 } | 760 } |
| 762 | 761 |
| 763 TEST_P(ParseNameConstraints, IPAdressesFailOnInvalidAddr) { | 762 TEST_P(ParseNameConstraints, IPAdressesFailOnInvalidAddr) { |
| 764 std::string a; | 763 std::string a; |
| 765 ASSERT_TRUE(LoadTestNameConstraint("ipaddress-invalid_addr.pem", &a)); | 764 ASSERT_TRUE(LoadTestNameConstraint("ipaddress-invalid_addr.pem", &a)); |
| 766 | 765 |
| 767 EXPECT_FALSE( | 766 EXPECT_FALSE(NameConstraints::CreateFromDer(der::Input(&a), is_critical())); |
| 768 NameConstraints::CreateFromDer(InputFromString(&a), is_critical())); | |
| 769 } | 767 } |
| 770 | 768 |
| 771 TEST_P(ParseNameConstraints, IPAdressesFailOnInvalidMaskNotContiguous) { | 769 TEST_P(ParseNameConstraints, IPAdressesFailOnInvalidMaskNotContiguous) { |
| 772 std::string a; | 770 std::string a; |
| 773 ASSERT_TRUE(LoadTestNameConstraint( | 771 ASSERT_TRUE(LoadTestNameConstraint( |
| 774 "ipaddress-invalid_mask_not_contiguous_1.pem", &a)); | 772 "ipaddress-invalid_mask_not_contiguous_1.pem", &a)); |
| 775 EXPECT_FALSE( | 773 EXPECT_FALSE(NameConstraints::CreateFromDer(der::Input(&a), is_critical())); |
| 776 NameConstraints::CreateFromDer(InputFromString(&a), is_critical())); | |
| 777 | 774 |
| 778 ASSERT_TRUE(LoadTestNameConstraint( | 775 ASSERT_TRUE(LoadTestNameConstraint( |
| 779 "ipaddress-invalid_mask_not_contiguous_2.pem", &a)); | 776 "ipaddress-invalid_mask_not_contiguous_2.pem", &a)); |
| 780 EXPECT_FALSE( | 777 EXPECT_FALSE(NameConstraints::CreateFromDer(der::Input(&a), is_critical())); |
| 781 NameConstraints::CreateFromDer(InputFromString(&a), is_critical())); | |
| 782 | 778 |
| 783 ASSERT_TRUE(LoadTestNameConstraint( | 779 ASSERT_TRUE(LoadTestNameConstraint( |
| 784 "ipaddress-invalid_mask_not_contiguous_3.pem", &a)); | 780 "ipaddress-invalid_mask_not_contiguous_3.pem", &a)); |
| 785 EXPECT_FALSE( | 781 EXPECT_FALSE(NameConstraints::CreateFromDer(der::Input(&a), is_critical())); |
| 786 NameConstraints::CreateFromDer(InputFromString(&a), is_critical())); | |
| 787 | 782 |
| 788 ASSERT_TRUE(LoadTestNameConstraint( | 783 ASSERT_TRUE(LoadTestNameConstraint( |
| 789 "ipaddress-invalid_mask_not_contiguous_4.pem", &a)); | 784 "ipaddress-invalid_mask_not_contiguous_4.pem", &a)); |
| 790 EXPECT_FALSE( | 785 EXPECT_FALSE(NameConstraints::CreateFromDer(der::Input(&a), is_critical())); |
| 791 NameConstraints::CreateFromDer(InputFromString(&a), is_critical())); | |
| 792 } | 786 } |
| 793 | 787 |
| 794 TEST_P(ParseNameConstraints, OtherNamesInPermitted) { | 788 TEST_P(ParseNameConstraints, OtherNamesInPermitted) { |
| 795 std::string constraints_der; | 789 std::string constraints_der; |
| 796 ASSERT_TRUE( | 790 ASSERT_TRUE( |
| 797 LoadTestNameConstraint("othername-permitted.pem", &constraints_der)); | 791 LoadTestNameConstraint("othername-permitted.pem", &constraints_der)); |
| 798 scoped_ptr<NameConstraints> name_constraints(NameConstraints::CreateFromDer( | 792 scoped_ptr<NameConstraints> name_constraints(NameConstraints::CreateFromDer( |
| 799 InputFromString(&constraints_der), is_critical())); | 793 der::Input(&constraints_der), is_critical())); |
| 800 ASSERT_TRUE(name_constraints); | 794 ASSERT_TRUE(name_constraints); |
| 801 | 795 |
| 802 if (is_critical()) { | 796 if (is_critical()) { |
| 803 EXPECT_EQ(GENERAL_NAME_OTHER_NAME, | 797 EXPECT_EQ(GENERAL_NAME_OTHER_NAME, |
| 804 name_constraints->ConstrainedNameTypes()); | 798 name_constraints->ConstrainedNameTypes()); |
| 805 } else { | 799 } else { |
| 806 EXPECT_EQ(0, name_constraints->ConstrainedNameTypes()); | 800 EXPECT_EQ(0, name_constraints->ConstrainedNameTypes()); |
| 807 } | 801 } |
| 808 | 802 |
| 809 std::string san; | 803 std::string san; |
| 810 ASSERT_TRUE(LoadTestSubjectAltName("san-othername.pem", &san)); | 804 ASSERT_TRUE(LoadTestSubjectAltName("san-othername.pem", &san)); |
| 811 EXPECT_EQ(!is_critical(), name_constraints->IsPermittedCert( | 805 EXPECT_EQ(!is_critical(), |
| 812 der::Input(), InputFromString(&san))); | 806 name_constraints->IsPermittedCert(der::Input(), der::Input(&san))); |
| 813 } | 807 } |
| 814 | 808 |
| 815 TEST_P(ParseNameConstraints, OtherNamesInExcluded) { | 809 TEST_P(ParseNameConstraints, OtherNamesInExcluded) { |
| 816 std::string constraints_der; | 810 std::string constraints_der; |
| 817 ASSERT_TRUE( | 811 ASSERT_TRUE( |
| 818 LoadTestNameConstraint("othername-excluded.pem", &constraints_der)); | 812 LoadTestNameConstraint("othername-excluded.pem", &constraints_der)); |
| 819 scoped_ptr<NameConstraints> name_constraints(NameConstraints::CreateFromDer( | 813 scoped_ptr<NameConstraints> name_constraints(NameConstraints::CreateFromDer( |
| 820 InputFromString(&constraints_der), is_critical())); | 814 der::Input(&constraints_der), is_critical())); |
| 821 ASSERT_TRUE(name_constraints); | 815 ASSERT_TRUE(name_constraints); |
| 822 | 816 |
| 823 if (is_critical()) { | 817 if (is_critical()) { |
| 824 EXPECT_EQ(GENERAL_NAME_OTHER_NAME, | 818 EXPECT_EQ(GENERAL_NAME_OTHER_NAME, |
| 825 name_constraints->ConstrainedNameTypes()); | 819 name_constraints->ConstrainedNameTypes()); |
| 826 } else { | 820 } else { |
| 827 EXPECT_EQ(0, name_constraints->ConstrainedNameTypes()); | 821 EXPECT_EQ(0, name_constraints->ConstrainedNameTypes()); |
| 828 } | 822 } |
| 829 | 823 |
| 830 std::string san; | 824 std::string san; |
| 831 ASSERT_TRUE(LoadTestSubjectAltName("san-othername.pem", &san)); | 825 ASSERT_TRUE(LoadTestSubjectAltName("san-othername.pem", &san)); |
| 832 EXPECT_EQ(!is_critical(), name_constraints->IsPermittedCert( | 826 EXPECT_EQ(!is_critical(), |
| 833 der::Input(), InputFromString(&san))); | 827 name_constraints->IsPermittedCert(der::Input(), der::Input(&san))); |
| 834 } | 828 } |
| 835 | 829 |
| 836 TEST_P(ParseNameConstraints, Rfc822NamesInPermitted) { | 830 TEST_P(ParseNameConstraints, Rfc822NamesInPermitted) { |
| 837 std::string constraints_der; | 831 std::string constraints_der; |
| 838 ASSERT_TRUE( | 832 ASSERT_TRUE( |
| 839 LoadTestNameConstraint("rfc822name-permitted.pem", &constraints_der)); | 833 LoadTestNameConstraint("rfc822name-permitted.pem", &constraints_der)); |
| 840 scoped_ptr<NameConstraints> name_constraints(NameConstraints::CreateFromDer( | 834 scoped_ptr<NameConstraints> name_constraints(NameConstraints::CreateFromDer( |
| 841 InputFromString(&constraints_der), is_critical())); | 835 der::Input(&constraints_der), is_critical())); |
| 842 ASSERT_TRUE(name_constraints); | 836 ASSERT_TRUE(name_constraints); |
| 843 | 837 |
| 844 if (is_critical()) { | 838 if (is_critical()) { |
| 845 EXPECT_EQ(GENERAL_NAME_RFC822_NAME, | 839 EXPECT_EQ(GENERAL_NAME_RFC822_NAME, |
| 846 name_constraints->ConstrainedNameTypes()); | 840 name_constraints->ConstrainedNameTypes()); |
| 847 } else { | 841 } else { |
| 848 EXPECT_EQ(0, name_constraints->ConstrainedNameTypes()); | 842 EXPECT_EQ(0, name_constraints->ConstrainedNameTypes()); |
| 849 } | 843 } |
| 850 | 844 |
| 851 std::string san; | 845 std::string san; |
| 852 ASSERT_TRUE(LoadTestSubjectAltName("san-rfc822name.pem", &san)); | 846 ASSERT_TRUE(LoadTestSubjectAltName("san-rfc822name.pem", &san)); |
| 853 EXPECT_EQ(!is_critical(), name_constraints->IsPermittedCert( | 847 EXPECT_EQ(!is_critical(), |
| 854 der::Input(), InputFromString(&san))); | 848 name_constraints->IsPermittedCert(der::Input(), der::Input(&san))); |
| 855 } | 849 } |
| 856 | 850 |
| 857 TEST_P(ParseNameConstraints, Rfc822NamesInExcluded) { | 851 TEST_P(ParseNameConstraints, Rfc822NamesInExcluded) { |
| 858 std::string constraints_der; | 852 std::string constraints_der; |
| 859 ASSERT_TRUE( | 853 ASSERT_TRUE( |
| 860 LoadTestNameConstraint("rfc822name-excluded.pem", &constraints_der)); | 854 LoadTestNameConstraint("rfc822name-excluded.pem", &constraints_der)); |
| 861 scoped_ptr<NameConstraints> name_constraints(NameConstraints::CreateFromDer( | 855 scoped_ptr<NameConstraints> name_constraints(NameConstraints::CreateFromDer( |
| 862 InputFromString(&constraints_der), is_critical())); | 856 der::Input(&constraints_der), is_critical())); |
| 863 ASSERT_TRUE(name_constraints); | 857 ASSERT_TRUE(name_constraints); |
| 864 | 858 |
| 865 if (is_critical()) { | 859 if (is_critical()) { |
| 866 EXPECT_EQ(GENERAL_NAME_RFC822_NAME, | 860 EXPECT_EQ(GENERAL_NAME_RFC822_NAME, |
| 867 name_constraints->ConstrainedNameTypes()); | 861 name_constraints->ConstrainedNameTypes()); |
| 868 } else { | 862 } else { |
| 869 EXPECT_EQ(0, name_constraints->ConstrainedNameTypes()); | 863 EXPECT_EQ(0, name_constraints->ConstrainedNameTypes()); |
| 870 } | 864 } |
| 871 | 865 |
| 872 std::string san; | 866 std::string san; |
| 873 ASSERT_TRUE(LoadTestSubjectAltName("san-rfc822name.pem", &san)); | 867 ASSERT_TRUE(LoadTestSubjectAltName("san-rfc822name.pem", &san)); |
| 874 EXPECT_EQ(!is_critical(), name_constraints->IsPermittedCert( | 868 EXPECT_EQ(!is_critical(), |
| 875 der::Input(), InputFromString(&san))); | 869 name_constraints->IsPermittedCert(der::Input(), der::Input(&san))); |
| 876 } | 870 } |
| 877 | 871 |
| 878 TEST_P(ParseNameConstraints, X400AddresssInPermitted) { | 872 TEST_P(ParseNameConstraints, X400AddresssInPermitted) { |
| 879 std::string constraints_der; | 873 std::string constraints_der; |
| 880 ASSERT_TRUE( | 874 ASSERT_TRUE( |
| 881 LoadTestNameConstraint("x400address-permitted.pem", &constraints_der)); | 875 LoadTestNameConstraint("x400address-permitted.pem", &constraints_der)); |
| 882 scoped_ptr<NameConstraints> name_constraints(NameConstraints::CreateFromDer( | 876 scoped_ptr<NameConstraints> name_constraints(NameConstraints::CreateFromDer( |
| 883 InputFromString(&constraints_der), is_critical())); | 877 der::Input(&constraints_der), is_critical())); |
| 884 ASSERT_TRUE(name_constraints); | 878 ASSERT_TRUE(name_constraints); |
| 885 | 879 |
| 886 if (is_critical()) { | 880 if (is_critical()) { |
| 887 EXPECT_EQ(GENERAL_NAME_X400_ADDRESS, | 881 EXPECT_EQ(GENERAL_NAME_X400_ADDRESS, |
| 888 name_constraints->ConstrainedNameTypes()); | 882 name_constraints->ConstrainedNameTypes()); |
| 889 } else { | 883 } else { |
| 890 EXPECT_EQ(0, name_constraints->ConstrainedNameTypes()); | 884 EXPECT_EQ(0, name_constraints->ConstrainedNameTypes()); |
| 891 } | 885 } |
| 892 | 886 |
| 893 std::string san; | 887 std::string san; |
| 894 ASSERT_TRUE(LoadTestSubjectAltName("san-x400address.pem", &san)); | 888 ASSERT_TRUE(LoadTestSubjectAltName("san-x400address.pem", &san)); |
| 895 EXPECT_EQ(!is_critical(), name_constraints->IsPermittedCert( | 889 EXPECT_EQ(!is_critical(), |
| 896 der::Input(), InputFromString(&san))); | 890 name_constraints->IsPermittedCert(der::Input(), der::Input(&san))); |
| 897 } | 891 } |
| 898 | 892 |
| 899 TEST_P(ParseNameConstraints, X400AddresssInExcluded) { | 893 TEST_P(ParseNameConstraints, X400AddresssInExcluded) { |
| 900 std::string constraints_der; | 894 std::string constraints_der; |
| 901 ASSERT_TRUE( | 895 ASSERT_TRUE( |
| 902 LoadTestNameConstraint("x400address-excluded.pem", &constraints_der)); | 896 LoadTestNameConstraint("x400address-excluded.pem", &constraints_der)); |
| 903 scoped_ptr<NameConstraints> name_constraints(NameConstraints::CreateFromDer( | 897 scoped_ptr<NameConstraints> name_constraints(NameConstraints::CreateFromDer( |
| 904 InputFromString(&constraints_der), is_critical())); | 898 der::Input(&constraints_der), is_critical())); |
| 905 ASSERT_TRUE(name_constraints); | 899 ASSERT_TRUE(name_constraints); |
| 906 | 900 |
| 907 if (is_critical()) { | 901 if (is_critical()) { |
| 908 EXPECT_EQ(GENERAL_NAME_X400_ADDRESS, | 902 EXPECT_EQ(GENERAL_NAME_X400_ADDRESS, |
| 909 name_constraints->ConstrainedNameTypes()); | 903 name_constraints->ConstrainedNameTypes()); |
| 910 } else { | 904 } else { |
| 911 EXPECT_EQ(0, name_constraints->ConstrainedNameTypes()); | 905 EXPECT_EQ(0, name_constraints->ConstrainedNameTypes()); |
| 912 } | 906 } |
| 913 | 907 |
| 914 std::string san; | 908 std::string san; |
| 915 ASSERT_TRUE(LoadTestSubjectAltName("san-x400address.pem", &san)); | 909 ASSERT_TRUE(LoadTestSubjectAltName("san-x400address.pem", &san)); |
| 916 EXPECT_EQ(!is_critical(), name_constraints->IsPermittedCert( | 910 EXPECT_EQ(!is_critical(), |
| 917 der::Input(), InputFromString(&san))); | 911 name_constraints->IsPermittedCert(der::Input(), der::Input(&san))); |
| 918 } | 912 } |
| 919 | 913 |
| 920 TEST_P(ParseNameConstraints, EdiPartyNamesInPermitted) { | 914 TEST_P(ParseNameConstraints, EdiPartyNamesInPermitted) { |
| 921 std::string constraints_der; | 915 std::string constraints_der; |
| 922 ASSERT_TRUE( | 916 ASSERT_TRUE( |
| 923 LoadTestNameConstraint("edipartyname-permitted.pem", &constraints_der)); | 917 LoadTestNameConstraint("edipartyname-permitted.pem", &constraints_der)); |
| 924 scoped_ptr<NameConstraints> name_constraints(NameConstraints::CreateFromDer( | 918 scoped_ptr<NameConstraints> name_constraints(NameConstraints::CreateFromDer( |
| 925 InputFromString(&constraints_der), is_critical())); | 919 der::Input(&constraints_der), is_critical())); |
| 926 ASSERT_TRUE(name_constraints); | 920 ASSERT_TRUE(name_constraints); |
| 927 | 921 |
| 928 if (is_critical()) { | 922 if (is_critical()) { |
| 929 EXPECT_EQ(GENERAL_NAME_EDI_PARTY_NAME, | 923 EXPECT_EQ(GENERAL_NAME_EDI_PARTY_NAME, |
| 930 name_constraints->ConstrainedNameTypes()); | 924 name_constraints->ConstrainedNameTypes()); |
| 931 } else { | 925 } else { |
| 932 EXPECT_EQ(0, name_constraints->ConstrainedNameTypes()); | 926 EXPECT_EQ(0, name_constraints->ConstrainedNameTypes()); |
| 933 } | 927 } |
| 934 | 928 |
| 935 std::string san; | 929 std::string san; |
| 936 ASSERT_TRUE(LoadTestSubjectAltName("san-edipartyname.pem", &san)); | 930 ASSERT_TRUE(LoadTestSubjectAltName("san-edipartyname.pem", &san)); |
| 937 EXPECT_EQ(!is_critical(), name_constraints->IsPermittedCert( | 931 EXPECT_EQ(!is_critical(), |
| 938 der::Input(), InputFromString(&san))); | 932 name_constraints->IsPermittedCert(der::Input(), der::Input(&san))); |
| 939 } | 933 } |
| 940 | 934 |
| 941 TEST_P(ParseNameConstraints, EdiPartyNamesInExcluded) { | 935 TEST_P(ParseNameConstraints, EdiPartyNamesInExcluded) { |
| 942 std::string constraints_der; | 936 std::string constraints_der; |
| 943 ASSERT_TRUE( | 937 ASSERT_TRUE( |
| 944 LoadTestNameConstraint("edipartyname-excluded.pem", &constraints_der)); | 938 LoadTestNameConstraint("edipartyname-excluded.pem", &constraints_der)); |
| 945 scoped_ptr<NameConstraints> name_constraints(NameConstraints::CreateFromDer( | 939 scoped_ptr<NameConstraints> name_constraints(NameConstraints::CreateFromDer( |
| 946 InputFromString(&constraints_der), is_critical())); | 940 der::Input(&constraints_der), is_critical())); |
| 947 ASSERT_TRUE(name_constraints); | 941 ASSERT_TRUE(name_constraints); |
| 948 | 942 |
| 949 if (is_critical()) { | 943 if (is_critical()) { |
| 950 EXPECT_EQ(GENERAL_NAME_EDI_PARTY_NAME, | 944 EXPECT_EQ(GENERAL_NAME_EDI_PARTY_NAME, |
| 951 name_constraints->ConstrainedNameTypes()); | 945 name_constraints->ConstrainedNameTypes()); |
| 952 } else { | 946 } else { |
| 953 EXPECT_EQ(0, name_constraints->ConstrainedNameTypes()); | 947 EXPECT_EQ(0, name_constraints->ConstrainedNameTypes()); |
| 954 } | 948 } |
| 955 | 949 |
| 956 std::string san; | 950 std::string san; |
| 957 ASSERT_TRUE(LoadTestSubjectAltName("san-edipartyname.pem", &san)); | 951 ASSERT_TRUE(LoadTestSubjectAltName("san-edipartyname.pem", &san)); |
| 958 EXPECT_EQ(!is_critical(), name_constraints->IsPermittedCert( | 952 EXPECT_EQ(!is_critical(), |
| 959 der::Input(), InputFromString(&san))); | 953 name_constraints->IsPermittedCert(der::Input(), der::Input(&san))); |
| 960 } | 954 } |
| 961 | 955 |
| 962 TEST_P(ParseNameConstraints, URIsInPermitted) { | 956 TEST_P(ParseNameConstraints, URIsInPermitted) { |
| 963 std::string constraints_der; | 957 std::string constraints_der; |
| 964 ASSERT_TRUE(LoadTestNameConstraint("uri-permitted.pem", &constraints_der)); | 958 ASSERT_TRUE(LoadTestNameConstraint("uri-permitted.pem", &constraints_der)); |
| 965 scoped_ptr<NameConstraints> name_constraints(NameConstraints::CreateFromDer( | 959 scoped_ptr<NameConstraints> name_constraints(NameConstraints::CreateFromDer( |
| 966 InputFromString(&constraints_der), is_critical())); | 960 der::Input(&constraints_der), is_critical())); |
| 967 ASSERT_TRUE(name_constraints); | 961 ASSERT_TRUE(name_constraints); |
| 968 | 962 |
| 969 if (is_critical()) { | 963 if (is_critical()) { |
| 970 EXPECT_EQ(GENERAL_NAME_UNIFORM_RESOURCE_IDENTIFIER, | 964 EXPECT_EQ(GENERAL_NAME_UNIFORM_RESOURCE_IDENTIFIER, |
| 971 name_constraints->ConstrainedNameTypes()); | 965 name_constraints->ConstrainedNameTypes()); |
| 972 } else { | 966 } else { |
| 973 EXPECT_EQ(0, name_constraints->ConstrainedNameTypes()); | 967 EXPECT_EQ(0, name_constraints->ConstrainedNameTypes()); |
| 974 } | 968 } |
| 975 | 969 |
| 976 std::string san; | 970 std::string san; |
| 977 ASSERT_TRUE(LoadTestSubjectAltName("san-uri.pem", &san)); | 971 ASSERT_TRUE(LoadTestSubjectAltName("san-uri.pem", &san)); |
| 978 EXPECT_EQ(!is_critical(), name_constraints->IsPermittedCert( | 972 EXPECT_EQ(!is_critical(), |
| 979 der::Input(), InputFromString(&san))); | 973 name_constraints->IsPermittedCert(der::Input(), der::Input(&san))); |
| 980 } | 974 } |
| 981 | 975 |
| 982 TEST_P(ParseNameConstraints, URIsInExcluded) { | 976 TEST_P(ParseNameConstraints, URIsInExcluded) { |
| 983 std::string constraints_der; | 977 std::string constraints_der; |
| 984 ASSERT_TRUE(LoadTestNameConstraint("uri-excluded.pem", &constraints_der)); | 978 ASSERT_TRUE(LoadTestNameConstraint("uri-excluded.pem", &constraints_der)); |
| 985 scoped_ptr<NameConstraints> name_constraints(NameConstraints::CreateFromDer( | 979 scoped_ptr<NameConstraints> name_constraints(NameConstraints::CreateFromDer( |
| 986 InputFromString(&constraints_der), is_critical())); | 980 der::Input(&constraints_der), is_critical())); |
| 987 ASSERT_TRUE(name_constraints); | 981 ASSERT_TRUE(name_constraints); |
| 988 | 982 |
| 989 if (is_critical()) { | 983 if (is_critical()) { |
| 990 EXPECT_EQ(GENERAL_NAME_UNIFORM_RESOURCE_IDENTIFIER, | 984 EXPECT_EQ(GENERAL_NAME_UNIFORM_RESOURCE_IDENTIFIER, |
| 991 name_constraints->ConstrainedNameTypes()); | 985 name_constraints->ConstrainedNameTypes()); |
| 992 } else { | 986 } else { |
| 993 EXPECT_EQ(0, name_constraints->ConstrainedNameTypes()); | 987 EXPECT_EQ(0, name_constraints->ConstrainedNameTypes()); |
| 994 } | 988 } |
| 995 | 989 |
| 996 std::string san; | 990 std::string san; |
| 997 ASSERT_TRUE(LoadTestSubjectAltName("san-uri.pem", &san)); | 991 ASSERT_TRUE(LoadTestSubjectAltName("san-uri.pem", &san)); |
| 998 EXPECT_EQ(!is_critical(), name_constraints->IsPermittedCert( | 992 EXPECT_EQ(!is_critical(), |
| 999 der::Input(), InputFromString(&san))); | 993 name_constraints->IsPermittedCert(der::Input(), der::Input(&san))); |
| 1000 } | 994 } |
| 1001 | 995 |
| 1002 TEST_P(ParseNameConstraints, RegisteredIDsInPermitted) { | 996 TEST_P(ParseNameConstraints, RegisteredIDsInPermitted) { |
| 1003 std::string constraints_der; | 997 std::string constraints_der; |
| 1004 ASSERT_TRUE( | 998 ASSERT_TRUE( |
| 1005 LoadTestNameConstraint("registeredid-permitted.pem", &constraints_der)); | 999 LoadTestNameConstraint("registeredid-permitted.pem", &constraints_der)); |
| 1006 scoped_ptr<NameConstraints> name_constraints(NameConstraints::CreateFromDer( | 1000 scoped_ptr<NameConstraints> name_constraints(NameConstraints::CreateFromDer( |
| 1007 InputFromString(&constraints_der), is_critical())); | 1001 der::Input(&constraints_der), is_critical())); |
| 1008 ASSERT_TRUE(name_constraints); | 1002 ASSERT_TRUE(name_constraints); |
| 1009 | 1003 |
| 1010 if (is_critical()) { | 1004 if (is_critical()) { |
| 1011 EXPECT_EQ(GENERAL_NAME_REGISTERED_ID, | 1005 EXPECT_EQ(GENERAL_NAME_REGISTERED_ID, |
| 1012 name_constraints->ConstrainedNameTypes()); | 1006 name_constraints->ConstrainedNameTypes()); |
| 1013 } else { | 1007 } else { |
| 1014 EXPECT_EQ(0, name_constraints->ConstrainedNameTypes()); | 1008 EXPECT_EQ(0, name_constraints->ConstrainedNameTypes()); |
| 1015 } | 1009 } |
| 1016 | 1010 |
| 1017 std::string san; | 1011 std::string san; |
| 1018 ASSERT_TRUE(LoadTestSubjectAltName("san-registeredid.pem", &san)); | 1012 ASSERT_TRUE(LoadTestSubjectAltName("san-registeredid.pem", &san)); |
| 1019 EXPECT_EQ(!is_critical(), name_constraints->IsPermittedCert( | 1013 EXPECT_EQ(!is_critical(), |
| 1020 der::Input(), InputFromString(&san))); | 1014 name_constraints->IsPermittedCert(der::Input(), der::Input(&san))); |
| 1021 } | 1015 } |
| 1022 | 1016 |
| 1023 TEST_P(ParseNameConstraints, RegisteredIDsInExcluded) { | 1017 TEST_P(ParseNameConstraints, RegisteredIDsInExcluded) { |
| 1024 std::string constraints_der; | 1018 std::string constraints_der; |
| 1025 ASSERT_TRUE( | 1019 ASSERT_TRUE( |
| 1026 LoadTestNameConstraint("registeredid-excluded.pem", &constraints_der)); | 1020 LoadTestNameConstraint("registeredid-excluded.pem", &constraints_der)); |
| 1027 scoped_ptr<NameConstraints> name_constraints(NameConstraints::CreateFromDer( | 1021 scoped_ptr<NameConstraints> name_constraints(NameConstraints::CreateFromDer( |
| 1028 InputFromString(&constraints_der), is_critical())); | 1022 der::Input(&constraints_der), is_critical())); |
| 1029 ASSERT_TRUE(name_constraints); | 1023 ASSERT_TRUE(name_constraints); |
| 1030 | 1024 |
| 1031 if (is_critical()) { | 1025 if (is_critical()) { |
| 1032 EXPECT_EQ(GENERAL_NAME_REGISTERED_ID, | 1026 EXPECT_EQ(GENERAL_NAME_REGISTERED_ID, |
| 1033 name_constraints->ConstrainedNameTypes()); | 1027 name_constraints->ConstrainedNameTypes()); |
| 1034 } else { | 1028 } else { |
| 1035 EXPECT_EQ(0, name_constraints->ConstrainedNameTypes()); | 1029 EXPECT_EQ(0, name_constraints->ConstrainedNameTypes()); |
| 1036 } | 1030 } |
| 1037 | 1031 |
| 1038 std::string san; | 1032 std::string san; |
| 1039 ASSERT_TRUE(LoadTestSubjectAltName("san-registeredid.pem", &san)); | 1033 ASSERT_TRUE(LoadTestSubjectAltName("san-registeredid.pem", &san)); |
| 1040 EXPECT_EQ(!is_critical(), name_constraints->IsPermittedCert( | 1034 EXPECT_EQ(!is_critical(), |
| 1041 der::Input(), InputFromString(&san))); | 1035 name_constraints->IsPermittedCert(der::Input(), der::Input(&san))); |
| 1042 } | 1036 } |
| 1043 | 1037 |
| 1044 TEST_P(ParseNameConstraints, | 1038 TEST_P(ParseNameConstraints, |
| 1045 failsOnGeneralSubtreeWithMinimumZeroEncodedUnnecessarily) { | 1039 failsOnGeneralSubtreeWithMinimumZeroEncodedUnnecessarily) { |
| 1046 std::string constraints_der; | 1040 std::string constraints_der; |
| 1047 ASSERT_TRUE( | 1041 ASSERT_TRUE( |
| 1048 LoadTestNameConstraint("dnsname-with_min_0.pem", &constraints_der)); | 1042 LoadTestNameConstraint("dnsname-with_min_0.pem", &constraints_der)); |
| 1049 // 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 |
| 1050 // 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 |
| 1051 // include it anyway. | 1045 // include it anyway. |
| 1052 EXPECT_FALSE(NameConstraints::CreateFromDer(InputFromString(&constraints_der), | 1046 EXPECT_FALSE(NameConstraints::CreateFromDer(der::Input(&constraints_der), |
| 1053 is_critical())); | 1047 is_critical())); |
| 1054 } | 1048 } |
| 1055 | 1049 |
| 1056 TEST_P(ParseNameConstraints, FailsOnGeneralSubtreeWithMinimum) { | 1050 TEST_P(ParseNameConstraints, FailsOnGeneralSubtreeWithMinimum) { |
| 1057 std::string constraints_der; | 1051 std::string constraints_der; |
| 1058 ASSERT_TRUE( | 1052 ASSERT_TRUE( |
| 1059 LoadTestNameConstraint("dnsname-with_min_1.pem", &constraints_der)); | 1053 LoadTestNameConstraint("dnsname-with_min_1.pem", &constraints_der)); |
| 1060 EXPECT_FALSE(NameConstraints::CreateFromDer(InputFromString(&constraints_der), | 1054 EXPECT_FALSE(NameConstraints::CreateFromDer(der::Input(&constraints_der), |
| 1061 is_critical())); | 1055 is_critical())); |
| 1062 } | 1056 } |
| 1063 | 1057 |
| 1064 TEST_P(ParseNameConstraints, | 1058 TEST_P(ParseNameConstraints, |
| 1065 failsOnGeneralSubtreeWithMinimumZeroEncodedUnnecessarilyAndMaximum) { | 1059 failsOnGeneralSubtreeWithMinimumZeroEncodedUnnecessarilyAndMaximum) { |
| 1066 std::string constraints_der; | 1060 std::string constraints_der; |
| 1067 ASSERT_TRUE(LoadTestNameConstraint("dnsname-with_min_0_and_max.pem", | 1061 ASSERT_TRUE(LoadTestNameConstraint("dnsname-with_min_0_and_max.pem", |
| 1068 &constraints_der)); | 1062 &constraints_der)); |
| 1069 EXPECT_FALSE(NameConstraints::CreateFromDer(InputFromString(&constraints_der), | 1063 EXPECT_FALSE(NameConstraints::CreateFromDer(der::Input(&constraints_der), |
| 1070 is_critical())); | 1064 is_critical())); |
| 1071 } | 1065 } |
| 1072 | 1066 |
| 1073 TEST_P(ParseNameConstraints, FailsOnGeneralSubtreeWithMinimumAndMaximum) { | 1067 TEST_P(ParseNameConstraints, FailsOnGeneralSubtreeWithMinimumAndMaximum) { |
| 1074 std::string constraints_der; | 1068 std::string constraints_der; |
| 1075 ASSERT_TRUE(LoadTestNameConstraint("dnsname-with_min_1_and_max.pem", | 1069 ASSERT_TRUE(LoadTestNameConstraint("dnsname-with_min_1_and_max.pem", |
| 1076 &constraints_der)); | 1070 &constraints_der)); |
| 1077 EXPECT_FALSE(NameConstraints::CreateFromDer(InputFromString(&constraints_der), | 1071 EXPECT_FALSE(NameConstraints::CreateFromDer(der::Input(&constraints_der), |
| 1078 is_critical())); | 1072 is_critical())); |
| 1079 } | 1073 } |
| 1080 | 1074 |
| 1081 TEST_P(ParseNameConstraints, FailsOnGeneralSubtreeWithMaximum) { | 1075 TEST_P(ParseNameConstraints, FailsOnGeneralSubtreeWithMaximum) { |
| 1082 std::string constraints_der; | 1076 std::string constraints_der; |
| 1083 ASSERT_TRUE(LoadTestNameConstraint("dnsname-with_max.pem", &constraints_der)); | 1077 ASSERT_TRUE(LoadTestNameConstraint("dnsname-with_max.pem", &constraints_der)); |
| 1084 EXPECT_FALSE(NameConstraints::CreateFromDer(InputFromString(&constraints_der), | 1078 EXPECT_FALSE(NameConstraints::CreateFromDer(der::Input(&constraints_der), |
| 1085 is_critical())); | 1079 is_critical())); |
| 1086 } | 1080 } |
| 1087 | 1081 |
| 1088 TEST_P(ParseNameConstraints, FailsOnEmptyExtensionValue) { | 1082 TEST_P(ParseNameConstraints, FailsOnEmptyExtensionValue) { |
| 1089 std::string constraints_der = ""; | 1083 std::string constraints_der = ""; |
| 1090 EXPECT_FALSE(NameConstraints::CreateFromDer(InputFromString(&constraints_der), | 1084 EXPECT_FALSE(NameConstraints::CreateFromDer(der::Input(&constraints_der), |
| 1091 is_critical())); | 1085 is_critical())); |
| 1092 } | 1086 } |
| 1093 | 1087 |
| 1094 TEST_P(ParseNameConstraints, FailsOnNoPermittedAndExcluded) { | 1088 TEST_P(ParseNameConstraints, FailsOnNoPermittedAndExcluded) { |
| 1095 std::string constraints_der; | 1089 std::string constraints_der; |
| 1096 ASSERT_TRUE( | 1090 ASSERT_TRUE( |
| 1097 LoadTestNameConstraint("invalid-no_subtrees.pem", &constraints_der)); | 1091 LoadTestNameConstraint("invalid-no_subtrees.pem", &constraints_der)); |
| 1098 EXPECT_FALSE(NameConstraints::CreateFromDer(InputFromString(&constraints_der), | 1092 EXPECT_FALSE(NameConstraints::CreateFromDer(der::Input(&constraints_der), |
| 1099 is_critical())); | 1093 is_critical())); |
| 1100 } | 1094 } |
| 1101 | 1095 |
| 1102 TEST_P(ParseNameConstraints, FailsOnEmptyPermitted) { | 1096 TEST_P(ParseNameConstraints, FailsOnEmptyPermitted) { |
| 1103 std::string constraints_der; | 1097 std::string constraints_der; |
| 1104 ASSERT_TRUE(LoadTestNameConstraint("invalid-empty_permitted_subtree.pem", | 1098 ASSERT_TRUE(LoadTestNameConstraint("invalid-empty_permitted_subtree.pem", |
| 1105 &constraints_der)); | 1099 &constraints_der)); |
| 1106 EXPECT_FALSE(NameConstraints::CreateFromDer(InputFromString(&constraints_der), | 1100 EXPECT_FALSE(NameConstraints::CreateFromDer(der::Input(&constraints_der), |
| 1107 is_critical())); | 1101 is_critical())); |
| 1108 } | 1102 } |
| 1109 | 1103 |
| 1110 TEST_P(ParseNameConstraints, FailsOnEmptyExcluded) { | 1104 TEST_P(ParseNameConstraints, FailsOnEmptyExcluded) { |
| 1111 std::string constraints_der; | 1105 std::string constraints_der; |
| 1112 ASSERT_TRUE(LoadTestNameConstraint("invalid-empty_excluded_subtree.pem", | 1106 ASSERT_TRUE(LoadTestNameConstraint("invalid-empty_excluded_subtree.pem", |
| 1113 &constraints_der)); | 1107 &constraints_der)); |
| 1114 EXPECT_FALSE(NameConstraints::CreateFromDer(InputFromString(&constraints_der), | 1108 EXPECT_FALSE(NameConstraints::CreateFromDer(der::Input(&constraints_der), |
| 1115 is_critical())); | 1109 is_critical())); |
| 1116 } | 1110 } |
| 1117 | 1111 |
| 1118 TEST_P(ParseNameConstraints, IsPermittedCertSubjectEmailAddressIsOk) { | 1112 TEST_P(ParseNameConstraints, IsPermittedCertSubjectEmailAddressIsOk) { |
| 1119 std::string constraints_der; | 1113 std::string constraints_der; |
| 1120 ASSERT_TRUE(LoadTestNameConstraint("directoryname.pem", &constraints_der)); | 1114 ASSERT_TRUE(LoadTestNameConstraint("directoryname.pem", &constraints_der)); |
| 1121 scoped_ptr<NameConstraints> name_constraints(NameConstraints::CreateFromDer( | 1115 scoped_ptr<NameConstraints> name_constraints(NameConstraints::CreateFromDer( |
| 1122 InputFromString(&constraints_der), is_critical())); | 1116 der::Input(&constraints_der), is_critical())); |
| 1123 ASSERT_TRUE(name_constraints); | 1117 ASSERT_TRUE(name_constraints); |
| 1124 | 1118 |
| 1125 std::string name_us_arizona_email; | 1119 std::string name_us_arizona_email; |
| 1126 ASSERT_TRUE( | 1120 ASSERT_TRUE( |
| 1127 LoadTestName("name-us-arizona-email.pem", &name_us_arizona_email)); | 1121 LoadTestName("name-us-arizona-email.pem", &name_us_arizona_email)); |
| 1128 | 1122 |
| 1129 // Name constraints don't contain rfc822Name, so emailAddress in subject is | 1123 // Name constraints don't contain rfc822Name, so emailAddress in subject is |
| 1130 // allowed regardless. | 1124 // allowed regardless. |
| 1131 EXPECT_TRUE(name_constraints->IsPermittedCert( | 1125 EXPECT_TRUE(name_constraints->IsPermittedCert( |
| 1132 SequenceValueFromString(&name_us_arizona_email), der::Input())); | 1126 SequenceValueFromString(&name_us_arizona_email), der::Input())); |
| 1133 } | 1127 } |
| 1134 | 1128 |
| 1135 TEST_P(ParseNameConstraints, IsPermittedCertSubjectEmailAddressIsNotOk) { | 1129 TEST_P(ParseNameConstraints, IsPermittedCertSubjectEmailAddressIsNotOk) { |
| 1136 std::string constraints_der; | 1130 std::string constraints_der; |
| 1137 ASSERT_TRUE( | 1131 ASSERT_TRUE( |
| 1138 LoadTestNameConstraint("rfc822name-permitted.pem", &constraints_der)); | 1132 LoadTestNameConstraint("rfc822name-permitted.pem", &constraints_der)); |
| 1139 scoped_ptr<NameConstraints> name_constraints(NameConstraints::CreateFromDer( | 1133 scoped_ptr<NameConstraints> name_constraints(NameConstraints::CreateFromDer( |
| 1140 InputFromString(&constraints_der), is_critical())); | 1134 der::Input(&constraints_der), is_critical())); |
| 1141 ASSERT_TRUE(name_constraints); | 1135 ASSERT_TRUE(name_constraints); |
| 1142 | 1136 |
| 1143 std::string name_us_arizona_email; | 1137 std::string name_us_arizona_email; |
| 1144 ASSERT_TRUE( | 1138 ASSERT_TRUE( |
| 1145 LoadTestName("name-us-arizona-email.pem", &name_us_arizona_email)); | 1139 LoadTestName("name-us-arizona-email.pem", &name_us_arizona_email)); |
| 1146 | 1140 |
| 1147 // Name constraints contain rfc822Name, so emailAddress in subject is not | 1141 // Name constraints contain rfc822Name, so emailAddress in subject is not |
| 1148 // allowed if the constraints were critical. | 1142 // allowed if the constraints were critical. |
| 1149 EXPECT_EQ(!is_critical(), | 1143 EXPECT_EQ(!is_critical(), |
| 1150 name_constraints->IsPermittedCert( | 1144 name_constraints->IsPermittedCert( |
| 1151 SequenceValueFromString(&name_us_arizona_email), der::Input())); | 1145 SequenceValueFromString(&name_us_arizona_email), der::Input())); |
| 1152 } | 1146 } |
| 1153 | 1147 |
| 1154 // 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 |
| 1155 // are not particularly interesting, just verifying that the commonName is | 1149 // are not particularly interesting, just verifying that the commonName is |
| 1156 // ignored for dNSName constraints. | 1150 // ignored for dNSName constraints. |
| 1157 TEST_P(ParseNameConstraints, IsPermittedCertSubjectDnsNames) { | 1151 TEST_P(ParseNameConstraints, IsPermittedCertSubjectDnsNames) { |
| 1158 std::string constraints_der; | 1152 std::string constraints_der; |
| 1159 ASSERT_TRUE(LoadTestNameConstraint("directoryname_and_dnsname.pem", | 1153 ASSERT_TRUE(LoadTestNameConstraint("directoryname_and_dnsname.pem", |
| 1160 &constraints_der)); | 1154 &constraints_der)); |
| 1161 scoped_ptr<NameConstraints> name_constraints(NameConstraints::CreateFromDer( | 1155 scoped_ptr<NameConstraints> name_constraints(NameConstraints::CreateFromDer( |
| 1162 InputFromString(&constraints_der), is_critical())); | 1156 der::Input(&constraints_der), is_critical())); |
| 1163 ASSERT_TRUE(name_constraints); | 1157 ASSERT_TRUE(name_constraints); |
| 1164 | 1158 |
| 1165 std::string name_us_az_foocom; | 1159 std::string name_us_az_foocom; |
| 1166 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)); |
| 1167 // The subject is within permitted directoryName constraints, so permitted. | 1161 // The subject is within permitted directoryName constraints, so permitted. |
| 1168 // (The commonName hostname is not within permitted dNSName constraints, so | 1162 // (The commonName hostname is not within permitted dNSName constraints, so |
| 1169 // this would not be permitted if hostnames in commonName were checked.) | 1163 // this would not be permitted if hostnames in commonName were checked.) |
| 1170 EXPECT_TRUE(name_constraints->IsPermittedCert( | 1164 EXPECT_TRUE(name_constraints->IsPermittedCert( |
| 1171 SequenceValueFromString(&name_us_az_foocom), der::Input())); | 1165 SequenceValueFromString(&name_us_az_foocom), der::Input())); |
| 1172 | 1166 |
| (...skipping 17 matching lines...) Expand all Loading... |
| 1190 } | 1184 } |
| 1191 | 1185 |
| 1192 // 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 |
| 1193 // tests are not particularly interesting, just verifying that the commonName is | 1187 // tests are not particularly interesting, just verifying that the commonName is |
| 1194 // ignored for iPAddress constraints. | 1188 // ignored for iPAddress constraints. |
| 1195 TEST_P(ParseNameConstraints, IsPermittedCertSubjectIpAddresses) { | 1189 TEST_P(ParseNameConstraints, IsPermittedCertSubjectIpAddresses) { |
| 1196 std::string constraints_der; | 1190 std::string constraints_der; |
| 1197 ASSERT_TRUE(LoadTestNameConstraint( | 1191 ASSERT_TRUE(LoadTestNameConstraint( |
| 1198 "directoryname_and_dnsname_and_ipaddress.pem", &constraints_der)); | 1192 "directoryname_and_dnsname_and_ipaddress.pem", &constraints_der)); |
| 1199 scoped_ptr<NameConstraints> name_constraints(NameConstraints::CreateFromDer( | 1193 scoped_ptr<NameConstraints> name_constraints(NameConstraints::CreateFromDer( |
| 1200 InputFromString(&constraints_der), is_critical())); | 1194 der::Input(&constraints_der), is_critical())); |
| 1201 ASSERT_TRUE(name_constraints); | 1195 ASSERT_TRUE(name_constraints); |
| 1202 | 1196 |
| 1203 std::string name_us_az_1_1_1_1; | 1197 std::string name_us_az_1_1_1_1; |
| 1204 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)); |
| 1205 // The subject is within permitted directoryName constraints, so permitted. | 1199 // The subject is within permitted directoryName constraints, so permitted. |
| 1206 // (The commonName IP address is not within permitted iPAddresses constraints, | 1200 // (The commonName IP address is not within permitted iPAddresses constraints, |
| 1207 // 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.) |
| 1208 EXPECT_TRUE(name_constraints->IsPermittedCert( | 1202 EXPECT_TRUE(name_constraints->IsPermittedCert( |
| 1209 SequenceValueFromString(&name_us_az_1_1_1_1), der::Input())); | 1203 SequenceValueFromString(&name_us_az_1_1_1_1), der::Input())); |
| 1210 | 1204 |
| (...skipping 21 matching lines...) Expand all Loading... |
| 1232 // (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 |
| 1233 // since commonName checking is ignored entirely, this is permitted.) | 1227 // since commonName checking is ignored entirely, this is permitted.) |
| 1234 EXPECT_TRUE(name_constraints->IsPermittedCert( | 1228 EXPECT_TRUE(name_constraints->IsPermittedCert( |
| 1235 SequenceValueFromString(&name_us_az_ipv6), der::Input())); | 1229 SequenceValueFromString(&name_us_az_ipv6), der::Input())); |
| 1236 } | 1230 } |
| 1237 | 1231 |
| 1238 TEST_P(ParseNameConstraints, IsPermittedCertFailsOnEmptySubjectAltName) { | 1232 TEST_P(ParseNameConstraints, IsPermittedCertFailsOnEmptySubjectAltName) { |
| 1239 std::string constraints_der; | 1233 std::string constraints_der; |
| 1240 ASSERT_TRUE(LoadTestNameConstraint("dnsname.pem", &constraints_der)); | 1234 ASSERT_TRUE(LoadTestNameConstraint("dnsname.pem", &constraints_der)); |
| 1241 scoped_ptr<NameConstraints> name_constraints(NameConstraints::CreateFromDer( | 1235 scoped_ptr<NameConstraints> name_constraints(NameConstraints::CreateFromDer( |
| 1242 InputFromString(&constraints_der), is_critical())); | 1236 der::Input(&constraints_der), is_critical())); |
| 1243 ASSERT_TRUE(name_constraints); | 1237 ASSERT_TRUE(name_constraints); |
| 1244 | 1238 |
| 1245 std::string name_us_az; | 1239 std::string name_us_az; |
| 1246 ASSERT_TRUE(LoadTestName("name-us-arizona.pem", &name_us_az)); | 1240 ASSERT_TRUE(LoadTestName("name-us-arizona.pem", &name_us_az)); |
| 1247 | 1241 |
| 1248 // 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 |
| 1249 // subjectAltName is not present. | 1243 // subjectAltName is not present. |
| 1250 EXPECT_TRUE(name_constraints->IsPermittedCert( | 1244 EXPECT_TRUE(name_constraints->IsPermittedCert( |
| 1251 SequenceValueFromString(&name_us_az), der::Input())); | 1245 SequenceValueFromString(&name_us_az), der::Input())); |
| 1252 | 1246 |
| 1253 std::string san; | 1247 std::string san; |
| 1254 ASSERT_TRUE(LoadTestSubjectAltName("san-invalid-empty.pem", &san)); | 1248 ASSERT_TRUE(LoadTestSubjectAltName("san-invalid-empty.pem", &san)); |
| 1255 // Should fail if subjectAltName is present but empty. | 1249 // Should fail if subjectAltName is present but empty. |
| 1256 EXPECT_FALSE(name_constraints->IsPermittedCert( | 1250 EXPECT_FALSE(name_constraints->IsPermittedCert( |
| 1257 SequenceValueFromString(&name_us_az), InputFromString(&san))); | 1251 SequenceValueFromString(&name_us_az), der::Input(&san))); |
| 1258 } | 1252 } |
| 1259 | 1253 |
| 1260 TEST_P(ParseNameConstraints, IsPermittedCertFailsOnInvalidIpInSubjectAltName) { | 1254 TEST_P(ParseNameConstraints, IsPermittedCertFailsOnInvalidIpInSubjectAltName) { |
| 1261 std::string constraints_der; | 1255 std::string constraints_der; |
| 1262 ASSERT_TRUE(LoadTestNameConstraint("ipaddress.pem", &constraints_der)); | 1256 ASSERT_TRUE(LoadTestNameConstraint("ipaddress.pem", &constraints_der)); |
| 1263 scoped_ptr<NameConstraints> name_constraints(NameConstraints::CreateFromDer( | 1257 scoped_ptr<NameConstraints> name_constraints(NameConstraints::CreateFromDer( |
| 1264 InputFromString(&constraints_der), is_critical())); | 1258 der::Input(&constraints_der), is_critical())); |
| 1265 ASSERT_TRUE(name_constraints); | 1259 ASSERT_TRUE(name_constraints); |
| 1266 | 1260 |
| 1267 std::string name_us_az_192_168_1_1; | 1261 std::string name_us_az_192_168_1_1; |
| 1268 ASSERT_TRUE( | 1262 ASSERT_TRUE( |
| 1269 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)); |
| 1270 | 1264 |
| 1271 // Without the invalid subjectAltName, it passes. | 1265 // Without the invalid subjectAltName, it passes. |
| 1272 EXPECT_TRUE(name_constraints->IsPermittedCert( | 1266 EXPECT_TRUE(name_constraints->IsPermittedCert( |
| 1273 SequenceValueFromString(&name_us_az_192_168_1_1), der::Input())); | 1267 SequenceValueFromString(&name_us_az_192_168_1_1), der::Input())); |
| 1274 | 1268 |
| 1275 std::string san; | 1269 std::string san; |
| 1276 ASSERT_TRUE(LoadTestSubjectAltName("san-invalid-ipaddress.pem", &san)); | 1270 ASSERT_TRUE(LoadTestSubjectAltName("san-invalid-ipaddress.pem", &san)); |
| 1277 // Should fail if subjectAltName contains an invalid ip address. | 1271 // Should fail if subjectAltName contains an invalid ip address. |
| 1278 EXPECT_FALSE(name_constraints->IsPermittedCert( | 1272 EXPECT_FALSE(name_constraints->IsPermittedCert( |
| 1279 SequenceValueFromString(&name_us_az_192_168_1_1), InputFromString(&san))); | 1273 SequenceValueFromString(&name_us_az_192_168_1_1), der::Input(&san))); |
| 1280 } | 1274 } |
| 1281 | 1275 |
| 1282 } // namespace net | 1276 } // namespace net |
| OLD | NEW |