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

Side by Side Diff: sync/internal_api/sync_encryption_handler_impl.cc

Issue 10855037: [Sync] Add history delete directive type (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Fix tests Created 8 years, 2 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
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/internal_api/sync_encryption_handler_impl.h" 5 #include "sync/internal_api/sync_encryption_handler_impl.h"
6 6
7 #include <queue> 7 #include <queue>
8 #include <string> 8 #include <string>
9 9
10 #include "base/base64.h" 10 #include "base/base64.h"
(...skipping 79 matching lines...) Expand 10 before | Expand all | Expand 10 after
90 case IMPLICIT_PASSPHRASE: 90 case IMPLICIT_PASSPHRASE:
91 return sync_pb::NigoriSpecifics::IMPLICIT_PASSPHRASE; 91 return sync_pb::NigoriSpecifics::IMPLICIT_PASSPHRASE;
92 case KEYSTORE_PASSPHRASE: 92 case KEYSTORE_PASSPHRASE:
93 return sync_pb::NigoriSpecifics::KEYSTORE_PASSPHRASE; 93 return sync_pb::NigoriSpecifics::KEYSTORE_PASSPHRASE;
94 case CUSTOM_PASSPHRASE: 94 case CUSTOM_PASSPHRASE:
95 return sync_pb::NigoriSpecifics::CUSTOM_PASSPHRASE; 95 return sync_pb::NigoriSpecifics::CUSTOM_PASSPHRASE;
96 case FROZEN_IMPLICIT_PASSPHRASE: 96 case FROZEN_IMPLICIT_PASSPHRASE:
97 return sync_pb::NigoriSpecifics::FROZEN_IMPLICIT_PASSPHRASE; 97 return sync_pb::NigoriSpecifics::FROZEN_IMPLICIT_PASSPHRASE;
98 default: 98 default:
99 NOTREACHED(); 99 NOTREACHED();
100 return sync_pb::NigoriSpecifics::IMPLICIT_PASSPHRASE;; 100 return sync_pb::NigoriSpecifics::IMPLICIT_PASSPHRASE;
101 }; 101 };
102 } 102 }
103 103
104 bool IsExplicitPassphrase(PassphraseType type) { 104 bool IsExplicitPassphrase(PassphraseType type) {
105 return type == CUSTOM_PASSPHRASE || type == FROZEN_IMPLICIT_PASSPHRASE; 105 return type == CUSTOM_PASSPHRASE || type == FROZEN_IMPLICIT_PASSPHRASE;
106 } 106 }
107 107
108 } // namespace 108 } // namespace
109 109
110 SyncEncryptionHandlerImpl::Vault::Vault( 110 SyncEncryptionHandlerImpl::Vault::Vault(
(...skipping 776 matching lines...) Expand 10 before | Expand all | Expand 10 after
887 } 887 }
888 } 888 }
889 889
890 bool SyncEncryptionHandlerImpl::UpdateEncryptedTypesFromNigori( 890 bool SyncEncryptionHandlerImpl::UpdateEncryptedTypesFromNigori(
891 const sync_pb::NigoriSpecifics& nigori, 891 const sync_pb::NigoriSpecifics& nigori,
892 syncable::BaseTransaction* const trans) { 892 syncable::BaseTransaction* const trans) {
893 DCHECK(thread_checker_.CalledOnValidThread()); 893 DCHECK(thread_checker_.CalledOnValidThread());
894 ModelTypeSet* encrypted_types = &UnlockVaultMutable(trans)->encrypted_types; 894 ModelTypeSet* encrypted_types = &UnlockVaultMutable(trans)->encrypted_types;
895 if (nigori.encrypt_everything()) { 895 if (nigori.encrypt_everything()) {
896 EnableEncryptEverythingImpl(trans); 896 EnableEncryptEverythingImpl(trans);
897 DCHECK(encrypted_types->Equals(UserTypes())); 897 DCHECK(encrypted_types->Equals(EncryptableUserTypes()));
898 return true; 898 return true;
899 } else if (encrypt_everything_) { 899 } else if (encrypt_everything_) {
900 DCHECK(encrypted_types->Equals(UserTypes())); 900 DCHECK(encrypted_types->Equals(EncryptableUserTypes()));
901 return false; 901 return false;
902 } 902 }
903 903
904 ModelTypeSet nigori_encrypted_types; 904 ModelTypeSet nigori_encrypted_types;
905 nigori_encrypted_types = syncable::GetEncryptedTypesFromNigori(nigori); 905 nigori_encrypted_types = syncable::GetEncryptedTypesFromNigori(nigori);
906 nigori_encrypted_types.PutAll(SensitiveTypes()); 906 nigori_encrypted_types.PutAll(SensitiveTypes());
907 907
908 // If anything more than the sensitive types were encrypted, and 908 // If anything more than the sensitive types were encrypted, and
909 // encrypt_everything is not explicitly set to false, we assume it means 909 // encrypt_everything is not explicitly set to false, we assume it means
910 // a client intended to enable encrypt everything. 910 // a client intended to enable encrypt everything.
911 if (!nigori.has_encrypt_everything() && 911 if (!nigori.has_encrypt_everything() &&
912 !Difference(nigori_encrypted_types, SensitiveTypes()).Empty()) { 912 !Difference(nigori_encrypted_types, SensitiveTypes()).Empty()) {
913 if (!encrypt_everything_) { 913 if (!encrypt_everything_) {
914 encrypt_everything_ = true; 914 encrypt_everything_ = true;
915 *encrypted_types = UserTypes(); 915 *encrypted_types = EncryptableUserTypes();
916 FOR_EACH_OBSERVER( 916 FOR_EACH_OBSERVER(
917 Observer, observers_, 917 Observer, observers_,
918 OnEncryptedTypesChanged(*encrypted_types, encrypt_everything_)); 918 OnEncryptedTypesChanged(*encrypted_types, encrypt_everything_));
919 } 919 }
920 DCHECK(encrypted_types->Equals(UserTypes())); 920 DCHECK(encrypted_types->Equals(EncryptableUserTypes()));
921 return false; 921 return false;
922 } 922 }
923 923
924 MergeEncryptedTypes(nigori_encrypted_types, trans); 924 MergeEncryptedTypes(nigori_encrypted_types, trans);
925 return encrypted_types->Equals(nigori_encrypted_types); 925 return encrypted_types->Equals(nigori_encrypted_types);
926 } 926 }
927 927
928 void SyncEncryptionHandlerImpl::SetCustomPassphrase( 928 void SyncEncryptionHandlerImpl::SetCustomPassphrase(
929 const std::string& passphrase, 929 const std::string& passphrase,
930 WriteTransaction* trans, 930 WriteTransaction* trans,
(...skipping 156 matching lines...) Expand 10 before | Expand all | Expand 10 after
1087 // redundant. Figure out a way to not do this unnecessarily. 1087 // redundant. Figure out a way to not do this unnecessarily.
1088 ReEncryptEverything(trans); 1088 ReEncryptEverything(trans);
1089 } 1089 }
1090 1090
1091 void SyncEncryptionHandlerImpl::MergeEncryptedTypes( 1091 void SyncEncryptionHandlerImpl::MergeEncryptedTypes(
1092 ModelTypeSet new_encrypted_types, 1092 ModelTypeSet new_encrypted_types,
1093 syncable::BaseTransaction* const trans) { 1093 syncable::BaseTransaction* const trans) {
1094 DCHECK(thread_checker_.CalledOnValidThread()); 1094 DCHECK(thread_checker_.CalledOnValidThread());
1095 1095
1096 // Only UserTypes may be encrypted. 1096 // Only UserTypes may be encrypted.
1097 DCHECK(UserTypes().HasAll(new_encrypted_types)); 1097 DCHECK(EncryptableUserTypes().HasAll(new_encrypted_types));
1098 1098
1099 ModelTypeSet* encrypted_types = &UnlockVaultMutable(trans)->encrypted_types; 1099 ModelTypeSet* encrypted_types = &UnlockVaultMutable(trans)->encrypted_types;
1100 if (!encrypted_types->HasAll(new_encrypted_types)) { 1100 if (!encrypted_types->HasAll(new_encrypted_types)) {
1101 *encrypted_types = new_encrypted_types; 1101 *encrypted_types = new_encrypted_types;
1102 FOR_EACH_OBSERVER( 1102 FOR_EACH_OBSERVER(
1103 Observer, observers_, 1103 Observer, observers_,
1104 OnEncryptedTypesChanged(*encrypted_types, encrypt_everything_)); 1104 OnEncryptedTypesChanged(*encrypted_types, encrypt_everything_));
1105 } 1105 }
1106 } 1106 }
1107 1107
(...skipping 174 matching lines...) Expand 10 before | Expand all | Expand 10 after
1282 cryptographer->InstallKeys(keybag); 1282 cryptographer->InstallKeys(keybag);
1283 if (update_default) 1283 if (update_default)
1284 cryptographer->SetDefaultKey(keybag.key_name()); 1284 cryptographer->SetDefaultKey(keybag.key_name());
1285 return true; 1285 return true;
1286 } 1286 }
1287 1287
1288 void SyncEncryptionHandlerImpl::EnableEncryptEverythingImpl( 1288 void SyncEncryptionHandlerImpl::EnableEncryptEverythingImpl(
1289 syncable::BaseTransaction* const trans) { 1289 syncable::BaseTransaction* const trans) {
1290 ModelTypeSet* encrypted_types = &UnlockVaultMutable(trans)->encrypted_types; 1290 ModelTypeSet* encrypted_types = &UnlockVaultMutable(trans)->encrypted_types;
1291 if (encrypt_everything_) { 1291 if (encrypt_everything_) {
1292 DCHECK(encrypted_types->Equals(UserTypes())); 1292 DCHECK(encrypted_types->Equals(EncryptableUserTypes()));
1293 return; 1293 return;
1294 } 1294 }
1295 encrypt_everything_ = true; 1295 encrypt_everything_ = true;
1296 *encrypted_types = UserTypes(); 1296 *encrypted_types = EncryptableUserTypes();
1297 FOR_EACH_OBSERVER( 1297 FOR_EACH_OBSERVER(
1298 Observer, observers_, 1298 Observer, observers_,
1299 OnEncryptedTypesChanged(*encrypted_types, encrypt_everything_)); 1299 OnEncryptedTypesChanged(*encrypted_types, encrypt_everything_));
1300 } 1300 }
1301 1301
1302 bool SyncEncryptionHandlerImpl::DecryptPendingKeysWithKeystoreKey( 1302 bool SyncEncryptionHandlerImpl::DecryptPendingKeysWithKeystoreKey(
1303 const std::string& keystore_key, 1303 const std::string& keystore_key,
1304 const sync_pb::EncryptedData& keystore_decryptor_token, 1304 const sync_pb::EncryptedData& keystore_decryptor_token,
1305 Cryptographer* cryptographer) { 1305 Cryptographer* cryptographer) {
1306 DCHECK(cryptographer->has_pending_keys()); 1306 DCHECK(cryptographer->has_pending_keys());
(...skipping 41 matching lines...) Expand 10 before | Expand all | Expand 10 after
1348 1348
1349 base::Time SyncEncryptionHandlerImpl::GetExplicitPassphraseTime() const { 1349 base::Time SyncEncryptionHandlerImpl::GetExplicitPassphraseTime() const {
1350 if (passphrase_type_ == FROZEN_IMPLICIT_PASSPHRASE) 1350 if (passphrase_type_ == FROZEN_IMPLICIT_PASSPHRASE)
1351 return migration_time(); 1351 return migration_time();
1352 else if (passphrase_type_ == CUSTOM_PASSPHRASE) 1352 else if (passphrase_type_ == CUSTOM_PASSPHRASE)
1353 return custom_passphrase_time(); 1353 return custom_passphrase_time();
1354 return base::Time(); 1354 return base::Time();
1355 } 1355 }
1356 1356
1357 } // namespace browser_sync 1357 } // namespace browser_sync
OLDNEW
« no previous file with comments | « sync/internal_api/public/base/model_type.h ('k') | sync/internal_api/sync_encryption_handler_impl_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698