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

Side by Side Diff: sync/engine/get_key_command.cc

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 unified diff | Download patch | Annotate | Revision Log
OLDNEW
(Empty)
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
3 // found in the LICENSE file.
4
5 #include "sync/engine/get_key_command.h"
6
7 #include "sync/engine/syncer_proto_util.h"
8 #include "sync/protocol/sync.pb.h"
9 #include "sync/sessions/sync_session.h"
10 #include "sync/syncable/directory.h"
11 #include "sync/syncable/read_transaction.h"
12 #include "sync/util/cryptographer.h"
13
14 using sync_pb::ClientToServerMessage;
15 using sync_pb::ClientToServerResponse;
16
17 namespace syncer {
18
19 using sessions::SyncSession;
20
21 GetKeyCommand::GetKeyCommand() {}
22
23 GetKeyCommand::~GetKeyCommand() {}
24
25 SyncerError GetKeyCommand::ExecuteImpl(SyncSession* session) {
26 ClientToServerMessage client_to_server_message;
27 ClientToServerResponse server_to_client_response;
28
29 if (!session->context()->keystore_encryption_enabled())
30 return SYNCER_OK;
31
32 SyncerProtoUtil::SetProtocolVersion(&client_to_server_message);
tim (not reviewing) 2012/07/19 21:42:03 Can we move this to PostClientToServerMessage?
Nicolas Zea 2012/07/24 22:51:24 Added TODO to do that in a follow-up patch.
33 client_to_server_message.set_share(session->context()->account_name());
34 client_to_server_message.set_message_contents(
35 sync_pb::ClientToServerMessage::GET_ENCRYPTION_KEY);
36 client_to_server_message.mutable_get_encryption_key();
37
38 SyncerProtoUtil::AddRequestBirthday(session->context()->directory(),
39 &client_to_server_message);
40
41 SyncerError result = SyncerProtoUtil::PostClientToServerMessage(
42 client_to_server_message,
43 &server_to_client_response,
44 session);
45
46 DVLOG(2) << SyncerProtoUtil::ClientToServerResponseDebugString(
47 server_to_client_response);
48
49 if (result != SYNCER_OK) {
50 LOG(ERROR) << "PostClientToServerMessage() failed during GetKey.";
51 return result;
52 }
53
54 syncable::Directory* dir = session->context()->directory();
55 syncable::ReadTransaction trans(FROM_HERE, dir);
56 Cryptographer* cryptographer =
57 session->context()->directory()->GetCryptographer(&trans);
58 bool success = cryptographer->SetKeystoreKey(
59 server_to_client_response.get_encryption_key().key());
60
61 DVLOG(1) << "GetKey returned key of length "
62 << server_to_client_response.get_encryption_key().key().length()
63 << ". Cryptographer keystore key "
64 << (success ? "" : "not ") << "updated.";
65
66 return (success ? SYNCER_OK : SERVER_RESPONSE_VALIDATION_FAILED);
67 }
68
69 } // namespace syncer
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698