OLD | NEW |
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 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/http/transport_security_state.h" | 5 #include "net/http/transport_security_state.h" |
6 | 6 |
7 #include <algorithm> | 7 #include <algorithm> |
8 #include <string> | 8 #include <string> |
9 #include <vector> | 9 #include <vector> |
10 | 10 |
(...skipping 94 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
105 TransportSecurityState::DomainState domain_state; | 105 TransportSecurityState::DomainState domain_state; |
106 const base::Time current_time(base::Time::Now()); | 106 const base::Time current_time(base::Time::Now()); |
107 const base::Time expiry = current_time + base::TimeDelta::FromSeconds(1000); | 107 const base::Time expiry = current_time + base::TimeDelta::FromSeconds(1000); |
108 | 108 |
109 EXPECT_FALSE(state.GetDomainState("yahoo.com", true, &domain_state)); | 109 EXPECT_FALSE(state.GetDomainState("yahoo.com", true, &domain_state)); |
110 bool include_subdomains = true; | 110 bool include_subdomains = true; |
111 state.AddHSTS("yahoo.com", expiry, include_subdomains); | 111 state.AddHSTS("yahoo.com", expiry, include_subdomains); |
112 EXPECT_TRUE(state.GetDomainState("yahoo.com", true, &domain_state)); | 112 EXPECT_TRUE(state.GetDomainState("yahoo.com", true, &domain_state)); |
113 EXPECT_TRUE(state.GetDomainState("foo.yahoo.com", true, &domain_state)); | 113 EXPECT_TRUE(state.GetDomainState("foo.yahoo.com", true, &domain_state)); |
114 EXPECT_TRUE(state.GetDomainState("foo.bar.yahoo.com", true, &domain_state)); | 114 EXPECT_TRUE(state.GetDomainState("foo.bar.yahoo.com", true, &domain_state)); |
115 EXPECT_TRUE(state.GetDomainState("foo.bar.baz.yahoo.com", true, | 115 EXPECT_TRUE( |
116 &domain_state)); | 116 state.GetDomainState("foo.bar.baz.yahoo.com", true, &domain_state)); |
117 EXPECT_FALSE(state.GetDomainState("com", true, &domain_state)); | 117 EXPECT_FALSE(state.GetDomainState("com", true, &domain_state)); |
118 } | 118 } |
119 | 119 |
120 TEST_F(TransportSecurityStateTest, InvalidDomains) { | 120 TEST_F(TransportSecurityStateTest, InvalidDomains) { |
121 TransportSecurityState state; | 121 TransportSecurityState state; |
122 TransportSecurityState::DomainState domain_state; | 122 TransportSecurityState::DomainState domain_state; |
123 const base::Time current_time(base::Time::Now()); | 123 const base::Time current_time(base::Time::Now()); |
124 const base::Time expiry = current_time + base::TimeDelta::FromSeconds(1000); | 124 const base::Time expiry = current_time + base::TimeDelta::FromSeconds(1000); |
125 | 125 |
126 EXPECT_FALSE(state.GetDomainState("yahoo.com", true, &domain_state)); | 126 EXPECT_FALSE(state.GetDomainState("yahoo.com", true, &domain_state)); |
(...skipping 57 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
184 } | 184 } |
185 | 185 |
186 TEST_F(TransportSecurityStateTest, PreloadedDomainSet) { | 186 TEST_F(TransportSecurityStateTest, PreloadedDomainSet) { |
187 TransportSecurityState state; | 187 TransportSecurityState state; |
188 TransportSecurityState::DomainState domain_state; | 188 TransportSecurityState::DomainState domain_state; |
189 | 189 |
190 // The domain wasn't being set, leading to a blank string in the | 190 // The domain wasn't being set, leading to a blank string in the |
191 // chrome://net-internals/#hsts UI. So test that. | 191 // chrome://net-internals/#hsts UI. So test that. |
192 EXPECT_TRUE(state.GetDomainState("market.android.com", true, &domain_state)); | 192 EXPECT_TRUE(state.GetDomainState("market.android.com", true, &domain_state)); |
193 EXPECT_EQ(domain_state.domain, "market.android.com"); | 193 EXPECT_EQ(domain_state.domain, "market.android.com"); |
194 EXPECT_TRUE(state.GetDomainState("sub.market.android.com", true, | 194 EXPECT_TRUE( |
195 &domain_state)); | 195 state.GetDomainState("sub.market.android.com", true, &domain_state)); |
196 EXPECT_EQ(domain_state.domain, "market.android.com"); | 196 EXPECT_EQ(domain_state.domain, "market.android.com"); |
197 } | 197 } |
198 | 198 |
199 static bool ShouldRedirect(const char* hostname) { | 199 static bool ShouldRedirect(const char* hostname) { |
200 TransportSecurityState state; | 200 TransportSecurityState state; |
201 TransportSecurityState::DomainState domain_state; | 201 TransportSecurityState::DomainState domain_state; |
202 return state.GetDomainState(hostname, true /* SNI ok */, &domain_state) && | 202 return state.GetDomainState(hostname, true /* SNI ok */, &domain_state) && |
203 domain_state.ShouldUpgradeToSSL(); | 203 domain_state.ShouldUpgradeToSSL(); |
204 } | 204 } |
205 | 205 |
206 static bool HasState(const char* hostname) { | 206 static bool HasState(const char* hostname) { |
207 TransportSecurityState state; | 207 TransportSecurityState state; |
208 TransportSecurityState::DomainState domain_state; | 208 TransportSecurityState::DomainState domain_state; |
209 return state.GetDomainState(hostname, true /* SNI ok */, &domain_state); | 209 return state.GetDomainState(hostname, true /* SNI ok */, &domain_state); |
210 } | 210 } |
211 | 211 |
212 static bool HasPublicKeyPins(const char* hostname, bool sni_enabled) { | 212 static bool HasPublicKeyPins(const char* hostname, bool sni_enabled) { |
213 TransportSecurityState state; | 213 TransportSecurityState state; |
214 TransportSecurityState::DomainState domain_state; | 214 TransportSecurityState::DomainState domain_state; |
215 if (!state.GetDomainState(hostname, sni_enabled, &domain_state)) | 215 if (!state.GetDomainState(hostname, sni_enabled, &domain_state)) |
216 return false; | 216 return false; |
217 | 217 |
218 return domain_state.HasPublicKeyPins(); | 218 return domain_state.HasPublicKeyPins(); |
219 } | 219 } |
220 | 220 |
221 static bool HasPublicKeyPins(const char* hostname) { | 221 static bool HasPublicKeyPins(const char* hostname) { |
222 return HasPublicKeyPins(hostname, true); | 222 return HasPublicKeyPins(hostname, true); |
223 } | 223 } |
224 | 224 |
225 static bool OnlyPinning(const char *hostname) { | 225 static bool OnlyPinning(const char* hostname) { |
226 TransportSecurityState state; | 226 TransportSecurityState state; |
227 TransportSecurityState::DomainState domain_state; | 227 TransportSecurityState::DomainState domain_state; |
228 if (!state.GetDomainState(hostname, true /* SNI ok */, &domain_state)) | 228 if (!state.GetDomainState(hostname, true /* SNI ok */, &domain_state)) |
229 return false; | 229 return false; |
230 | 230 |
231 return (domain_state.static_spki_hashes.size() > 0 || | 231 return (domain_state.static_spki_hashes.size() > 0 || |
232 domain_state.bad_static_spki_hashes.size() > 0 || | 232 domain_state.bad_static_spki_hashes.size() > 0 || |
233 domain_state.dynamic_spki_hashes.size() > 0) && | 233 domain_state.dynamic_spki_hashes.size() > 0) && |
234 !domain_state.ShouldUpgradeToSSL(); | 234 !domain_state.ShouldUpgradeToSSL(); |
235 } | 235 } |
(...skipping 62 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
298 EXPECT_TRUE(OnlyPinning("appspot.com")); | 298 EXPECT_TRUE(OnlyPinning("appspot.com")); |
299 EXPECT_TRUE(OnlyPinning("googlesyndication.com")); | 299 EXPECT_TRUE(OnlyPinning("googlesyndication.com")); |
300 EXPECT_TRUE(OnlyPinning("doubleclick.net")); | 300 EXPECT_TRUE(OnlyPinning("doubleclick.net")); |
301 EXPECT_TRUE(OnlyPinning("googlegroups.com")); | 301 EXPECT_TRUE(OnlyPinning("googlegroups.com")); |
302 | 302 |
303 // Tests for domains that don't work without SNI. | 303 // Tests for domains that don't work without SNI. |
304 EXPECT_FALSE(state.GetDomainState("gmail.com", false, &domain_state)); | 304 EXPECT_FALSE(state.GetDomainState("gmail.com", false, &domain_state)); |
305 EXPECT_FALSE(state.GetDomainState("www.gmail.com", false, &domain_state)); | 305 EXPECT_FALSE(state.GetDomainState("www.gmail.com", false, &domain_state)); |
306 EXPECT_FALSE(state.GetDomainState("m.gmail.com", false, &domain_state)); | 306 EXPECT_FALSE(state.GetDomainState("m.gmail.com", false, &domain_state)); |
307 EXPECT_FALSE(state.GetDomainState("googlemail.com", false, &domain_state)); | 307 EXPECT_FALSE(state.GetDomainState("googlemail.com", false, &domain_state)); |
308 EXPECT_FALSE(state.GetDomainState("www.googlemail.com", false, | 308 EXPECT_FALSE( |
309 &domain_state)); | 309 state.GetDomainState("www.googlemail.com", false, &domain_state)); |
310 EXPECT_FALSE(state.GetDomainState("m.googlemail.com", false, &domain_state)); | 310 EXPECT_FALSE(state.GetDomainState("m.googlemail.com", false, &domain_state)); |
311 | 311 |
312 // Other hosts: | 312 // Other hosts: |
313 | 313 |
314 EXPECT_TRUE(ShouldRedirect("aladdinschools.appspot.com")); | 314 EXPECT_TRUE(ShouldRedirect("aladdinschools.appspot.com")); |
315 | 315 |
316 EXPECT_TRUE(ShouldRedirect("ottospora.nl")); | 316 EXPECT_TRUE(ShouldRedirect("ottospora.nl")); |
317 EXPECT_TRUE(ShouldRedirect("www.ottospora.nl")); | 317 EXPECT_TRUE(ShouldRedirect("www.ottospora.nl")); |
318 | 318 |
319 EXPECT_TRUE(ShouldRedirect("www.paycheckrecords.com")); | 319 EXPECT_TRUE(ShouldRedirect("www.paycheckrecords.com")); |
(...skipping 76 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
396 | 396 |
397 EXPECT_TRUE(ShouldRedirect("linx.net")); | 397 EXPECT_TRUE(ShouldRedirect("linx.net")); |
398 EXPECT_TRUE(ShouldRedirect("foo.linx.net")); | 398 EXPECT_TRUE(ShouldRedirect("foo.linx.net")); |
399 | 399 |
400 EXPECT_TRUE(ShouldRedirect("dropcam.com")); | 400 EXPECT_TRUE(ShouldRedirect("dropcam.com")); |
401 EXPECT_TRUE(ShouldRedirect("www.dropcam.com")); | 401 EXPECT_TRUE(ShouldRedirect("www.dropcam.com")); |
402 EXPECT_FALSE(HasState("foo.dropcam.com")); | 402 EXPECT_FALSE(HasState("foo.dropcam.com")); |
403 | 403 |
404 EXPECT_TRUE(state.GetDomainState("torproject.org", false, &domain_state)); | 404 EXPECT_TRUE(state.GetDomainState("torproject.org", false, &domain_state)); |
405 EXPECT_FALSE(domain_state.static_spki_hashes.empty()); | 405 EXPECT_FALSE(domain_state.static_spki_hashes.empty()); |
406 EXPECT_TRUE(state.GetDomainState("www.torproject.org", false, | 406 EXPECT_TRUE(state.GetDomainState("www.torproject.org", false, &domain_state)); |
407 &domain_state)); | |
408 EXPECT_FALSE(domain_state.static_spki_hashes.empty()); | 407 EXPECT_FALSE(domain_state.static_spki_hashes.empty()); |
409 EXPECT_TRUE(state.GetDomainState("check.torproject.org", false, | 408 EXPECT_TRUE( |
410 &domain_state)); | 409 state.GetDomainState("check.torproject.org", false, &domain_state)); |
411 EXPECT_FALSE(domain_state.static_spki_hashes.empty()); | 410 EXPECT_FALSE(domain_state.static_spki_hashes.empty()); |
412 EXPECT_TRUE(state.GetDomainState("blog.torproject.org", false, | 411 EXPECT_TRUE( |
413 &domain_state)); | 412 state.GetDomainState("blog.torproject.org", false, &domain_state)); |
414 EXPECT_FALSE(domain_state.static_spki_hashes.empty()); | 413 EXPECT_FALSE(domain_state.static_spki_hashes.empty()); |
415 EXPECT_TRUE(ShouldRedirect("ebanking.indovinabank.com.vn")); | 414 EXPECT_TRUE(ShouldRedirect("ebanking.indovinabank.com.vn")); |
416 EXPECT_TRUE(ShouldRedirect("foo.ebanking.indovinabank.com.vn")); | 415 EXPECT_TRUE(ShouldRedirect("foo.ebanking.indovinabank.com.vn")); |
417 | 416 |
418 EXPECT_TRUE(ShouldRedirect("epoxate.com")); | 417 EXPECT_TRUE(ShouldRedirect("epoxate.com")); |
419 EXPECT_FALSE(HasState("foo.epoxate.com")); | 418 EXPECT_FALSE(HasState("foo.epoxate.com")); |
420 | 419 |
421 EXPECT_TRUE(HasPublicKeyPins("torproject.org")); | 420 EXPECT_TRUE(HasPublicKeyPins("torproject.org")); |
422 EXPECT_TRUE(HasPublicKeyPins("www.torproject.org")); | 421 EXPECT_TRUE(HasPublicKeyPins("www.torproject.org")); |
423 EXPECT_TRUE(HasPublicKeyPins("check.torproject.org")); | 422 EXPECT_TRUE(HasPublicKeyPins("check.torproject.org")); |
(...skipping 107 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
531 EXPECT_TRUE(HasPublicKeyPins("www.twitter.com")); | 530 EXPECT_TRUE(HasPublicKeyPins("www.twitter.com")); |
532 EXPECT_TRUE(HasPublicKeyPins("api.twitter.com")); | 531 EXPECT_TRUE(HasPublicKeyPins("api.twitter.com")); |
533 EXPECT_TRUE(HasPublicKeyPins("oauth.twitter.com")); | 532 EXPECT_TRUE(HasPublicKeyPins("oauth.twitter.com")); |
534 EXPECT_TRUE(HasPublicKeyPins("mobile.twitter.com")); | 533 EXPECT_TRUE(HasPublicKeyPins("mobile.twitter.com")); |
535 EXPECT_TRUE(HasPublicKeyPins("dev.twitter.com")); | 534 EXPECT_TRUE(HasPublicKeyPins("dev.twitter.com")); |
536 EXPECT_TRUE(HasPublicKeyPins("business.twitter.com")); | 535 EXPECT_TRUE(HasPublicKeyPins("business.twitter.com")); |
537 EXPECT_TRUE(HasPublicKeyPins("platform.twitter.com")); | 536 EXPECT_TRUE(HasPublicKeyPins("platform.twitter.com")); |
538 EXPECT_TRUE(HasPublicKeyPins("si0.twimg.com")); | 537 EXPECT_TRUE(HasPublicKeyPins("si0.twimg.com")); |
539 } | 538 } |
540 | 539 |
541 static bool AddHash(const std::string& type_and_base64, | 540 static bool AddHash(const std::string& type_and_base64, HashValueVector* out) { |
542 HashValueVector* out) { | |
543 HashValue hash; | 541 HashValue hash; |
544 if (!hash.FromString(type_and_base64)) | 542 if (!hash.FromString(type_and_base64)) |
545 return false; | 543 return false; |
546 | 544 |
547 out->push_back(hash); | 545 out->push_back(hash); |
548 return true; | 546 return true; |
549 } | 547 } |
550 | 548 |
551 TEST_F(TransportSecurityStateTest, PinValidationWithoutRejectedCerts) { | 549 TEST_F(TransportSecurityStateTest, PinValidationWithoutRejectedCerts) { |
552 // kGoodPath is blog.torproject.org. | 550 // kGoodPath is blog.torproject.org. |
553 static const char* kGoodPath[] = { | 551 static const char* kGoodPath[] = { |
554 "sha1/m9lHYJYke9k0GtVZ+bXSQYE8nDI=", | 552 "sha1/m9lHYJYke9k0GtVZ+bXSQYE8nDI=", "sha1/o5OZxATDsgmwgcIfIWIneMJ0jkw=", |
555 "sha1/o5OZxATDsgmwgcIfIWIneMJ0jkw=", | 553 "sha1/wHqYaI2J+6sFZAwRfap9ZbjKzE4=", NULL, |
556 "sha1/wHqYaI2J+6sFZAwRfap9ZbjKzE4=", | |
557 NULL, | |
558 }; | 554 }; |
559 | 555 |
560 // kBadPath is plus.google.com via Trustcenter, which is utterly wrong for | 556 // kBadPath is plus.google.com via Trustcenter, which is utterly wrong for |
561 // torproject.org. | 557 // torproject.org. |
562 static const char* kBadPath[] = { | 558 static const char* kBadPath[] = { |
563 "sha1/4BjDjn8v2lWeUFQnqSs0BgbIcrU=", | 559 "sha1/4BjDjn8v2lWeUFQnqSs0BgbIcrU=", "sha1/gzuEEAB/bkqdQS3EIjk2by7lW+k=", |
564 "sha1/gzuEEAB/bkqdQS3EIjk2by7lW+k=", | 560 "sha1/SOZo+SvSspXXR9gjIBBPM5iQn9Q=", NULL, |
565 "sha1/SOZo+SvSspXXR9gjIBBPM5iQn9Q=", | |
566 NULL, | |
567 }; | 561 }; |
568 | 562 |
569 HashValueVector good_hashes, bad_hashes; | 563 HashValueVector good_hashes, bad_hashes; |
570 | 564 |
571 for (size_t i = 0; kGoodPath[i]; i++) { | 565 for (size_t i = 0; kGoodPath[i]; i++) { |
572 EXPECT_TRUE(AddHash(kGoodPath[i], &good_hashes)); | 566 EXPECT_TRUE(AddHash(kGoodPath[i], &good_hashes)); |
573 } | 567 } |
574 for (size_t i = 0; kBadPath[i]; i++) { | 568 for (size_t i = 0; kBadPath[i]; i++) { |
575 EXPECT_TRUE(AddHash(kBadPath[i], &bad_hashes)); | 569 EXPECT_TRUE(AddHash(kBadPath[i], &bad_hashes)); |
576 } | 570 } |
(...skipping 45 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
622 TransportSecurityState::DomainState domain_state; | 616 TransportSecurityState::DomainState domain_state; |
623 const base::Time current_time(base::Time::Now()); | 617 const base::Time current_time(base::Time::Now()); |
624 const base::Time expiry = current_time + base::TimeDelta::FromSeconds(1000); | 618 const base::Time expiry = current_time + base::TimeDelta::FromSeconds(1000); |
625 domain_state.upgrade_expiry = expiry; | 619 domain_state.upgrade_expiry = expiry; |
626 EnableHost(&state, "www.google.com", domain_state); | 620 EnableHost(&state, "www.google.com", domain_state); |
627 | 621 |
628 EXPECT_TRUE(state.GetDomainState("www.google.com", true, &domain_state)); | 622 EXPECT_TRUE(state.GetDomainState("www.google.com", true, &domain_state)); |
629 } | 623 } |
630 | 624 |
631 TEST_F(TransportSecurityStateTest, GooglePinnedProperties) { | 625 TEST_F(TransportSecurityStateTest, GooglePinnedProperties) { |
632 EXPECT_FALSE(TransportSecurityState::IsGooglePinnedProperty( | 626 EXPECT_FALSE( |
633 "www.example.com", true)); | 627 TransportSecurityState::IsGooglePinnedProperty("www.example.com", true)); |
634 EXPECT_FALSE(TransportSecurityState::IsGooglePinnedProperty( | 628 EXPECT_FALSE( |
635 "www.paypal.com", true)); | 629 TransportSecurityState::IsGooglePinnedProperty("www.paypal.com", true)); |
636 EXPECT_FALSE(TransportSecurityState::IsGooglePinnedProperty( | 630 EXPECT_FALSE( |
637 "mail.twitter.com", true)); | 631 TransportSecurityState::IsGooglePinnedProperty("mail.twitter.com", true)); |
638 EXPECT_FALSE(TransportSecurityState::IsGooglePinnedProperty( | 632 EXPECT_FALSE(TransportSecurityState::IsGooglePinnedProperty( |
639 "www.google.com.int", true)); | 633 "www.google.com.int", true)); |
640 EXPECT_FALSE(TransportSecurityState::IsGooglePinnedProperty( | 634 EXPECT_FALSE( |
641 "jottit.com", true)); | 635 TransportSecurityState::IsGooglePinnedProperty("jottit.com", true)); |
642 // learn.doubleclick.net has a more specific match than | 636 // learn.doubleclick.net has a more specific match than |
643 // *.doubleclick.com, and has 0 or NULL for its required certs. | 637 // *.doubleclick.com, and has 0 or NULL for its required certs. |
644 // This test ensures that the exact-match-preferred behavior | 638 // This test ensures that the exact-match-preferred behavior |
645 // works. | 639 // works. |
646 EXPECT_FALSE(TransportSecurityState::IsGooglePinnedProperty( | 640 EXPECT_FALSE(TransportSecurityState::IsGooglePinnedProperty( |
647 "learn.doubleclick.net", true)); | 641 "learn.doubleclick.net", true)); |
648 | 642 |
649 EXPECT_TRUE(TransportSecurityState::IsGooglePinnedProperty( | 643 EXPECT_TRUE(TransportSecurityState::IsGooglePinnedProperty( |
650 "encrypted.google.com", true)); | 644 "encrypted.google.com", true)); |
651 EXPECT_TRUE(TransportSecurityState::IsGooglePinnedProperty( | 645 EXPECT_TRUE( |
652 "mail.google.com", true)); | 646 TransportSecurityState::IsGooglePinnedProperty("mail.google.com", true)); |
653 EXPECT_TRUE(TransportSecurityState::IsGooglePinnedProperty( | 647 EXPECT_TRUE(TransportSecurityState::IsGooglePinnedProperty( |
654 "accounts.google.com", true)); | 648 "accounts.google.com", true)); |
655 EXPECT_TRUE(TransportSecurityState::IsGooglePinnedProperty( | 649 EXPECT_TRUE( |
656 "doubleclick.net", true)); | 650 TransportSecurityState::IsGooglePinnedProperty("doubleclick.net", true)); |
657 EXPECT_TRUE(TransportSecurityState::IsGooglePinnedProperty( | 651 EXPECT_TRUE(TransportSecurityState::IsGooglePinnedProperty( |
658 "ad.doubleclick.net", true)); | 652 "ad.doubleclick.net", true)); |
659 EXPECT_TRUE(TransportSecurityState::IsGooglePinnedProperty( | 653 EXPECT_TRUE( |
660 "youtube.com", true)); | 654 TransportSecurityState::IsGooglePinnedProperty("youtube.com", true)); |
661 EXPECT_TRUE(TransportSecurityState::IsGooglePinnedProperty( | 655 EXPECT_TRUE(TransportSecurityState::IsGooglePinnedProperty( |
662 "www.profiles.google.com", true)); | 656 "www.profiles.google.com", true)); |
663 EXPECT_TRUE(TransportSecurityState::IsGooglePinnedProperty( | 657 EXPECT_TRUE(TransportSecurityState::IsGooglePinnedProperty( |
664 "checkout.google.com", true)); | 658 "checkout.google.com", true)); |
665 EXPECT_TRUE(TransportSecurityState::IsGooglePinnedProperty( | 659 EXPECT_TRUE(TransportSecurityState::IsGooglePinnedProperty( |
666 "googleadservices.com", true)); | 660 "googleadservices.com", true)); |
667 | 661 |
668 // Test with sni_enabled false: | 662 // Test with sni_enabled false: |
669 EXPECT_FALSE(TransportSecurityState::IsGooglePinnedProperty( | 663 EXPECT_FALSE( |
670 "www.example.com", false)); | 664 TransportSecurityState::IsGooglePinnedProperty("www.example.com", false)); |
671 EXPECT_FALSE(TransportSecurityState::IsGooglePinnedProperty( | 665 EXPECT_FALSE( |
672 "www.paypal.com", false)); | 666 TransportSecurityState::IsGooglePinnedProperty("www.paypal.com", false)); |
673 EXPECT_TRUE(TransportSecurityState::IsGooglePinnedProperty( | 667 EXPECT_TRUE(TransportSecurityState::IsGooglePinnedProperty( |
674 "checkout.google.com", false)); | 668 "checkout.google.com", false)); |
675 EXPECT_TRUE(TransportSecurityState::IsGooglePinnedProperty( | 669 EXPECT_TRUE(TransportSecurityState::IsGooglePinnedProperty( |
676 "googleadservices.com", false)); | 670 "googleadservices.com", false)); |
677 | 671 |
678 // Test some SNI hosts: | 672 // Test some SNI hosts: |
679 EXPECT_TRUE(TransportSecurityState::IsGooglePinnedProperty( | 673 EXPECT_TRUE( |
680 "gmail.com", true)); | 674 TransportSecurityState::IsGooglePinnedProperty("gmail.com", true)); |
681 EXPECT_TRUE(TransportSecurityState::IsGooglePinnedProperty( | 675 EXPECT_TRUE( |
682 "googlegroups.com", true)); | 676 TransportSecurityState::IsGooglePinnedProperty("googlegroups.com", true)); |
683 EXPECT_TRUE(TransportSecurityState::IsGooglePinnedProperty( | 677 EXPECT_TRUE(TransportSecurityState::IsGooglePinnedProperty( |
684 "www.googlegroups.com", true)); | 678 "www.googlegroups.com", true)); |
685 // Expect to fail for SNI hosts when not searching the SNI list: | 679 // Expect to fail for SNI hosts when not searching the SNI list: |
686 EXPECT_FALSE(TransportSecurityState::IsGooglePinnedProperty( | 680 EXPECT_FALSE( |
687 "gmail.com", false)); | 681 TransportSecurityState::IsGooglePinnedProperty("gmail.com", false)); |
688 EXPECT_FALSE(TransportSecurityState::IsGooglePinnedProperty( | 682 EXPECT_FALSE(TransportSecurityState::IsGooglePinnedProperty( |
689 "googlegroups.com", false)); | 683 "googlegroups.com", false)); |
690 EXPECT_FALSE(TransportSecurityState::IsGooglePinnedProperty( | 684 EXPECT_FALSE(TransportSecurityState::IsGooglePinnedProperty( |
691 "www.googlegroups.com", false)); | 685 "www.googlegroups.com", false)); |
692 } | 686 } |
693 | 687 |
694 } // namespace net | 688 } // namespace net |
OLD | NEW |