• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1// Copyright (c) 2010 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// Common sync protocol for encrypted data.
6
7// Update proto_value_conversions{.h,.cc,_unittest.cc} if you change
8// any fields in this file.
9
10syntax = "proto2";
11
12option optimize_for = LITE_RUNTIME;
13option retain_unknown_fields = true;
14
15package sync_pb;
16
17// Encrypted sync data consists of two parts: a key name and a blob. Key name is
18// the name of the key that was used to encrypt blob and blob is encrypted data
19// itself.
20//
21// The reason we need to keep track of the key name is that a sync user can
22// change their passphrase (and thus their encryption key) at any time. When
23// that happens, we make a best effort to reencrypt all nodes with the new
24// passphrase, but since we don't have transactions on the server-side, we
25// cannot guarantee that every node will be reencrypted. As a workaround, we
26// keep track of all keys, assign each key a name (by using that key to encrypt
27// a well known string) and keep track of which key was used to encrypt each
28// node.
29message EncryptedData {
30  optional string key_name = 1;
31  optional string blob = 2;
32};
33