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