OLD | NEW |
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 #ifndef SYNC_INTERNAL_API_SYNC_ENCRYPTION_HANDLER_IMPL_H_ | 5 #ifndef SYNC_INTERNAL_API_SYNC_ENCRYPTION_HANDLER_IMPL_H_ |
6 #define SYNC_INTERNAL_API_SYNC_ENCRYPTION_HANDLER_IMPL_H_ | 6 #define SYNC_INTERNAL_API_SYNC_ENCRYPTION_HANDLER_IMPL_H_ |
7 | 7 |
8 #include <string> | 8 #include <string> |
9 | 9 |
10 #include "base/compiler_specific.h" | 10 #include "base/compiler_specific.h" |
11 #include "base/gtest_prod_util.h" | 11 #include "base/gtest_prod_util.h" |
| 12 #include "base/time.h" |
12 #include "base/threading/thread_checker.h" | 13 #include "base/threading/thread_checker.h" |
13 #include "base/memory/scoped_ptr.h" | 14 #include "base/memory/scoped_ptr.h" |
14 #include "base/memory/weak_ptr.h" | 15 #include "base/memory/weak_ptr.h" |
15 #include "base/observer_list.h" | 16 #include "base/observer_list.h" |
16 #include "sync/internal_api/public/sync_encryption_handler.h" | 17 #include "sync/internal_api/public/sync_encryption_handler.h" |
17 #include "sync/syncable/nigori_handler.h" | 18 #include "sync/syncable/nigori_handler.h" |
18 #include "sync/util/cryptographer.h" | 19 #include "sync/util/cryptographer.h" |
19 | 20 |
20 namespace syncer { | 21 namespace syncer { |
21 | 22 |
(...skipping 33 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
55 virtual void AddObserver(Observer* observer) OVERRIDE; | 56 virtual void AddObserver(Observer* observer) OVERRIDE; |
56 virtual void RemoveObserver(Observer* observer) OVERRIDE; | 57 virtual void RemoveObserver(Observer* observer) OVERRIDE; |
57 virtual void Init() OVERRIDE; | 58 virtual void Init() OVERRIDE; |
58 virtual void SetEncryptionPassphrase(const std::string& passphrase, | 59 virtual void SetEncryptionPassphrase(const std::string& passphrase, |
59 bool is_explicit) OVERRIDE; | 60 bool is_explicit) OVERRIDE; |
60 virtual void SetDecryptionPassphrase(const std::string& passphrase) OVERRIDE; | 61 virtual void SetDecryptionPassphrase(const std::string& passphrase) OVERRIDE; |
61 virtual void EnableEncryptEverything() OVERRIDE; | 62 virtual void EnableEncryptEverything() OVERRIDE; |
62 virtual bool EncryptEverythingEnabled() const OVERRIDE; | 63 virtual bool EncryptEverythingEnabled() const OVERRIDE; |
63 virtual PassphraseType GetPassphraseType() const OVERRIDE; | 64 virtual PassphraseType GetPassphraseType() const OVERRIDE; |
64 | 65 |
65 // TODO(zea): provide a method for getting the time at which the nigori | |
66 // node was migrated. | |
67 | |
68 // NigoriHandler implementation. | 66 // NigoriHandler implementation. |
69 // Note: all methods are invoked while the caller holds a transaction. | 67 // Note: all methods are invoked while the caller holds a transaction. |
70 virtual void ApplyNigoriUpdate( | 68 virtual void ApplyNigoriUpdate( |
71 const sync_pb::NigoriSpecifics& nigori, | 69 const sync_pb::NigoriSpecifics& nigori, |
72 syncable::BaseTransaction* const trans) OVERRIDE; | 70 syncable::BaseTransaction* const trans) OVERRIDE; |
73 virtual void UpdateNigoriFromEncryptedTypes( | 71 virtual void UpdateNigoriFromEncryptedTypes( |
74 sync_pb::NigoriSpecifics* nigori, | 72 sync_pb::NigoriSpecifics* nigori, |
75 syncable::BaseTransaction* const trans) const OVERRIDE; | 73 syncable::BaseTransaction* const trans) const OVERRIDE; |
76 virtual bool NeedKeystoreKey( | 74 virtual bool NeedKeystoreKey( |
77 syncable::BaseTransaction* const trans) const OVERRIDE; | 75 syncable::BaseTransaction* const trans) const OVERRIDE; |
78 virtual bool SetKeystoreKey( | 76 virtual bool SetKeystoreKey( |
79 const std::string& key, | 77 const std::string& key, |
80 syncable::BaseTransaction* const trans) OVERRIDE; | 78 syncable::BaseTransaction* const trans) OVERRIDE; |
81 // Can be called from any thread. | 79 // Can be called from any thread. |
82 virtual ModelTypeSet GetEncryptedTypes( | 80 virtual ModelTypeSet GetEncryptedTypes( |
83 syncable::BaseTransaction* const trans) const OVERRIDE; | 81 syncable::BaseTransaction* const trans) const OVERRIDE; |
84 | 82 |
85 // Unsafe getters. Use only if sync is not up and running and there is no risk | 83 // Unsafe getters. Use only if sync is not up and running and there is no risk |
86 // of other threads calling this. | 84 // of other threads calling this. |
87 Cryptographer* GetCryptographerUnsafe(); | 85 Cryptographer* GetCryptographerUnsafe(); |
88 ModelTypeSet GetEncryptedTypesUnsafe(); | 86 ModelTypeSet GetEncryptedTypesUnsafe(); |
89 | 87 |
90 bool MigratedToKeystore(); | 88 bool MigratedToKeystore(); |
| 89 base::Time migration_time() const; |
91 | 90 |
92 private: | 91 private: |
93 FRIEND_TEST_ALL_PREFIXES(SyncEncryptionHandlerImplTest, | 92 FRIEND_TEST_ALL_PREFIXES(SyncEncryptionHandlerImplTest, |
94 NigoriEncryptionTypes); | 93 NigoriEncryptionTypes); |
95 FRIEND_TEST_ALL_PREFIXES(SyncEncryptionHandlerImplTest, | 94 FRIEND_TEST_ALL_PREFIXES(SyncEncryptionHandlerImplTest, |
96 EncryptEverythingExplicit); | 95 EncryptEverythingExplicit); |
97 FRIEND_TEST_ALL_PREFIXES(SyncEncryptionHandlerImplTest, | 96 FRIEND_TEST_ALL_PREFIXES(SyncEncryptionHandlerImplTest, |
98 EncryptEverythingImplicit); | 97 EncryptEverythingImplicit); |
99 FRIEND_TEST_ALL_PREFIXES(SyncEncryptionHandlerImplTest, | 98 FRIEND_TEST_ALL_PREFIXES(SyncEncryptionHandlerImplTest, |
100 UnknownSensitiveTypes); | 99 UnknownSensitiveTypes); |
(...skipping 179 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
280 PassphraseType passphrase_type_; | 279 PassphraseType passphrase_type_; |
281 | 280 |
282 // The keystore key provided by the server. | 281 // The keystore key provided by the server. |
283 std::string keystore_key_; | 282 std::string keystore_key_; |
284 | 283 |
285 // The number of times we've automatically (i.e. not via SetPassphrase or | 284 // The number of times we've automatically (i.e. not via SetPassphrase or |
286 // conflict resolver) updated the nigori's encryption keys in this chrome | 285 // conflict resolver) updated the nigori's encryption keys in this chrome |
287 // instantiation. | 286 // instantiation. |
288 int nigori_overwrite_count_; | 287 int nigori_overwrite_count_; |
289 | 288 |
290 // The time (in ms) the nigori was migrated to support keystore encryption. | 289 // The time the nigori was migrated to support keystore encryption. |
291 int64 migration_time_ms_; | 290 base::Time migration_time_; |
292 | 291 |
293 DISALLOW_COPY_AND_ASSIGN(SyncEncryptionHandlerImpl); | 292 DISALLOW_COPY_AND_ASSIGN(SyncEncryptionHandlerImpl); |
294 }; | 293 }; |
295 | 294 |
296 } // namespace syncer | 295 } // namespace syncer |
297 | 296 |
298 #endif // SYNC_INTERNAL_API_PUBLIC_SYNC_ENCRYPTION_HANDLER_IMPL_H_ | 297 #endif // SYNC_INTERNAL_API_PUBLIC_SYNC_ENCRYPTION_HANDLER_IMPL_H_ |
OLD | NEW |