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

Unified Diff: chrome/browser/sync/syncable/nigori_util.h

Issue 6465005: [Sync] Initial support for encrypting any datatype (no UI hookup yet). (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Rebase + small fix Created 9 years, 10 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 | « chrome/browser/sync/syncable/model_type_unittest.cc ('k') | chrome/browser/sync/syncable/nigori_util.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: chrome/browser/sync/syncable/nigori_util.h
diff --git a/chrome/browser/sync/syncable/nigori_util.h b/chrome/browser/sync/syncable/nigori_util.h
new file mode 100644
index 0000000000000000000000000000000000000000..3ad8fcd4cec9ccbf5d67ec571f8e6536d9f294fa
--- /dev/null
+++ b/chrome/browser/sync/syncable/nigori_util.h
@@ -0,0 +1,62 @@
+// Copyright (c) 2011 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.
+
+// Various utility methods for nigory-based multi-type encryption.
+
+#ifndef CHROME_BROWSER_SYNC_SYNCABLE_NIGORI_UTIL_H_
+#define CHROME_BROWSER_SYNC_SYNCABLE_NIGORI_UTIL_H_
+#pragma once
+
+#include "chrome/browser/sync/protocol/nigori_specifics.pb.h"
+#include "chrome/browser/sync/syncable/model_type.h"
+
+namespace browser_sync {
+class Cryptographer;
+}
+
+namespace syncable {
+
+class BaseTransaction;
+class ReadTransaction;
+class WriteTransaction;
+
+// Returns the set of datatypes that require encryption as specified by the
+// Sync DB's nigori node. This will never include passwords, as the encryption
+// status of that is always on if passwords are enabled..
+ModelTypeSet GetEncryptedDataTypes(BaseTransaction* const trans);
+
+// Extract the set of encrypted datatypes from a nigori node.
+ModelTypeSet GetEncryptedDataTypesFromNigori(
+ const sync_pb::NigoriSpecifics& nigori);
+
+// Set the encrypted datatypes on the nigori node.
+void FillNigoriEncryptedTypes(const ModelTypeSet& types,
+ sync_pb::NigoriSpecifics* nigori);
+
+// Check if our unsyced changes are encrypted if they need to be based on
+// |encrypted_types|.
+// Returns: true if all unsynced data that should be encrypted is.
+// false if some unsynced changes need to be encrypted.
+// This method is similar to ProcessUnsyncedChangesForEncryption but does not
+// modify the data and does not care if data is unnecessarily encrypted.
+bool VerifyUnsyncedChangesAreEncrypted(
+ BaseTransaction* const trans,
+ const ModelTypeSet& encrypted_types);
+
+// Processes all unsynced changes and ensures they are appropriately encrypted
+// or unencrypted, based on |encrypted_types|.
+bool ProcessUnsyncedChangesForEncryption(
+ WriteTransaction* const trans,
+ const syncable::ModelTypeSet& encrypted_types,
+ browser_sync::Cryptographer* cryptographer);
+
+// Verifies all data of type |type| is encrypted if |is_encrypted| is true or is
+// unencrypted otherwise.
+bool VerifyDataTypeEncryption(BaseTransaction* const trans,
+ ModelType type,
+ bool is_encrypted);
+
+} // namespace syncable
+
+#endif // CHROME_BROWSER_SYNC_SYNCABLE_NIGORI_UTIL_H_
« no previous file with comments | « chrome/browser/sync/syncable/model_type_unittest.cc ('k') | chrome/browser/sync/syncable/nigori_util.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698