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

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: Rebased Created 4 years, 6 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
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 10
(...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 63 matching lines...) Expand 10 before | Expand all | Expand 10 after
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
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
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698