summaryrefslogtreecommitdiffstats
path: root/chrome/browser/sync/util
diff options
context:
space:
mode:
authordavemoore@chromium.org <davemoore@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2009-10-30 18:52:16 +0000
committerdavemoore@chromium.org <davemoore@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2009-10-30 18:52:16 +0000
commit5d4cd6254ffb1a1f6720803adb8ef611d89df2c3 (patch)
tree707003ab6d82cade8eabd7937706c7ad1bc5665e /chrome/browser/sync/util
parentb6150ec56296e8a8b99b19d1a4e0acadba9c9aa7 (diff)
downloadchromium_src-5d4cd6254ffb1a1f6720803adb8ef611d89df2c3.zip
chromium_src-5d4cd6254ffb1a1f6720803adb8ef611d89df2c3.tar.gz
chromium_src-5d4cd6254ffb1a1f6720803adb8ef611d89df2c3.tar.bz2
Use the password_manager encryptor to encrypt the sync credentials under Linux and OSX.
BUG=none TEST=Enable bookmark sync, close and re-launch chrome, make sure there are no sync error message at the bottom of the NTP. Original patch by albertb@chromium.org Committed by davemoore@chromium.org Review URL: http://codereview.chromium.org/341012 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@30611 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'chrome/browser/sync/util')
-rw-r--r--chrome/browser/sync/util/user_settings_posix.cc52
1 files changed, 43 insertions, 9 deletions
diff --git a/chrome/browser/sync/util/user_settings_posix.cc b/chrome/browser/sync/util/user_settings_posix.cc
index f8fd3f0..2bc602a 100644
--- a/chrome/browser/sync/util/user_settings_posix.cc
+++ b/chrome/browser/sync/util/user_settings_posix.cc
@@ -6,27 +6,61 @@
#include "chrome/browser/sync/util/user_settings.h"
-namespace browser_sync {
+#include "chrome/browser/password_manager/encryptor.h"
+#include "chrome/browser/sync/util/query_helpers.h"
-void UserSettings::ClearAllServiceTokens() {
- service_tokens_.clear();
-}
+namespace browser_sync {
void UserSettings::SetAuthTokenForService(
const std::string& email,
const std::string& service_name,
const std::string& long_lived_service_token) {
- service_tokens_[service_name] = long_lived_service_token;
+ std::string encrypted_service_token;
+ if (!Encryptor::EncryptString(long_lived_service_token,
+ &encrypted_service_token)) {
+ LOG(ERROR) << "Encrytion failed: " << long_lived_service_token;
+ return;
+ }
+ ScopedDBHandle dbhandle(this);
+ ExecOrDie(dbhandle.get(), "INSERT INTO cookies "
+ "(email, service_name, service_token) "
+ "values (?, ?, ?)", email, service_name, encrypted_service_token);
+}
+
+void UserSettings::ClearAllServiceTokens() {
+ ScopedDBHandle dbhandle(this);
+ ExecOrDie(dbhandle.get(), "DELETE FROM cookies");
+}
+
+bool UserSettings::GetLastUser(std::string* username) {
+ ScopedDBHandle dbhandle(this);
+ ScopedStatement query(PrepareQuery(dbhandle.get(),
+ "SELECT email FROM cookies"));
+ if (SQLITE_ROW == sqlite3_step(query.get())) {
+ GetColumn(query.get(), 0, username);
+ return true;
+ } else {
+ return false;
+ }
}
bool UserSettings::GetLastUserAndServiceToken(const std::string& service_name,
std::string* username,
std::string* service_token) {
- ServiceTokenMap::const_iterator iter = service_tokens_.find(service_name);
+ ScopedDBHandle dbhandle(this);
+ ScopedStatement query(PrepareQuery(
+ dbhandle.get(),
+ "SELECT email, service_token FROM cookies WHERE service_name = ?",
+ service_name));
- if (iter != service_tokens_.end()) {
- *username = email_;
- *service_token = iter->second;
+ if (SQLITE_ROW == sqlite3_step(query.get())) {
+ std::string encrypted_service_token;
+ GetColumn(query.get(), 1, &encrypted_service_token);
+ if (!Encryptor::DecryptString(encrypted_service_token, service_token)) {
+ LOG(ERROR) << "Decryption failed: " << encrypted_service_token;
+ return false;
+ }
+ GetColumn(query.get(), 0, username);
return true;
}