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

Side by Side Diff: sync/util/cryptographer.cc

Issue 10844005: [Sync] Refactor GetEncryptedTypes usage. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Rebase + add dcheck Created 8 years, 4 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 | Annotate | Revision Log
« no previous file with comments | « sync/util/cryptographer.h ('k') | no next file » | 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) 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 "sync/util/cryptographer.h" 5 #include "sync/util/cryptographer.h"
6 6
7 #include <algorithm> 7 #include <algorithm>
8 8
9 #include "base/base64.h" 9 #include "base/base64.h"
10 #include "base/logging.h" 10 #include "base/logging.h"
11 #include "sync/protocol/nigori_specifics.pb.h" 11 #include "sync/protocol/nigori_specifics.pb.h"
12 #include "sync/syncable/nigori_handler.h"
13 #include "sync/util/encryptor.h" 12 #include "sync/util/encryptor.h"
14 13
15 namespace syncer { 14 namespace syncer {
16 15
17 const char kNigoriTag[] = "google_chrome_nigori"; 16 const char kNigoriTag[] = "google_chrome_nigori";
18 17
19 // We name a particular Nigori instance (ie. a triplet consisting of a hostname, 18 // We name a particular Nigori instance (ie. a triplet consisting of a hostname,
20 // a username, and a password) by calling Permute on this string. Since the 19 // a username, and a password) by calling Permute on this string. Since the
21 // output of Permute is always the same for a given triplet, clients will always 20 // output of Permute is always the same for a given triplet, clients will always
22 // assign the same name to a particular triplet. 21 // assign the same name to a particular triplet.
23 const char kNigoriKeyName[] = "nigori-key"; 22 const char kNigoriKeyName[] = "nigori-key";
24 23
25 Cryptographer::Cryptographer(Encryptor* encryptor) 24 Cryptographer::Cryptographer(Encryptor* encryptor)
26 : encryptor_(encryptor), 25 : encryptor_(encryptor),
27 default_nigori_(NULL), 26 default_nigori_(NULL),
28 keystore_nigori_(NULL), 27 keystore_nigori_(NULL) {
29 nigori_node_handler_(NULL) {
30 DCHECK(encryptor); 28 DCHECK(encryptor);
31 } 29 }
32 30
33 Cryptographer::~Cryptographer() {} 31 Cryptographer::~Cryptographer() {}
34 32
35 void Cryptographer::SetNigoriHandler(syncable::NigoriHandler* delegate) {
36 nigori_node_handler_ = delegate;
37 }
38
39 void Cryptographer::ApplyNigoriUpdate(
40 const sync_pb::NigoriSpecifics& nigori,
41 syncable::BaseTransaction* const trans) {
42 nigori_node_handler_->ApplyNigoriUpdate(nigori, trans);
43 }
44
45 ModelTypeSet Cryptographer::GetEncryptedTypes() const {
46 return nigori_node_handler_->GetEncryptedTypes();
47 }
48
49 void Cryptographer::UpdateNigoriFromEncryptedTypes(
50 sync_pb::NigoriSpecifics* nigori,
51 syncable::BaseTransaction* const trans) const {
52 nigori_node_handler_->UpdateNigoriFromEncryptedTypes(nigori, trans);
53 }
54
55 33
56 void Cryptographer::Bootstrap(const std::string& restored_bootstrap_token) { 34 void Cryptographer::Bootstrap(const std::string& restored_bootstrap_token) {
57 if (is_initialized()) { 35 if (is_initialized()) {
58 NOTREACHED(); 36 NOTREACHED();
59 return; 37 return;
60 } 38 }
61 39
62 scoped_ptr<Nigori> nigori(UnpackBootstrapToken(restored_bootstrap_token)); 40 scoped_ptr<Nigori> nigori(UnpackBootstrapToken(restored_bootstrap_token));
63 if (nigori.get()) 41 if (nigori.get())
64 AddKeyImpl(nigori.release(), false); 42 AddKeyImpl(nigori.release(), false);
(...skipping 141 matching lines...) Expand 10 before | Expand all | Expand 10 after
206 InstallKeyBag(bag); 184 InstallKeyBag(bag);
207 } 185 }
208 186
209 void Cryptographer::SetDefaultKey(const std::string& key_name) { 187 void Cryptographer::SetDefaultKey(const std::string& key_name) {
210 DCHECK(nigoris_.end() != nigoris_.find(key_name)); 188 DCHECK(nigoris_.end() != nigoris_.find(key_name));
211 default_nigori_ = &*nigoris_.find(key_name); 189 default_nigori_ = &*nigoris_.find(key_name);
212 } 190 }
213 191
214 void Cryptographer::SetPendingKeys(const sync_pb::EncryptedData& encrypted) { 192 void Cryptographer::SetPendingKeys(const sync_pb::EncryptedData& encrypted) {
215 DCHECK(!CanDecrypt(encrypted)); 193 DCHECK(!CanDecrypt(encrypted));
194 DCHECK(!encrypted.blob().empty());
216 pending_keys_.reset(new sync_pb::EncryptedData(encrypted)); 195 pending_keys_.reset(new sync_pb::EncryptedData(encrypted));
217 } 196 }
218 197
219 const sync_pb::EncryptedData& Cryptographer::GetPendingKeys() const { 198 const sync_pb::EncryptedData& Cryptographer::GetPendingKeys() const {
220 DCHECK(has_pending_keys()); 199 DCHECK(has_pending_keys());
221 return *(pending_keys_.get()); 200 return *(pending_keys_.get());
222 } 201 }
223 202
224 bool Cryptographer::DecryptPendingKeys(const KeyParams& params) { 203 bool Cryptographer::DecryptPendingKeys(const KeyParams& params) {
225 Nigori nigori; 204 Nigori nigori;
(...skipping 135 matching lines...) Expand 10 before | Expand all | Expand 10 after
361 key.mac_key())) { 340 key.mac_key())) {
362 NOTREACHED(); 341 NOTREACHED();
363 continue; 342 continue;
364 } 343 }
365 nigoris_[key.name()] = make_linked_ptr(new_nigori.release()); 344 nigoris_[key.name()] = make_linked_ptr(new_nigori.release());
366 } 345 }
367 } 346 }
368 } 347 }
369 348
370 } // namespace syncer 349 } // namespace syncer
OLDNEW
« no previous file with comments | « sync/util/cryptographer.h ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698