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

Unified Diff: net/tools/testserver/chromiumsync.py

Issue 10455012: [Sync] Add support for performing a GetKey on startup. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Rebase Created 8 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
Index: net/tools/testserver/chromiumsync.py
diff --git a/net/tools/testserver/chromiumsync.py b/net/tools/testserver/chromiumsync.py
index d789bcbbc653e6a1d46f8452d914e493f27f926c..fdee4f0ef0597fa5c3b44396c8237cb3148058e4 100644
--- a/net/tools/testserver/chromiumsync.py
+++ b/net/tools/testserver/chromiumsync.py
@@ -13,6 +13,7 @@ import copy
import operator
import pickle
import random
+import string
import sys
import threading
import time
@@ -97,6 +98,9 @@ ROOT_ID = '0'
# Jan 1 1970, 00:00:00, non-dst.
UNIX_TIME_EPOCH = (1970, 1, 1, 0, 0, 0, 3, 1, 0)
+# The number of characters in the server-generated encryption key.
+KEY_LENGTH = 16
tim (not reviewing) 2012/07/19 21:42:03 nit: ENCRYPTION_KEY_LENGTH or KEYSTORE_ is a bit l
Nicolas Zea 2012/07/24 22:51:24 Done.
+
class Error(Exception):
"""Error class for this module."""
@@ -468,6 +472,9 @@ class SyncDataModel(object):
self.induced_error_frequency = 0
self.sync_count_before_errors = 0
+ self._key = ''.join(random.choice(
+ string.ascii_uppercase + string.digits) for x in range(KEY_LENGTH))
+
def _SaveEntry(self, entry):
"""Insert or update an entry in the change log, and give it a new version.
@@ -664,6 +671,10 @@ class SyncDataModel(object):
# batch, even if that item was filtered out.
return (batch[-1].version, filtered, len(new_changes) - len(batch))
+ def GetKey(self):
+ """Returns the encryption key for this account."""
+ return self._key
+
def _CopyOverImmutableFields(self, entry):
"""Preserve immutable fields by copying pre-commit state.
@@ -1043,7 +1054,7 @@ class TestServer(object):
def HandleSetInducedError(self, path):
query = urlparse.urlparse(path)[4]
self.account_lock.acquire()
- code = 200;
+ code = 200
response = 'Success'
error = sync_pb2.ClientToServerResponse.Error()
try:
@@ -1132,8 +1143,8 @@ class TestServer(object):
response.error_code = sync_enums_pb2.SyncEnums.SUCCESS
self.CheckStoreBirthday(request)
response.store_birthday = self.account.store_birthday
- self.CheckTransientError();
- self.CheckSendError();
+ self.CheckTransientError()
+ self.CheckSendError()
print_context('->')
@@ -1151,6 +1162,9 @@ class TestServer(object):
self.HandleGetUpdates(request.get_updates, response.get_updates)
print_context('<-')
print '%d update(s)' % len(response.get_updates.entries)
+ elif contents == sync_pb2.ClientToServerMessage.GET_KEY:
+ print 'GetKey',
+ self.HandleGetKey(request.get_key, response.get_key)
else:
print 'Unrecognizable sync request!'
return (400, None) # Bad request.
@@ -1262,3 +1276,15 @@ class TestServer(object):
reply = update_response.entries.add()
reply.CopyFrom(entry)
update_sieve.SaveProgress(new_timestamp, update_response)
+
+ def HandleGetKey(self, update_request, updates_response):
+ """Respond to a GetKey request by returning the per-account encryption key.
+
+ Args:
+ update_request: A sync_pb:GetKeyMessage protobuf.
+ update_response: A sync_pb.GetKeyResponse protobuf into which the the key
+ is written.
+ """
+ updates_response.SetInParent()
+ updates_response.key = self.account.GetKey()
+ print "Returning encryption key: %s" % (updates_response.key)

Powered by Google App Engine
This is Rietveld 408576698