user_settings_win.cc revision c407dc5cd9bdc5668497f21b26b09d988ab439de
1// Copyright (c) 2009 The Chromium Authors. All rights reserved. 2// Use of this source code is governed by a BSD-style license that can be 3// found in the LICENSE file. 4 5#include "chrome/browser/sync/util/user_settings.h" 6 7#include <string> 8 9#include "chrome/browser/sync/util/crypto_helpers.h" 10#include "chrome/browser/sync/util/data_encryption.h" 11#include "chrome/common/sqlite_utils.h" 12 13using std::string; 14 15namespace browser_sync { 16 17void UserSettings::SetAuthTokenForService(const string& email, 18 const string& service_name, const string& long_lived_service_token) { 19 ScopedDBHandle dbhandle(this); 20 SQLStatement statement; 21 statement.prepare(dbhandle.get(), 22 "INSERT INTO cookies " 23 "(email, service_name, service_token) " 24 "values (?, ?, ?)"); 25 statement.bind_string(0, email); 26 statement.bind_string(1, service_name); 27 statement.bind_blob(2, &EncryptData(long_lived_service_token)); 28 if (SQLITE_DONE != statement.step()) { 29 LOG(FATAL) << sqlite3_errmsg(dbhandle.get()); 30 } 31} 32 33// Returns the username whose credentials have been persisted as well as 34// a service token for the named service. 35bool UserSettings::GetLastUserAndServiceToken(const string& service_name, 36 string* username, 37 string* service_token) { 38 ScopedDBHandle dbhandle(this); 39 SQLStatement query; 40 query.prepare(dbhandle.get(), 41 "SELECT email, service_token FROM cookies" 42 " WHERE service_name = ?"); 43 query.bind_string(0, service_name.c_str()); 44 45 if (SQLITE_ROW == query.step()) { 46 *username = query.column_string(0); 47 48 std::vector<uint8> encrypted_service_token; 49 query.column_blob_as_vector(1, &encrypted_service_token); 50 DecryptData(encrypted_service_token, service_token); 51 return true; 52 } 53 54 return false; 55} 56 57} // namespace browser_sync 58