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

Unified Diff: sync/internal_api/public/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, 5 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 side-by-side diff with in-line comments
Download patch
« no previous file with comments | « sync/internal_api/public/sync_auth_provider.h ('k') | sync/internal_api/public/sync_encryption_handler.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: sync/internal_api/public/sync_encryption_handler.h
diff --git a/sync/internal_api/public/sync_encryption_handler.h b/sync/internal_api/public/sync_encryption_handler.h
deleted file mode 100644
index 0edad2827325477ebe18ac9e3e640ca299add047..0000000000000000000000000000000000000000
--- a/sync/internal_api/public/sync_encryption_handler.h
+++ /dev/null
@@ -1,193 +0,0 @@
-// Copyright 2012 The Chromium Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-#ifndef SYNC_INTERNAL_API_PUBLIC_SYNC_ENCRYPTION_HANDLER_H_
-#define SYNC_INTERNAL_API_PUBLIC_SYNC_ENCRYPTION_HANDLER_H_
-
-#include <string>
-
-#include "base/time/time.h"
-#include "sync/base/sync_export.h"
-#include "sync/internal_api/public/base/model_type.h"
-#include "sync/protocol/sync.pb.h"
-
-namespace syncer {
-
-class Cryptographer;
-
-// Reasons due to which Cryptographer might require a passphrase.
-enum PassphraseRequiredReason {
- REASON_PASSPHRASE_NOT_REQUIRED = 0, // Initial value.
- REASON_ENCRYPTION = 1, // The cryptographer requires a
- // passphrase for its first attempt at
- // encryption. Happens only during
- // migration or upgrade.
- REASON_DECRYPTION = 2, // The cryptographer requires a
- // passphrase for its first attempt at
- // decryption.
-};
-
-// The different states for the encryption passphrase. These control if and how
-// the user should be prompted for a decryption passphrase.
-// Do not re-order or delete these entries; they are used in a UMA histogram.
-// Please edit SyncPassphraseType in histograms.xml if a value is added.
-enum PassphraseType {
- IMPLICIT_PASSPHRASE = 0, // GAIA-based passphrase (deprecated).
- KEYSTORE_PASSPHRASE = 1, // Keystore passphrase.
- FROZEN_IMPLICIT_PASSPHRASE = 2, // Frozen GAIA passphrase.
- CUSTOM_PASSPHRASE = 3, // User-provided passphrase.
- PASSPHRASE_TYPE_SIZE, // The size of this enum; keep last.
-};
-
-// Enum used to distinguish which bootstrap encryption token is being updated.
-enum BootstrapTokenType {
- PASSPHRASE_BOOTSTRAP_TOKEN,
- KEYSTORE_BOOTSTRAP_TOKEN
-};
-
-// Sync's encryption handler. Handles tracking encrypted types, ensuring the
-// cryptographer encrypts with the proper key and has the most recent keybag,
-// and keeps the nigori node up to date.
-// Implementations of this class must be assumed to be non-thread-safe. All
-// methods must be invoked on the sync thread.
-class SYNC_EXPORT SyncEncryptionHandler {
- public:
- class NigoriState;
-
- // All Observer methods are done synchronously from within a transaction and
- // on the sync thread.
- class SYNC_EXPORT Observer {
- public:
- Observer();
-
- // Called when user interaction is required to obtain a valid passphrase.
- // - If the passphrase is required for encryption, |reason| will be
- // REASON_ENCRYPTION.
- // - If the passphrase is required for the decryption of data that has
- // already been encrypted, |reason| will be REASON_DECRYPTION.
- // - If the passphrase is required because decryption failed, and a new
- // passphrase is required, |reason| will be REASON_SET_PASSPHRASE_FAILED.
- //
- // |pending_keys| is a copy of the cryptographer's pending keys, that may be
- // cached by the frontend for subsequent use by the UI.
- virtual void OnPassphraseRequired(
- PassphraseRequiredReason reason,
- const sync_pb::EncryptedData& pending_keys) = 0;
- // Called when the passphrase provided by the user has been accepted and is
- // now used to encrypt sync data.
-
- virtual void OnPassphraseAccepted() = 0;
- // |bootstrap_token| is an opaque base64 encoded representation of the key
- // generated by the current passphrase, and is provided to the observer for
- // persistence purposes and use in a future initialization of sync (e.g.
- // after restart). The boostrap token will always be derived from the most
- // recent GAIA password (for accounts with implicit passphrases), even if
- // the data is still encrypted with an older GAIA password. For accounts
- // with explicit passphrases, it will be the most recently seen custom
- // passphrase.
- virtual void OnBootstrapTokenUpdated(
- const std::string& bootstrap_token,
- BootstrapTokenType type) = 0;
-
- // Called when the set of encrypted types or the encrypt
- // everything flag has been changed. Note that encryption isn't
- // complete until the OnEncryptionComplete() notification has been
- // sent (see below).
- //
- // |encrypted_types| will always be a superset of
- // Cryptographer::SensitiveTypes(). If |encrypt_everything| is
- // true, |encrypted_types| will be the set of all known types.
- //
- // Until this function is called, observers can assume that the
- // set of encrypted types is Cryptographer::SensitiveTypes() and
- // that the encrypt everything flag is false.
- virtual void OnEncryptedTypesChanged(
- ModelTypeSet encrypted_types,
- bool encrypt_everything) = 0;
-
- // Called after we finish encrypting the current set of encrypted
- // types.
- virtual void OnEncryptionComplete() = 0;
-
- // The cryptographer has been updated. Listeners should check that their
- // own state matches the cryptographer.
- // Used primarily for debugging.
- virtual void OnCryptographerStateChanged(Cryptographer* cryptographer) = 0;
-
- // The passphrase type has changed. |type| is the new type,
- // |passphrase_time| is the time the passphrase was set (unset if |type|
- // is KEYSTORE_PASSPHRASE or the passphrase was set before we started
- // recording the time).
- virtual void OnPassphraseTypeChanged(PassphraseType type,
- base::Time passphrase_time) = 0;
-
- // The user has set a passphrase using this device.
- //
- // |nigori_state| can be used to restore nigori state across
- // SyncEncryptionHandlerImpl lifetimes. See also SyncEncryptionHandlerImpl's
- // RestoredNigori method.
- virtual void OnLocalSetPassphraseEncryption(
- const NigoriState& nigori_state) = 0;
-
- protected:
- virtual ~Observer();
- };
-
- class SYNC_EXPORT NigoriState {
- public:
- NigoriState() {}
- sync_pb::NigoriSpecifics nigori_specifics;
- };
-
- SyncEncryptionHandler();
- virtual ~SyncEncryptionHandler();
-
- // Add/Remove SyncEncryptionHandler::Observers.
- virtual void AddObserver(Observer* observer) = 0;
- virtual void RemoveObserver(Observer* observer) = 0;
-
- // Reads the nigori node, updates internal state as needed, and, if an
- // empty/stale nigori node is detected, overwrites the existing
- // nigori node. Upon completion, if the cryptographer is still ready
- // attempts to re-encrypt all sync data.
- // Note: This method is expensive (it iterates through all encrypted types),
- // so should only be used sparingly (e.g. on startup).
- virtual void Init() = 0;
-
- // Attempts to re-encrypt encrypted data types using the passphrase provided.
- // Notifies observers of the result of the operation via OnPassphraseAccepted
- // or OnPassphraseRequired, updates the nigori node, and does re-encryption as
- // appropriate. If an explicit password has been set previously, we drop
- // subsequent requests to set a passphrase. If the cryptographer has pending
- // keys, and a new implicit passphrase is provided, we try decrypting the
- // pending keys with it, and if that fails, we cache the passphrase for
- // re-encryption once the pending keys are decrypted.
- virtual void SetEncryptionPassphrase(const std::string& passphrase,
- bool is_explicit) = 0;
-
- // Provides a passphrase for decrypting the user's existing sync data.
- // Notifies observers of the result of the operation via OnPassphraseAccepted
- // or OnPassphraseRequired, updates the nigori node, and does re-encryption as
- // appropriate if there is a previously cached encryption passphrase. It is an
- // error to call this when we don't have pending keys.
- virtual void SetDecryptionPassphrase(const std::string& passphrase) = 0;
-
- // Enables encryption of all datatypes.
- virtual void EnableEncryptEverything() = 0;
-
- // Whether encryption of all datatypes is enabled. If false, only sensitive
- // types are encrypted.
- virtual bool IsEncryptEverythingEnabled() const = 0;
-
- // Returns the current state of the passphrase needed to decrypt the
- // bag of encryption keys in the nigori node.
- virtual PassphraseType GetPassphraseType() const = 0;
-
- // The set of types that are always encrypted.
- static ModelTypeSet SensitiveTypes();
-};
-
-} // namespace syncer
-
-#endif // SYNC_INTERNAL_API_PUBLIC_SYNC_ENCRYPTION_HANDLER_H_
« no previous file with comments | « sync/internal_api/public/sync_auth_provider.h ('k') | sync/internal_api/public/sync_encryption_handler.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698