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

Unified Diff: chrome/browser/profiles/profile_impl_io_data.cc

Issue 24734007: Encrypt all stored cookies on selected operating systems. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: fix memory leak in test Created 7 years 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 side-by-side diff with in-line comments
Download patch
« no previous file with comments | « android_webview/native/cookie_manager.cc ('k') | chrome/browser/safe_browsing/safe_browsing_service.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: chrome/browser/profiles/profile_impl_io_data.cc
diff --git a/chrome/browser/profiles/profile_impl_io_data.cc b/chrome/browser/profiles/profile_impl_io_data.cc
index c5c383eb2f037c1f56af0c20fcb520a5cdd26774..279c431248a975123ce0186534a928e44403aa61 100644
--- a/chrome/browser/profiles/profile_impl_io_data.cc
+++ b/chrome/browser/profiles/profile_impl_io_data.cc
@@ -32,7 +32,9 @@
#include "chrome/common/chrome_switches.h"
#include "chrome/common/pref_names.h"
#include "chrome/common/url_constants.h"
+#include "components/webdata/encryptor/encryptor.h"
#include "content/public/browser/browser_thread.h"
+#include "content/public/browser/cookie_crypto_delegate.h"
#include "content/public/browser/cookie_store_factory.h"
#include "content/public/browser/notification_service.h"
#include "content/public/browser/resource_context.h"
@@ -52,6 +54,42 @@
namespace {
+// Use the operating system's mechanisms to encrypt cookies before writing
+// them to persistent store. Currently this only is done with desktop OS's
+// because ChromeOS and Android already protect the entire profile contents.
+//
+// TODO(bcwhite): Enable on MACOSX -- requires all Cookie tests to call
+// Encryptor::UseMockKeychain or will hang waiting for user input.
+#if defined(OS_WIN) || defined(OS_LINUX) // || defined(OS_MACOSX)
+class CookieOSCryptoDelegate : public content::CookieCryptoDelegate {
+ public:
+ virtual bool EncryptString(const std::string& plaintext,
+ std::string* ciphertext) OVERRIDE;
+ virtual bool DecryptString(const std::string& ciphertext,
+ std::string* plaintext) OVERRIDE;
+};
+
+bool CookieOSCryptoDelegate::EncryptString(const std::string& plaintext,
+ std::string* ciphertext) {
+ return Encryptor::EncryptString(plaintext, ciphertext);
+}
+
+bool CookieOSCryptoDelegate::DecryptString(const std::string& ciphertext,
+ std::string* plaintext) {
+ return Encryptor::DecryptString(ciphertext, plaintext);
+}
+
+scoped_ptr<content::CookieCryptoDelegate> CreateCookieCryptoIfUseful() {
+ return scoped_ptr<content::CookieCryptoDelegate>(
+ new CookieOSCryptoDelegate);
+}
+#else
+scoped_ptr<content::CookieCryptoDelegate> CreateCookieCryptoIfUseful() {
+ return scoped_ptr<content::CookieCryptoDelegate>();
+}
+#endif
+
+
net::BackendType ChooseCacheBackendType() {
const CommandLine& command_line = *CommandLine::ForCurrentProcess();
if (command_line.HasSwitch(switches::kUseSimpleCacheBackend)) {
@@ -404,7 +442,8 @@ void ProfileImplIOData::InitializeInternal(
lazy_params_->cookie_path,
lazy_params_->restore_old_session_cookies,
lazy_params_->special_storage_policy.get(),
- profile_params->cookie_monster_delegate.get());
+ profile_params->cookie_monster_delegate.get(),
+ CreateCookieCryptoIfUseful());
cookie_store->GetCookieMonster()->SetPersistSessionCookies(true);
}
@@ -502,7 +541,8 @@ void ProfileImplIOData::
lazy_params_->extensions_cookie_path,
lazy_params_->restore_old_session_cookies,
NULL,
- NULL);
+ NULL,
+ CreateCookieCryptoIfUseful());
// Enable cookies for devtools and extension URLs.
const char* schemes[] = {chrome::kChromeDevToolsScheme,
extensions::kExtensionScheme};
@@ -588,7 +628,8 @@ ProfileImplIOData::InitializeAppRequestContext(
cookie_path,
false,
NULL,
- NULL);
+ NULL,
+ CreateCookieCryptoIfUseful());
}
// Transfer ownership of the cookies and cache to AppRequestContext.
« no previous file with comments | « android_webview/native/cookie_manager.cc ('k') | chrome/browser/safe_browsing/safe_browsing_service.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698