| OLD | NEW |
| 1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2011 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 <algorithm> |
| 6 |
| 5 #include "base/base64.h" | 7 #include "base/base64.h" |
| 6 #include "chrome/browser/sync/util/cryptographer.h" | 8 #include "chrome/browser/sync/util/cryptographer.h" |
| 7 #include "chrome/browser/password_manager/encryptor.h" | 9 #include "chrome/browser/password_manager/encryptor.h" |
| 8 | 10 |
| 9 namespace browser_sync { | 11 namespace browser_sync { |
| 10 | 12 |
| 11 const char kNigoriTag[] = "google_chrome_nigori"; | 13 const char kNigoriTag[] = "google_chrome_nigori"; |
| 12 | 14 |
| 13 // We name a particular Nigori instance (ie. a triplet consisting of a hostname, | 15 // We name a particular Nigori instance (ie. a triplet consisting of a hostname, |
| 14 // a username, and a password) by calling Permute on this string. Since the | 16 // a username, and a password) by calling Permute on this string. Since the |
| (...skipping 304 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 319 | 321 |
| 320 // Note: the initial version with encryption did not support the | 322 // Note: the initial version with encryption did not support the |
| 321 // encrypt_everything field. If anything more than the sensitive types were | 323 // encrypt_everything field. If anything more than the sensitive types were |
| 322 // encrypted, it meant we were encrypting everything. | 324 // encrypted, it meant we were encrypting everything. |
| 323 if (!nigori.has_encrypt_everything() && | 325 if (!nigori.has_encrypt_everything() && |
| 324 encrypted_types.size() > SensitiveTypes().size()) { | 326 encrypted_types.size() > SensitiveTypes().size()) { |
| 325 set_encrypt_everything(); | 327 set_encrypt_everything(); |
| 326 return; | 328 return; |
| 327 } | 329 } |
| 328 | 330 |
| 329 SetEncryptedTypes(encrypted_types); | 331 MergeEncryptedTypes(encrypted_types); |
| 330 } | 332 } |
| 331 | 333 |
| 332 void Cryptographer::UpdateNigoriFromEncryptedTypes( | 334 void Cryptographer::UpdateNigoriFromEncryptedTypes( |
| 333 sync_pb::NigoriSpecifics* nigori) const { | 335 sync_pb::NigoriSpecifics* nigori) const { |
| 334 nigori->set_encrypt_everything(encrypt_everything_); | 336 nigori->set_encrypt_everything(encrypt_everything_); |
| 335 nigori->set_encrypt_bookmarks( | 337 nigori->set_encrypt_bookmarks( |
| 336 encrypted_types_.count(syncable::BOOKMARKS) > 0); | 338 encrypted_types_.count(syncable::BOOKMARKS) > 0); |
| 337 nigori->set_encrypt_preferences( | 339 nigori->set_encrypt_preferences( |
| 338 encrypted_types_.count(syncable::PREFERENCES) > 0); | 340 encrypted_types_.count(syncable::PREFERENCES) > 0); |
| 339 nigori->set_encrypt_autofill_profile( | 341 nigori->set_encrypt_autofill_profile( |
| (...skipping 29 matching lines...) Expand all Loading... |
| 369 } | 371 } |
| 370 | 372 |
| 371 bool Cryptographer::encrypt_everything() const { | 373 bool Cryptographer::encrypt_everything() const { |
| 372 return encrypt_everything_; | 374 return encrypt_everything_; |
| 373 } | 375 } |
| 374 | 376 |
| 375 syncable::ModelTypeSet Cryptographer::GetEncryptedTypes() const { | 377 syncable::ModelTypeSet Cryptographer::GetEncryptedTypes() const { |
| 376 return encrypted_types_; | 378 return encrypted_types_; |
| 377 } | 379 } |
| 378 | 380 |
| 379 void Cryptographer::SetEncryptedTypesForTest( | 381 void Cryptographer::MergeEncryptedTypesForTest( |
| 380 const syncable::ModelTypeSet& encrypted_types) { | 382 const syncable::ModelTypeSet& encrypted_types) { |
| 381 SetEncryptedTypes(encrypted_types); | 383 MergeEncryptedTypes(encrypted_types); |
| 382 } | 384 } |
| 383 | 385 |
| 384 void Cryptographer::SetEncryptedTypes( | 386 void Cryptographer::MergeEncryptedTypes( |
| 385 const syncable::ModelTypeSet& encrypted_types) { | 387 const syncable::ModelTypeSet& encrypted_types) { |
| 386 if (encrypted_types_ == encrypted_types) { | 388 if (std::includes(encrypted_types_.begin(), encrypted_types_.end(), |
| 389 encrypted_types.begin(), encrypted_types.end())) { |
| 387 return; | 390 return; |
| 388 } | 391 } |
| 389 encrypted_types_.insert(encrypted_types.begin(), encrypted_types.end()); | 392 encrypted_types_.insert(encrypted_types.begin(), encrypted_types.end()); |
| 390 EmitEncryptedTypesChangedNotification(); | 393 EmitEncryptedTypesChangedNotification(); |
| 391 } | 394 } |
| 392 | 395 |
| 393 void Cryptographer::EmitEncryptedTypesChangedNotification() { | 396 void Cryptographer::EmitEncryptedTypesChangedNotification() { |
| 394 FOR_EACH_OBSERVER( | 397 FOR_EACH_OBSERVER( |
| 395 Observer, observers_, | 398 Observer, observers_, |
| 396 OnEncryptedTypesChanged(encrypted_types_, encrypt_everything_)); | 399 OnEncryptedTypesChanged(encrypted_types_, encrypt_everything_)); |
| (...skipping 14 matching lines...) Expand all Loading... |
| 411 continue; | 414 continue; |
| 412 } | 415 } |
| 413 nigoris_[key.name()] = make_linked_ptr(new_nigori.release()); | 416 nigoris_[key.name()] = make_linked_ptr(new_nigori.release()); |
| 414 } | 417 } |
| 415 } | 418 } |
| 416 DCHECK(nigoris_.end() != nigoris_.find(default_key_name)); | 419 DCHECK(nigoris_.end() != nigoris_.find(default_key_name)); |
| 417 default_nigori_ = &*nigoris_.find(default_key_name); | 420 default_nigori_ = &*nigoris_.find(default_key_name); |
| 418 } | 421 } |
| 419 | 422 |
| 420 } // namespace browser_sync | 423 } // namespace browser_sync |
| OLD | NEW |