Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(33)

Side by Side Diff: net/http/transport_security_state.cc

Issue 2076363002: Introduce the ability to require CT for specific hosts (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@require_ct_enforcer
Patch Set: Android is weird Created 4 years, 5 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « net/http/transport_security_state.h ('k') | net/http/transport_security_state_unittest.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
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
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
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
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
OLDNEW
« no previous file with comments | « net/http/transport_security_state.h ('k') | net/http/transport_security_state_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698