| // Copyright (c) 2012 The Chromium Authors. All rights reserved. |
| // Use of this source code is governed by a BSD-style license that can be |
| // found in the LICENSE file. |
| // |
| // Sync protocol datatype extension for nigori keys. |
| |
| // Update proto_value_conversions{.h,.cc,_unittest.cc} if you change |
| // any fields in this file. |
| |
| syntax = "proto2"; |
| |
| option optimize_for = LITE_RUNTIME; |
| option retain_unknown_fields = true; |
| |
| package sync_pb; |
| |
| import "encryption.proto"; |
| |
| message NigoriKey { |
| optional string name = 1; |
| optional bytes user_key = 2; |
| optional bytes encryption_key = 3; |
| optional bytes mac_key = 4; |
| } |
| |
| message NigoriKeyBag { |
| repeated NigoriKey key = 2; |
| } |
| |
| // Properties of nigori sync object. |
| message NigoriSpecifics { |
| optional EncryptedData encryption_keybag = 1; |
| // Once keystore migration is performed, we have to freeze the keybag so that |
| // older clients (that don't support keystore encryption) do not attempt to |
| // update the keybag. |
| // Previously |using_explicit_passphrase|. |
| optional bool keybag_is_frozen = 2; |
| |
| // Obsolete encryption fields. These were deprecated due to legacy versions |
| // that understand their usage but did not perform encryption properly. |
| // optional bool deprecated_encrypt_bookmarks = 3; |
| // optional bool deprecated_encrypt_preferences = 4; |
| // optional bool deprecated_encrypt_autofill_profile = 5; |
| // optional bool deprecated_encrypt_autofill = 6; |
| // optional bool deprecated_encrypt_themes = 7; |
| // optional bool deprecated_encrypt_typed_urls = 8; |
| // optional bool deprecated_encrypt_extensions = 9; |
| // optional bool deprecated_encrypt_sessions = 10; |
| // optional bool deprecated_encrypt_apps = 11; |
| // optional bool deprecated_encrypt_search_engines = 12; |
| |
| // Booleans corresponding to whether a datatype should be encrypted. |
| // Passwords are always encrypted, so we don't need a field here. |
| // History delete directives need to be consumable by the server, and |
| // thus can't be encrypted. |
| // Synced Notifications need to be consumed by the server (the read flag) |
| // and thus can't be encrypted. |
| // Synced Notification App Info is set by the server, and thus cannot be |
| // encrypted. |
| optional bool encrypt_bookmarks = 13; |
| optional bool encrypt_preferences = 14; |
| optional bool encrypt_autofill_profile = 15; |
| optional bool encrypt_autofill = 16; |
| optional bool encrypt_themes = 17; |
| optional bool encrypt_typed_urls = 18; |
| optional bool encrypt_extensions = 19; |
| optional bool encrypt_sessions = 20; |
| optional bool encrypt_apps = 21; |
| optional bool encrypt_search_engines = 22; |
| |
| // Deprecated on clients where tab sync is enabled by default. |
| // optional bool sync_tabs = 23; |
| |
| // If true, all current and future datatypes will be encrypted. |
| optional bool encrypt_everything = 24; |
| |
| optional bool encrypt_extension_settings = 25; |
| optional bool encrypt_app_notifications = 26; |
| optional bool encrypt_app_settings = 27; |
| |
| // User device information. Contains information about each device that has a |
| // sync-enabled Chrome browser connected to the user account. |
| // This has been moved to the DeviceInfo message. |
| // repeated DeviceInformation deprecated_device_information = 28; |
| |
| // Enable syncing favicons as part of tab sync. |
| optional bool sync_tab_favicons = 29; |
| |
| // The state of the passphrase required to decrypt |encryption_keybag|. |
| enum PassphraseType { |
| // Gaia-based encryption passphrase. Deprecated. |
| IMPLICIT_PASSPHRASE = 1; |
| // Keystore key encryption passphrase. Uses |keystore_bootstrap| to |
| // decrypt |encryption_keybag|. |
| KEYSTORE_PASSPHRASE = 2; |
| // Previous Gaia-based passphrase frozen and treated as a custom passphrase. |
| FROZEN_IMPLICIT_PASSPHRASE = 3; |
| // User provided custom passphrase. |
| CUSTOM_PASSPHRASE = 4; |
| } |
| optional PassphraseType passphrase_type = 30 |
| [default = IMPLICIT_PASSPHRASE]; |
| |
| // The keystore decryptor token blob. Encrypted with the keystore key, and |
| // contains the encryption key used to decrypt |encryption_keybag|. |
| // Only set if passphrase_state == KEYSTORE_PASSPHRASE. |
| optional EncryptedData keystore_decryptor_token = 31; |
| |
| // The time (in epoch milliseconds) at which the keystore migration was |
| // performed. |
| optional int64 keystore_migration_time = 32; |
| |
| // The time (in epoch milliseconds) at which a custom passphrase was set. |
| // Note: this field may not be set if the custom passphrase was applied before |
| // this field was introduced. |
| optional int64 custom_passphrase_time = 33; |
| |
| // Boolean corresponding to whether custom spelling dictionary should be |
| // encrypted. |
| optional bool encrypt_dictionary = 34; |
| |
| // Boolean corresponding to Whether to encrypt favicons data or not. |
| optional bool encrypt_favicon_images = 35; |
| optional bool encrypt_favicon_tracking = 36; |
| |
| // Boolean corresponding to whether articles should be encrypted. |
| optional bool encrypt_articles = 37; |
| |
| // Boolean corresponding to whether app list items should be encrypted. |
| optional bool encrypt_app_list = 38; |
| } |
| |