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

Side by Side Diff: net/base/ssl_config_service.h

Issue 3412016: FBTF: Move a bunch of code to the headers and remove includes. (Closed) Base URL: http://src.chromium.org/git/chromium.git
Patch Set: Rebase + fixed windows issues locally Created 10 years, 3 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/base/sdch_manager.cc ('k') | net/base/ssl_config_service.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) 2006-2009 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2006-2009 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 #ifndef NET_BASE_SSL_CONFIG_SERVICE_H_ 5 #ifndef NET_BASE_SSL_CONFIG_SERVICE_H_
6 #define NET_BASE_SSL_CONFIG_SERVICE_H_ 6 #define NET_BASE_SSL_CONFIG_SERVICE_H_
7 #pragma once 7 #pragma once
8 8
9 #include <vector> 9 #include <vector>
10 10
11 #include "base/observer_list.h" 11 #include "base/observer_list.h"
12 #include "base/ref_counted.h" 12 #include "base/ref_counted.h"
13 #include "net/base/x509_certificate.h" 13 #include "net/base/x509_certificate.h"
14 14
15 namespace net { 15 namespace net {
16 16
17 // A collection of SSL-related configuration settings. 17 // A collection of SSL-related configuration settings.
18 struct SSLConfig { 18 struct SSLConfig {
19 // Default to revocation checking. 19 // Default to revocation checking.
20 // Default to SSL 2.0 off, SSL 3.0 on, and TLS 1.0 on. 20 // Default to SSL 2.0 off, SSL 3.0 on, and TLS 1.0 on.
21 SSLConfig() 21 SSLConfig();
22 : rev_checking_enabled(true), ssl2_enabled(false), ssl3_enabled(true), 22 ~SSLConfig();
23 tls1_enabled(true), dnssec_enabled(false), mitm_proxies_allowed(false),
24 false_start_enabled(true), send_client_cert(false),
25 verify_ev_cert(false), ssl3_fallback(false) {
26 }
27 23
28 bool rev_checking_enabled; // True if server certificate revocation 24 bool rev_checking_enabled; // True if server certificate revocation
29 // checking is enabled. 25 // checking is enabled.
30 bool ssl2_enabled; // True if SSL 2.0 is enabled. 26 bool ssl2_enabled; // True if SSL 2.0 is enabled.
31 bool ssl3_enabled; // True if SSL 3.0 is enabled. 27 bool ssl3_enabled; // True if SSL 3.0 is enabled.
32 bool tls1_enabled; // True if TLS 1.0 is enabled. 28 bool tls1_enabled; // True if TLS 1.0 is enabled.
33 bool dnssec_enabled; // True if we'll accept DNSSEC chains in certificates. 29 bool dnssec_enabled; // True if we'll accept DNSSEC chains in certificates.
34 30
35 // True if we allow this connection to be MITM attacked. This sounds a little 31 // True if we allow this connection to be MITM attacked. This sounds a little
36 // worse than it is: large networks sometimes MITM attack all SSL connections 32 // worse than it is: large networks sometimes MITM attack all SSL connections
37 // on egress. We want to know this because we might not have the end-to-end 33 // on egress. We want to know this because we might not have the end-to-end
38 // connection that we believe that we have based on the hostname. Therefore, 34 // connection that we believe that we have based on the hostname. Therefore,
39 // certain certificate checks can't be performed and we can't use outside 35 // certain certificate checks can't be performed and we can't use outside
40 // knowledge about whether the server has the renegotiation extension. 36 // knowledge about whether the server has the renegotiation extension.
41 bool mitm_proxies_allowed; 37 bool mitm_proxies_allowed;
42 38
43 bool false_start_enabled; // True if we'll use TLS False Start. 39 bool false_start_enabled; // True if we'll use TLS False Start.
44 40
45 // TODO(wtc): move the following members to a new SSLParams structure. They 41 // TODO(wtc): move the following members to a new SSLParams structure. They
46 // are not SSL configuration settings. 42 // are not SSL configuration settings.
47 43
48 struct CertAndStatus { 44 struct CertAndStatus {
49 scoped_refptr<X509Certificate> cert; 45 scoped_refptr<X509Certificate> cert;
50 int cert_status; 46 int cert_status;
51 }; 47 };
52 48
53 // Returns true if |cert| is one of the certs in |allowed_bad_certs|. 49 // Returns true if |cert| is one of the certs in |allowed_bad_certs|.
54 // TODO(wtc): Move this to a .cc file. ssl_config_service.cc is Windows 50 bool IsAllowedBadCert(X509Certificate* cert) const;
55 // only right now, so I can't move it there.
56 bool IsAllowedBadCert(X509Certificate* cert) const {
57 for (size_t i = 0; i < allowed_bad_certs.size(); ++i) {
58 if (cert == allowed_bad_certs[i].cert)
59 return true;
60 }
61 return false;
62 }
63 51
64 // Add any known-bad SSL certificate (with its cert status) to 52 // Add any known-bad SSL certificate (with its cert status) to
65 // |allowed_bad_certs| that should not trigger an ERR_CERT_* error when 53 // |allowed_bad_certs| that should not trigger an ERR_CERT_* error when
66 // calling SSLClientSocket::Connect. This would normally be done in 54 // calling SSLClientSocket::Connect. This would normally be done in
67 // response to the user explicitly accepting the bad certificate. 55 // response to the user explicitly accepting the bad certificate.
68 std::vector<CertAndStatus> allowed_bad_certs; 56 std::vector<CertAndStatus> allowed_bad_certs;
69 57
70 // True if we should send client_cert to the server. 58 // True if we should send client_cert to the server.
71 bool send_client_cert; 59 bool send_client_cert;
72 60
(...skipping 28 matching lines...) Expand all
101 // rev_checking_enabled 89 // rev_checking_enabled
102 // ssl2_enabled 90 // ssl2_enabled
103 // ssl3_enabled 91 // ssl3_enabled
104 // tls1_enabled 92 // tls1_enabled
105 virtual void OnSSLConfigChanged() = 0; 93 virtual void OnSSLConfigChanged() = 0;
106 94
107 protected: 95 protected:
108 virtual ~Observer() {} 96 virtual ~Observer() {}
109 }; 97 };
110 98
111 SSLConfigService() 99 SSLConfigService();
112 : observer_list_(ObserverList<Observer>::NOTIFY_EXISTING_ONLY) {}
113 100
114 // Create an instance of SSLConfigService which retrieves the configuration 101 // Create an instance of SSLConfigService which retrieves the configuration
115 // from the system SSL configuration, or an instance of 102 // from the system SSL configuration, or an instance of
116 // SSLConfigServiceDefaults if the current system does not have a system SSL 103 // SSLConfigServiceDefaults if the current system does not have a system SSL
117 // configuration. Note: this does not handle SSLConfigService implementations 104 // configuration. Note: this does not handle SSLConfigService implementations
118 // that are not native to their platform, such as preference-backed ones. 105 // that are not native to their platform, such as preference-backed ones.
119 static SSLConfigService* CreateSystemSSLConfigService(); 106 static SSLConfigService* CreateSystemSSLConfigService();
120 107
121 // May not be thread-safe, should only be called on the IO thread. 108 // May not be thread-safe, should only be called on the IO thread.
122 virtual void GetSSLConfig(SSLConfig* config) = 0; 109 virtual void GetSSLConfig(SSLConfig* config) = 0;
(...skipping 27 matching lines...) Expand all
150 137
151 // Add an observer of this service. 138 // Add an observer of this service.
152 void AddObserver(Observer* observer); 139 void AddObserver(Observer* observer);
153 140
154 // Remove an observer of this service. 141 // Remove an observer of this service.
155 void RemoveObserver(Observer* observer); 142 void RemoveObserver(Observer* observer);
156 143
157 protected: 144 protected:
158 friend class base::RefCountedThreadSafe<SSLConfigService>; 145 friend class base::RefCountedThreadSafe<SSLConfigService>;
159 146
160 virtual ~SSLConfigService() {} 147 virtual ~SSLConfigService();
161 148
162 // SetFlags sets the values of several flags based on global configuration. 149 // SetFlags sets the values of several flags based on global configuration.
163 static void SetSSLConfigFlags(SSLConfig*); 150 static void SetSSLConfigFlags(SSLConfig*);
164 151
165 // Process before/after config update. 152 // Process before/after config update.
166 void ProcessConfigUpdate(const SSLConfig& orig_config, 153 void ProcessConfigUpdate(const SSLConfig& orig_config,
167 const SSLConfig& new_config); 154 const SSLConfig& new_config);
168 155
169 private: 156 private:
170 ObserverList<Observer> observer_list_; 157 ObserverList<Observer> observer_list_;
171 }; 158 };
172 159
173 } // namespace net 160 } // namespace net
174 161
175 #endif // NET_BASE_SSL_CONFIG_SERVICE_H_ 162 #endif // NET_BASE_SSL_CONFIG_SERVICE_H_
OLDNEW
« no previous file with comments | « net/base/sdch_manager.cc ('k') | net/base/ssl_config_service.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698