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 10 syntax = "proto2"; 11 12 option optimize_for = LITE_RUNTIME; 13 option retain_unknown_fields = true; 14 15 package 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. 29 message EncryptedData { 30 optional string key_name = 1; 31 optional string blob = 2; 32 }; 33