xref: /aosp_15_r20/external/cronet/net/ssl/ssl_config_service.cc (revision 6777b5387eb2ff775bb5750e3f5d96f37fb7352b)
1*6777b538SAndroid Build Coastguard Worker // Copyright 2012 The Chromium Authors
2*6777b538SAndroid Build Coastguard Worker // Use of this source code is governed by a BSD-style license that can be
3*6777b538SAndroid Build Coastguard Worker // found in the LICENSE file.
4*6777b538SAndroid Build Coastguard Worker 
5*6777b538SAndroid Build Coastguard Worker #include "net/ssl/ssl_config_service.h"
6*6777b538SAndroid Build Coastguard Worker 
7*6777b538SAndroid Build Coastguard Worker #include <tuple>
8*6777b538SAndroid Build Coastguard Worker 
9*6777b538SAndroid Build Coastguard Worker #include "base/feature_list.h"
10*6777b538SAndroid Build Coastguard Worker #include "base/observer_list.h"
11*6777b538SAndroid Build Coastguard Worker #include "net/base/features.h"
12*6777b538SAndroid Build Coastguard Worker #include "net/ssl/ssl_config_service_defaults.h"
13*6777b538SAndroid Build Coastguard Worker 
14*6777b538SAndroid Build Coastguard Worker namespace net {
15*6777b538SAndroid Build Coastguard Worker 
16*6777b538SAndroid Build Coastguard Worker SSLContextConfig::SSLContextConfig() = default;
17*6777b538SAndroid Build Coastguard Worker SSLContextConfig::SSLContextConfig(const SSLContextConfig&) = default;
18*6777b538SAndroid Build Coastguard Worker SSLContextConfig::SSLContextConfig(SSLContextConfig&&) = default;
19*6777b538SAndroid Build Coastguard Worker SSLContextConfig::~SSLContextConfig() = default;
20*6777b538SAndroid Build Coastguard Worker SSLContextConfig& SSLContextConfig::operator=(const SSLContextConfig&) =
21*6777b538SAndroid Build Coastguard Worker     default;
22*6777b538SAndroid Build Coastguard Worker SSLContextConfig& SSLContextConfig::operator=(SSLContextConfig&&) = default;
23*6777b538SAndroid Build Coastguard Worker bool SSLContextConfig::operator==(const SSLContextConfig&) const = default;
24*6777b538SAndroid Build Coastguard Worker 
PostQuantumKeyAgreementEnabled() const25*6777b538SAndroid Build Coastguard Worker bool SSLContextConfig::PostQuantumKeyAgreementEnabled() const {
26*6777b538SAndroid Build Coastguard Worker   return post_quantum_override.value_or(
27*6777b538SAndroid Build Coastguard Worker       base::FeatureList::IsEnabled(features::kPostQuantumKyber));
28*6777b538SAndroid Build Coastguard Worker }
29*6777b538SAndroid Build Coastguard Worker 
SSLConfigService()30*6777b538SAndroid Build Coastguard Worker SSLConfigService::SSLConfigService()
31*6777b538SAndroid Build Coastguard Worker     : observer_list_(base::ObserverListPolicy::EXISTING_ONLY) {}
32*6777b538SAndroid Build Coastguard Worker 
33*6777b538SAndroid Build Coastguard Worker SSLConfigService::~SSLConfigService() = default;
34*6777b538SAndroid Build Coastguard Worker 
AddObserver(Observer * observer)35*6777b538SAndroid Build Coastguard Worker void SSLConfigService::AddObserver(Observer* observer) {
36*6777b538SAndroid Build Coastguard Worker   observer_list_.AddObserver(observer);
37*6777b538SAndroid Build Coastguard Worker }
38*6777b538SAndroid Build Coastguard Worker 
RemoveObserver(Observer * observer)39*6777b538SAndroid Build Coastguard Worker void SSLConfigService::RemoveObserver(Observer* observer) {
40*6777b538SAndroid Build Coastguard Worker   observer_list_.RemoveObserver(observer);
41*6777b538SAndroid Build Coastguard Worker }
42*6777b538SAndroid Build Coastguard Worker 
NotifySSLContextConfigChange()43*6777b538SAndroid Build Coastguard Worker void SSLConfigService::NotifySSLContextConfigChange() {
44*6777b538SAndroid Build Coastguard Worker   for (auto& observer : observer_list_)
45*6777b538SAndroid Build Coastguard Worker     observer.OnSSLContextConfigChanged();
46*6777b538SAndroid Build Coastguard Worker }
47*6777b538SAndroid Build Coastguard Worker 
ProcessConfigUpdate(const SSLContextConfig & old_config,const SSLContextConfig & new_config,bool force_notification)48*6777b538SAndroid Build Coastguard Worker void SSLConfigService::ProcessConfigUpdate(const SSLContextConfig& old_config,
49*6777b538SAndroid Build Coastguard Worker                                            const SSLContextConfig& new_config,
50*6777b538SAndroid Build Coastguard Worker                                            bool force_notification) {
51*6777b538SAndroid Build Coastguard Worker   // Do nothing if the configuration hasn't changed.
52*6777b538SAndroid Build Coastguard Worker   if (old_config != new_config || force_notification) {
53*6777b538SAndroid Build Coastguard Worker     NotifySSLContextConfigChange();
54*6777b538SAndroid Build Coastguard Worker   }
55*6777b538SAndroid Build Coastguard Worker }
56*6777b538SAndroid Build Coastguard Worker 
57*6777b538SAndroid Build Coastguard Worker }  // namespace net
58