| 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 <memory> | 8 #include <memory> |
| 9 #include <utility> | 9 #include <utility> |
| 10 | 10 |
| (...skipping 595 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 606 << hostname; | 606 << hostname; |
| 607 return false; | 607 return false; |
| 608 } | 608 } |
| 609 | 609 |
| 610 return found; | 610 return found; |
| 611 } | 611 } |
| 612 | 612 |
| 613 } // namespace | 613 } // namespace |
| 614 | 614 |
| 615 TransportSecurityState::TransportSecurityState() | 615 TransportSecurityState::TransportSecurityState() |
| 616 : delegate_(nullptr), | 616 : enable_static_pins_(true), |
| 617 report_sender_(nullptr), | |
| 618 enable_static_pins_(true), | |
| 619 enable_static_expect_ct_(true), | 617 enable_static_expect_ct_(true), |
| 620 enable_static_expect_staple_(false), | 618 enable_static_expect_staple_(false), |
| 621 expect_ct_reporter_(nullptr), | |
| 622 sent_reports_cache_(kMaxHPKPReportCacheEntries) { | 619 sent_reports_cache_(kMaxHPKPReportCacheEntries) { |
| 623 // Static pinning is only enabled for official builds to make sure that | 620 // Static pinning is only enabled for official builds to make sure that |
| 624 // others don't end up with pins that cannot be easily updated. | 621 // others don't end up with pins that cannot be easily updated. |
| 625 #if !defined(OFFICIAL_BUILD) || defined(OS_ANDROID) || defined(OS_IOS) | 622 #if !defined(OFFICIAL_BUILD) || defined(OS_ANDROID) || defined(OS_IOS) |
| 626 enable_static_pins_ = false; | 623 enable_static_pins_ = false; |
| 627 enable_static_expect_ct_ = false; | 624 enable_static_expect_ct_ = false; |
| 628 #endif | 625 #endif |
| 629 DCHECK(CalledOnValidThread()); | 626 DCHECK(CalledOnValidThread()); |
| 630 } | 627 } |
| 631 | 628 |
| (...skipping 63 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 695 STSState unused; | 692 STSState unused; |
| 696 PKPState static_pkp_state; | 693 PKPState static_pkp_state; |
| 697 if (GetStaticDomainState(host, &unused, &static_pkp_state)) { | 694 if (GetStaticDomainState(host, &unused, &static_pkp_state)) { |
| 698 if (static_pkp_state.HasPublicKeyPins()) | 695 if (static_pkp_state.HasPublicKeyPins()) |
| 699 return true; | 696 return true; |
| 700 } | 697 } |
| 701 | 698 |
| 702 return false; | 699 return false; |
| 703 } | 700 } |
| 704 | 701 |
| 702 bool TransportSecurityState::ShouldRequireCT( |
| 703 const std::string& hostname, |
| 704 const X509Certificate* validated_certificate_chain, |
| 705 const HashValueVector& public_key_hashes) { |
| 706 using CTRequirementLevel = RequireCTDelegate::CTRequirementLevel; |
| 707 |
| 708 CTRequirementLevel ct_required = CTRequirementLevel::DEFAULT; |
| 709 if (require_ct_delegate_) |
| 710 ct_required = require_ct_delegate_->IsCTRequiredForHost(hostname); |
| 711 if (ct_required != CTRequirementLevel::DEFAULT) |
| 712 return ct_required == CTRequirementLevel::REQUIRED; |
| 713 |
| 714 return false; |
| 715 } |
| 716 |
| 705 void TransportSecurityState::SetDelegate( | 717 void TransportSecurityState::SetDelegate( |
| 706 TransportSecurityState::Delegate* delegate) { | 718 TransportSecurityState::Delegate* delegate) { |
| 707 DCHECK(CalledOnValidThread()); | 719 DCHECK(CalledOnValidThread()); |
| 708 delegate_ = delegate; | 720 delegate_ = delegate; |
| 709 } | 721 } |
| 710 | 722 |
| 711 void TransportSecurityState::SetReportSender( | 723 void TransportSecurityState::SetReportSender( |
| 712 TransportSecurityState::ReportSenderInterface* report_sender) { | 724 TransportSecurityState::ReportSenderInterface* report_sender) { |
| 713 DCHECK(CalledOnValidThread()); | 725 DCHECK(CalledOnValidThread()); |
| 714 report_sender_ = report_sender; | 726 report_sender_ = report_sender; |
| 715 if (report_sender_) | 727 if (report_sender_) |
| 716 report_sender_->SetErrorCallback(base::Bind(RecordUMAForHPKPReportFailure)); | 728 report_sender_->SetErrorCallback(base::Bind(RecordUMAForHPKPReportFailure)); |
| 717 } | 729 } |
| 718 | 730 |
| 719 void TransportSecurityState::SetExpectCTReporter( | 731 void TransportSecurityState::SetExpectCTReporter( |
| 720 ExpectCTReporter* expect_ct_reporter) { | 732 ExpectCTReporter* expect_ct_reporter) { |
| 721 DCHECK(CalledOnValidThread()); | 733 DCHECK(CalledOnValidThread()); |
| 722 expect_ct_reporter_ = expect_ct_reporter; | 734 expect_ct_reporter_ = expect_ct_reporter; |
| 723 } | 735 } |
| 724 | 736 |
| 737 void TransportSecurityState::SetRequireCTDelegate(RequireCTDelegate* delegate) { |
| 738 DCHECK(CalledOnValidThread()); |
| 739 require_ct_delegate_ = delegate; |
| 740 } |
| 741 |
| 725 void TransportSecurityState::AddHSTSInternal( | 742 void TransportSecurityState::AddHSTSInternal( |
| 726 const std::string& host, | 743 const std::string& host, |
| 727 TransportSecurityState::STSState::UpgradeMode upgrade_mode, | 744 TransportSecurityState::STSState::UpgradeMode upgrade_mode, |
| 728 const base::Time& expiry, | 745 const base::Time& expiry, |
| 729 bool include_subdomains) { | 746 bool include_subdomains) { |
| 730 DCHECK(CalledOnValidThread()); | 747 DCHECK(CalledOnValidThread()); |
| 731 | 748 |
| 732 STSState sts_state; | 749 STSState sts_state; |
| 733 sts_state.last_observed = base::Time::Now(); | 750 sts_state.last_observed = base::Time::Now(); |
| 734 sts_state.include_subdomains = include_subdomains; | 751 sts_state.include_subdomains = include_subdomains; |
| (...skipping 658 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1393 TransportSecurityState::PKPStateIterator::PKPStateIterator( | 1410 TransportSecurityState::PKPStateIterator::PKPStateIterator( |
| 1394 const TransportSecurityState& state) | 1411 const TransportSecurityState& state) |
| 1395 : iterator_(state.enabled_pkp_hosts_.begin()), | 1412 : iterator_(state.enabled_pkp_hosts_.begin()), |
| 1396 end_(state.enabled_pkp_hosts_.end()) { | 1413 end_(state.enabled_pkp_hosts_.end()) { |
| 1397 } | 1414 } |
| 1398 | 1415 |
| 1399 TransportSecurityState::PKPStateIterator::~PKPStateIterator() { | 1416 TransportSecurityState::PKPStateIterator::~PKPStateIterator() { |
| 1400 } | 1417 } |
| 1401 | 1418 |
| 1402 } // namespace | 1419 } // namespace |
| OLD | NEW |