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

Side by Side Diff: chrome/browser/net/transport_security_persister.cc

Issue 14125003: Do not roll back to SSL 3.0 for Google properties. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 7 years, 8 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 "chrome/browser/net/transport_security_persister.h" 5 #include "chrome/browser/net/transport_security_persister.h"
6 6
7 #include "base/base64.h" 7 #include "base/base64.h"
8 #include "base/bind.h" 8 #include "base/bind.h"
9 #include "base/file_util.h" 9 #include "base/file_util.h"
10 #include "base/files/file_path.h" 10 #include "base/files/file_path.h"
(...skipping 60 matching lines...) Expand 10 before | Expand all | Expand 10 after
71 const char kExpiry[] = "expiry"; 71 const char kExpiry[] = "expiry";
72 const char kDynamicSPKIHashesExpiry[] = "dynamic_spki_hashes_expiry"; 72 const char kDynamicSPKIHashesExpiry[] = "dynamic_spki_hashes_expiry";
73 const char kStaticSPKIHashes[] = "static_spki_hashes"; 73 const char kStaticSPKIHashes[] = "static_spki_hashes";
74 const char kPreloadedSPKIHashes[] = "preloaded_spki_hashes"; 74 const char kPreloadedSPKIHashes[] = "preloaded_spki_hashes";
75 const char kDynamicSPKIHashes[] = "dynamic_spki_hashes"; 75 const char kDynamicSPKIHashes[] = "dynamic_spki_hashes";
76 const char kForceHTTPS[] = "force-https"; 76 const char kForceHTTPS[] = "force-https";
77 const char kStrict[] = "strict"; 77 const char kStrict[] = "strict";
78 const char kDefault[] = "default"; 78 const char kDefault[] = "default";
79 const char kPinningOnly[] = "pinning-only"; 79 const char kPinningOnly[] = "pinning-only";
80 const char kCreated[] = "created"; 80 const char kCreated[] = "created";
81 const char kSSLVersionMin[] = "ssl_version_min";
82 const char kSSLVersion30[] = "sslv3.0";
agl 2013/04/11 13:48:57 We already have a convention for these strings I'm
83 const char kTLSVersion10[] = "tlsv1.0";
84 const char kTLSVersion11[] = "tlsv1.1";
85 const char kTLSVersion12[] = "tlsv1.2";
81 86
82 } // namespace 87 } // namespace
83 88
84 class TransportSecurityPersister::Loader { 89 class TransportSecurityPersister::Loader {
85 public: 90 public:
86 Loader(const base::WeakPtr<TransportSecurityPersister>& persister, 91 Loader(const base::WeakPtr<TransportSecurityPersister>& persister,
87 const base::FilePath& path) 92 const base::FilePath& path)
88 : persister_(persister), 93 : persister_(persister),
89 path_(path), 94 path_(path),
90 state_valid_(false) { 95 state_valid_(false) {
(...skipping 76 matching lines...) Expand 10 before | Expand all | Expand 10 after
167 state.domain_state(); 172 state.domain_state();
168 173
169 DictionaryValue* serialized = new DictionaryValue; 174 DictionaryValue* serialized = new DictionaryValue;
170 serialized->SetBoolean(kIncludeSubdomains, 175 serialized->SetBoolean(kIncludeSubdomains,
171 domain_state.include_subdomains); 176 domain_state.include_subdomains);
172 serialized->SetDouble(kCreated, domain_state.created.ToDoubleT()); 177 serialized->SetDouble(kCreated, domain_state.created.ToDoubleT());
173 serialized->SetDouble(kExpiry, domain_state.upgrade_expiry.ToDoubleT()); 178 serialized->SetDouble(kExpiry, domain_state.upgrade_expiry.ToDoubleT());
174 serialized->SetDouble(kDynamicSPKIHashesExpiry, 179 serialized->SetDouble(kDynamicSPKIHashesExpiry,
175 domain_state.dynamic_spki_hashes_expiry.ToDoubleT()); 180 domain_state.dynamic_spki_hashes_expiry.ToDoubleT());
176 181
182 switch (domain_state.ssl_version_min) {
183 case net::SSL_CONNECTION_VERSION_SSL3:
184 serialized->SetString(kSSLVersionMin, "sslv3.0");
185 break;
186 case net::SSL_CONNECTION_VERSION_TLS1:
187 serialized->SetString(kSSLVersionMin, "tlsv1.0");
188 break;
189 case net::SSL_CONNECTION_VERSION_TLS1_1:
190 serialized->SetString(kSSLVersionMin, "tlsv1.1");
191 break;
192 case net::SSL_CONNECTION_VERSION_TLS1_2:
193 serialized->SetString(kSSLVersionMin, "tlsv1.2");
194 break;
195 default:
196 NOTREACHED() << "DomainState with unknown ssl_version_min";
197 delete serialized;
198 continue;
199 }
200
177 switch (domain_state.upgrade_mode) { 201 switch (domain_state.upgrade_mode) {
178 case TransportSecurityState::DomainState::MODE_FORCE_HTTPS: 202 case TransportSecurityState::DomainState::MODE_FORCE_HTTPS:
179 serialized->SetString(kMode, kForceHTTPS); 203 serialized->SetString(kMode, kForceHTTPS);
180 break; 204 break;
181 case TransportSecurityState::DomainState::MODE_DEFAULT: 205 case TransportSecurityState::DomainState::MODE_DEFAULT:
182 serialized->SetString(kMode, kDefault); 206 serialized->SetString(kMode, kDefault);
183 break; 207 break;
184 default: 208 default:
185 NOTREACHED() << "DomainState with unknown mode"; 209 NOTREACHED() << "DomainState with unknown mode";
186 delete serialized; 210 delete serialized;
(...skipping 75 matching lines...) Expand 10 before | Expand all | Expand 10 after
262 const ListValue* pins_list = NULL; 286 const ListValue* pins_list = NULL;
263 // preloaded_spki_hashes is a legacy synonym for static_spki_hashes. 287 // preloaded_spki_hashes is a legacy synonym for static_spki_hashes.
264 if (parsed->GetList(kStaticSPKIHashes, &pins_list)) 288 if (parsed->GetList(kStaticSPKIHashes, &pins_list))
265 SPKIHashesFromListValue(*pins_list, &domain_state.static_spki_hashes); 289 SPKIHashesFromListValue(*pins_list, &domain_state.static_spki_hashes);
266 else if (parsed->GetList(kPreloadedSPKIHashes, &pins_list)) 290 else if (parsed->GetList(kPreloadedSPKIHashes, &pins_list))
267 SPKIHashesFromListValue(*pins_list, &domain_state.static_spki_hashes); 291 SPKIHashesFromListValue(*pins_list, &domain_state.static_spki_hashes);
268 292
269 if (parsed->GetList(kDynamicSPKIHashes, &pins_list)) 293 if (parsed->GetList(kDynamicSPKIHashes, &pins_list))
270 SPKIHashesFromListValue(*pins_list, &domain_state.dynamic_spki_hashes); 294 SPKIHashesFromListValue(*pins_list, &domain_state.dynamic_spki_hashes);
271 295
296 std::string ssl_version_min;
297 if (parsed->GetString(kSSLVersionMin, &ssl_version_min)) {
298 if (ssl_version_min == kSSLVersion30) {
299 domain_state.ssl_version_min = net::SSL_CONNECTION_VERSION_SSL3;
300 } else if (ssl_version_min == kTLSVersion10) {
301 domain_state.ssl_version_min = net::SSL_CONNECTION_VERSION_TLS1;
302 } else if (ssl_version_min == kTLSVersion11) {
303 domain_state.ssl_version_min = net::SSL_CONNECTION_VERSION_TLS1_1;
304 } else if (ssl_version_min == kTLSVersion12) {
305 domain_state.ssl_version_min = net::SSL_CONNECTION_VERSION_TLS1_2;
306 }
307 }
308
272 if (mode_string == kForceHTTPS || mode_string == kStrict) { 309 if (mode_string == kForceHTTPS || mode_string == kStrict) {
273 domain_state.upgrade_mode = 310 domain_state.upgrade_mode =
274 TransportSecurityState::DomainState::MODE_FORCE_HTTPS; 311 TransportSecurityState::DomainState::MODE_FORCE_HTTPS;
275 } else if (mode_string == kDefault || mode_string == kPinningOnly) { 312 } else if (mode_string == kDefault || mode_string == kPinningOnly) {
276 domain_state.upgrade_mode = 313 domain_state.upgrade_mode =
277 TransportSecurityState::DomainState::MODE_DEFAULT; 314 TransportSecurityState::DomainState::MODE_DEFAULT;
278 } else { 315 } else {
279 LOG(WARNING) << "Unknown TransportSecurityState mode string " 316 LOG(WARNING) << "Unknown TransportSecurityState mode string "
280 << mode_string << " found for entry " << i.key() 317 << mode_string << " found for entry " << i.key()
281 << "; skipping entry"; 318 << "; skipping entry";
(...skipping 39 matching lines...) Expand 10 before | Expand all | Expand 10 after
321 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::IO)); 358 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::IO));
322 359
323 bool dirty = false; 360 bool dirty = false;
324 if (!LoadEntries(state, &dirty)) { 361 if (!LoadEntries(state, &dirty)) {
325 LOG(ERROR) << "Failed to deserialize state: " << state; 362 LOG(ERROR) << "Failed to deserialize state: " << state;
326 return; 363 return;
327 } 364 }
328 if (dirty) 365 if (dirty)
329 StateIsDirty(transport_security_state_); 366 StateIsDirty(transport_security_state_);
330 } 367 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698