| 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 #include <vector> | 10 #include <vector> |
| (...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 64 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 696 STSState unused; | 693 STSState unused; |
| 697 PKPState static_pkp_state; | 694 PKPState static_pkp_state; |
| 698 if (GetStaticDomainState(host, &unused, &static_pkp_state)) { | 695 if (GetStaticDomainState(host, &unused, &static_pkp_state)) { |
| 699 if (static_pkp_state.HasPublicKeyPins()) | 696 if (static_pkp_state.HasPublicKeyPins()) |
| 700 return true; | 697 return true; |
| 701 } | 698 } |
| 702 | 699 |
| 703 return false; | 700 return false; |
| 704 } | 701 } |
| 705 | 702 |
| 703 bool TransportSecurityState::ShouldRequireCT( |
| 704 const std::string& hostname, |
| 705 const X509Certificate* validated_certificate_chain, |
| 706 const HashValueVector& public_key_hashes) { |
| 707 using CTRequirementLevel = RequireCTDelegate::CTRequirementLevel; |
| 708 |
| 709 CTRequirementLevel ct_required = CTRequirementLevel::DEFAULT; |
| 710 if (require_ct_delegate_) |
| 711 ct_required = require_ct_delegate_->IsCTRequiredForHost(hostname); |
| 712 if (ct_required != CTRequirementLevel::DEFAULT) |
| 713 return ct_required == CTRequirementLevel::REQUIRED; |
| 714 |
| 715 return false; |
| 716 } |
| 717 |
| 706 void TransportSecurityState::SetDelegate( | 718 void TransportSecurityState::SetDelegate( |
| 707 TransportSecurityState::Delegate* delegate) { | 719 TransportSecurityState::Delegate* delegate) { |
| 708 DCHECK(CalledOnValidThread()); | 720 DCHECK(CalledOnValidThread()); |
| 709 delegate_ = delegate; | 721 delegate_ = delegate; |
| 710 } | 722 } |
| 711 | 723 |
| 712 void TransportSecurityState::SetReportSender( | 724 void TransportSecurityState::SetReportSender( |
| 713 TransportSecurityState::ReportSenderInterface* report_sender) { | 725 TransportSecurityState::ReportSenderInterface* report_sender) { |
| 714 DCHECK(CalledOnValidThread()); | 726 DCHECK(CalledOnValidThread()); |
| 715 report_sender_ = report_sender; | 727 report_sender_ = report_sender; |
| 716 if (report_sender_) | 728 if (report_sender_) |
| 717 report_sender_->SetErrorCallback(base::Bind(RecordUMAForHPKPReportFailure)); | 729 report_sender_->SetErrorCallback(base::Bind(RecordUMAForHPKPReportFailure)); |
| 718 } | 730 } |
| 719 | 731 |
| 720 void TransportSecurityState::SetExpectCTReporter( | 732 void TransportSecurityState::SetExpectCTReporter( |
| 721 ExpectCTReporter* expect_ct_reporter) { | 733 ExpectCTReporter* expect_ct_reporter) { |
| 722 DCHECK(CalledOnValidThread()); | 734 DCHECK(CalledOnValidThread()); |
| 723 expect_ct_reporter_ = expect_ct_reporter; | 735 expect_ct_reporter_ = expect_ct_reporter; |
| 724 } | 736 } |
| 725 | 737 |
| 738 void TransportSecurityState::SetRequireCTDelegate(RequireCTDelegate* delegate) { |
| 739 DCHECK(CalledOnValidThread()); |
| 740 require_ct_delegate_ = delegate; |
| 741 } |
| 742 |
| 726 void TransportSecurityState::AddHSTSInternal( | 743 void TransportSecurityState::AddHSTSInternal( |
| 727 const std::string& host, | 744 const std::string& host, |
| 728 TransportSecurityState::STSState::UpgradeMode upgrade_mode, | 745 TransportSecurityState::STSState::UpgradeMode upgrade_mode, |
| 729 const base::Time& expiry, | 746 const base::Time& expiry, |
| 730 bool include_subdomains) { | 747 bool include_subdomains) { |
| 731 DCHECK(CalledOnValidThread()); | 748 DCHECK(CalledOnValidThread()); |
| 732 | 749 |
| 733 STSState sts_state; | 750 STSState sts_state; |
| 734 sts_state.last_observed = base::Time::Now(); | 751 sts_state.last_observed = base::Time::Now(); |
| 735 sts_state.include_subdomains = include_subdomains; | 752 sts_state.include_subdomains = include_subdomains; |
| (...skipping 664 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1400 TransportSecurityState::PKPStateIterator::PKPStateIterator( | 1417 TransportSecurityState::PKPStateIterator::PKPStateIterator( |
| 1401 const TransportSecurityState& state) | 1418 const TransportSecurityState& state) |
| 1402 : iterator_(state.enabled_pkp_hosts_.begin()), | 1419 : iterator_(state.enabled_pkp_hosts_.begin()), |
| 1403 end_(state.enabled_pkp_hosts_.end()) { | 1420 end_(state.enabled_pkp_hosts_.end()) { |
| 1404 } | 1421 } |
| 1405 | 1422 |
| 1406 TransportSecurityState::PKPStateIterator::~PKPStateIterator() { | 1423 TransportSecurityState::PKPStateIterator::~PKPStateIterator() { |
| 1407 } | 1424 } |
| 1408 | 1425 |
| 1409 } // namespace | 1426 } // namespace |
| OLD | NEW |