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

Side by Side Diff: components/sync/core/sync_encryption_handler.h

Issue 2130453004: [Sync] Move //sync to //components/sync. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Rebase. Created 4 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
« no previous file with comments | « components/sync/core/sync_db_util.cc ('k') | components/sync/core/sync_encryption_handler.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2012 The Chromium Authors. All rights reserved. 1 // Copyright 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_PUBLIC_SYNC_ENCRYPTION_HANDLER_H_ 5 #ifndef COMPONENTS_SYNC_CORE_SYNC_ENCRYPTION_HANDLER_H_
6 #define SYNC_INTERNAL_API_PUBLIC_SYNC_ENCRYPTION_HANDLER_H_ 6 #define COMPONENTS_SYNC_CORE_SYNC_ENCRYPTION_HANDLER_H_
7 7
8 #include <string> 8 #include <string>
9 9
10 #include "base/time/time.h" 10 #include "base/time/time.h"
11 #include "sync/base/sync_export.h" 11 #include "components/sync/base/model_type.h"
12 #include "sync/internal_api/public/base/model_type.h" 12 #include "components/sync/base/sync_export.h"
13 #include "sync/protocol/sync.pb.h" 13 #include "components/sync/protocol/sync.pb.h"
14 14
15 namespace syncer { 15 namespace syncer {
16 16
17 class Cryptographer; 17 class Cryptographer;
18 18
19 // Reasons due to which Cryptographer might require a passphrase. 19 // Reasons due to which Cryptographer might require a passphrase.
20 enum PassphraseRequiredReason { 20 enum PassphraseRequiredReason {
21 REASON_PASSPHRASE_NOT_REQUIRED = 0, // Initial value. 21 REASON_PASSPHRASE_NOT_REQUIRED = 0, // Initial value.
22 REASON_ENCRYPTION = 1, // The cryptographer requires a 22 REASON_ENCRYPTION = 1, // The cryptographer requires a
23 // passphrase for its first attempt at 23 // passphrase for its first attempt at
24 // encryption. Happens only during 24 // encryption. Happens only during
25 // migration or upgrade. 25 // migration or upgrade.
26 REASON_DECRYPTION = 2, // The cryptographer requires a 26 REASON_DECRYPTION = 2, // The cryptographer requires a
27 // passphrase for its first attempt at 27 // passphrase for its first attempt at
28 // decryption. 28 // decryption.
29 }; 29 };
30 30
31 // The different states for the encryption passphrase. These control if and how 31 // The different states for the encryption passphrase. These control if and how
32 // the user should be prompted for a decryption passphrase. 32 // the user should be prompted for a decryption passphrase.
33 // Do not re-order or delete these entries; they are used in a UMA histogram. 33 // Do not re-order or delete these entries; they are used in a UMA histogram.
34 // Please edit SyncPassphraseType in histograms.xml if a value is added. 34 // Please edit SyncPassphraseType in histograms.xml if a value is added.
35 enum PassphraseType { 35 enum PassphraseType {
36 IMPLICIT_PASSPHRASE = 0, // GAIA-based passphrase (deprecated). 36 IMPLICIT_PASSPHRASE = 0, // GAIA-based passphrase (deprecated).
37 KEYSTORE_PASSPHRASE = 1, // Keystore passphrase. 37 KEYSTORE_PASSPHRASE = 1, // Keystore passphrase.
38 FROZEN_IMPLICIT_PASSPHRASE = 2, // Frozen GAIA passphrase. 38 FROZEN_IMPLICIT_PASSPHRASE = 2, // Frozen GAIA passphrase.
39 CUSTOM_PASSPHRASE = 3, // User-provided passphrase. 39 CUSTOM_PASSPHRASE = 3, // User-provided passphrase.
40 PASSPHRASE_TYPE_SIZE, // The size of this enum; keep last. 40 PASSPHRASE_TYPE_SIZE, // The size of this enum; keep last.
41 }; 41 };
42 42
43 // Enum used to distinguish which bootstrap encryption token is being updated. 43 // Enum used to distinguish which bootstrap encryption token is being updated.
44 enum BootstrapTokenType { 44 enum BootstrapTokenType {
45 PASSPHRASE_BOOTSTRAP_TOKEN, 45 PASSPHRASE_BOOTSTRAP_TOKEN,
46 KEYSTORE_BOOTSTRAP_TOKEN 46 KEYSTORE_BOOTSTRAP_TOKEN
47 }; 47 };
48 48
49 // Sync's encryption handler. Handles tracking encrypted types, ensuring the 49 // Sync's encryption handler. Handles tracking encrypted types, ensuring the
50 // cryptographer encrypts with the proper key and has the most recent keybag, 50 // cryptographer encrypts with the proper key and has the most recent keybag,
(...skipping 28 matching lines...) Expand all
79 79
80 virtual void OnPassphraseAccepted() = 0; 80 virtual void OnPassphraseAccepted() = 0;
81 // |bootstrap_token| is an opaque base64 encoded representation of the key 81 // |bootstrap_token| is an opaque base64 encoded representation of the key
82 // generated by the current passphrase, and is provided to the observer for 82 // generated by the current passphrase, and is provided to the observer for
83 // persistence purposes and use in a future initialization of sync (e.g. 83 // persistence purposes and use in a future initialization of sync (e.g.
84 // after restart). The boostrap token will always be derived from the most 84 // after restart). The boostrap token will always be derived from the most
85 // recent GAIA password (for accounts with implicit passphrases), even if 85 // recent GAIA password (for accounts with implicit passphrases), even if
86 // the data is still encrypted with an older GAIA password. For accounts 86 // the data is still encrypted with an older GAIA password. For accounts
87 // with explicit passphrases, it will be the most recently seen custom 87 // with explicit passphrases, it will be the most recently seen custom
88 // passphrase. 88 // passphrase.
89 virtual void OnBootstrapTokenUpdated( 89 virtual void OnBootstrapTokenUpdated(const std::string& bootstrap_token,
90 const std::string& bootstrap_token, 90 BootstrapTokenType type) = 0;
91 BootstrapTokenType type) = 0;
92 91
93 // Called when the set of encrypted types or the encrypt 92 // Called when the set of encrypted types or the encrypt
94 // everything flag has been changed. Note that encryption isn't 93 // everything flag has been changed. Note that encryption isn't
95 // complete until the OnEncryptionComplete() notification has been 94 // complete until the OnEncryptionComplete() notification has been
96 // sent (see below). 95 // sent (see below).
97 // 96 //
98 // |encrypted_types| will always be a superset of 97 // |encrypted_types| will always be a superset of
99 // Cryptographer::SensitiveTypes(). If |encrypt_everything| is 98 // Cryptographer::SensitiveTypes(). If |encrypt_everything| is
100 // true, |encrypted_types| will be the set of all known types. 99 // true, |encrypted_types| will be the set of all known types.
101 // 100 //
102 // Until this function is called, observers can assume that the 101 // Until this function is called, observers can assume that the
103 // set of encrypted types is Cryptographer::SensitiveTypes() and 102 // set of encrypted types is Cryptographer::SensitiveTypes() and
104 // that the encrypt everything flag is false. 103 // that the encrypt everything flag is false.
105 virtual void OnEncryptedTypesChanged( 104 virtual void OnEncryptedTypesChanged(ModelTypeSet encrypted_types,
106 ModelTypeSet encrypted_types, 105 bool encrypt_everything) = 0;
107 bool encrypt_everything) = 0;
108 106
109 // Called after we finish encrypting the current set of encrypted 107 // Called after we finish encrypting the current set of encrypted
110 // types. 108 // types.
111 virtual void OnEncryptionComplete() = 0; 109 virtual void OnEncryptionComplete() = 0;
112 110
113 // The cryptographer has been updated. Listeners should check that their 111 // The cryptographer has been updated. Listeners should check that their
114 // own state matches the cryptographer. 112 // own state matches the cryptographer.
115 // Used primarily for debugging. 113 // Used primarily for debugging.
116 virtual void OnCryptographerStateChanged(Cryptographer* cryptographer) = 0; 114 virtual void OnCryptographerStateChanged(Cryptographer* cryptographer) = 0;
117 115
(...skipping 65 matching lines...) Expand 10 before | Expand all | Expand 10 after
183 // Returns the current state of the passphrase needed to decrypt the 181 // Returns the current state of the passphrase needed to decrypt the
184 // bag of encryption keys in the nigori node. 182 // bag of encryption keys in the nigori node.
185 virtual PassphraseType GetPassphraseType() const = 0; 183 virtual PassphraseType GetPassphraseType() const = 0;
186 184
187 // The set of types that are always encrypted. 185 // The set of types that are always encrypted.
188 static ModelTypeSet SensitiveTypes(); 186 static ModelTypeSet SensitiveTypes();
189 }; 187 };
190 188
191 } // namespace syncer 189 } // namespace syncer
192 190
193 #endif // SYNC_INTERNAL_API_PUBLIC_SYNC_ENCRYPTION_HANDLER_H_ 191 #endif // COMPONENTS_SYNC_CORE_SYNC_ENCRYPTION_HANDLER_H_
OLDNEW
« no previous file with comments | « components/sync/core/sync_db_util.cc ('k') | components/sync/core/sync_encryption_handler.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698