Home | History | Annotate | Download | only in protocol
      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 // Sync protocol datatype extension for nigori keys.
      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 import "encryption.proto";
     18 
     19 message NigoriKey {
     20   optional string name = 1;
     21   optional bytes user_key = 2;
     22   optional bytes encryption_key = 3;
     23   optional bytes mac_key = 4;
     24 }
     25 
     26 message NigoriKeyBag {
     27   repeated NigoriKey key = 2;
     28 }
     29 
     30 // Properties of nigori sync object.
     31 message NigoriSpecifics {
     32   optional EncryptedData encryption_keybag = 1;
     33   // Once keystore migration is performed, we have to freeze the keybag so that
     34   // older clients (that don't support keystore encryption) do not attempt to
     35   // update the keybag.
     36   // Previously |using_explicit_passphrase|.
     37   optional bool keybag_is_frozen = 2;
     38 
     39   // Obsolete encryption fields. These were deprecated due to legacy versions
     40   // that understand their usage but did not perform encryption properly.
     41   // optional bool deprecated_encrypt_bookmarks = 3;
     42   // optional bool deprecated_encrypt_preferences = 4;
     43   // optional bool deprecated_encrypt_autofill_profile = 5;
     44   // optional bool deprecated_encrypt_autofill = 6;
     45   // optional bool deprecated_encrypt_themes = 7;
     46   // optional bool deprecated_encrypt_typed_urls = 8;
     47   // optional bool deprecated_encrypt_extensions = 9;
     48   // optional bool deprecated_encrypt_sessions = 10;
     49   // optional bool deprecated_encrypt_apps = 11;
     50   // optional bool deprecated_encrypt_search_engines = 12;
     51 
     52   // Booleans corresponding to whether a datatype should be encrypted.
     53   // Passwords are always encrypted, so we don't need a field here.
     54   // History delete directives need to be consumable by the server, and
     55   // thus can't be encrypted.
     56   // Synced Notifications need to be consumed by the server (the read flag)
     57   // and thus can't be encrypted.
     58   // Synced Notification App Info is set by the server, and thus cannot be
     59   // encrypted.
     60   optional bool encrypt_bookmarks = 13;
     61   optional bool encrypt_preferences = 14;
     62   optional bool encrypt_autofill_profile = 15;
     63   optional bool encrypt_autofill = 16;
     64   optional bool encrypt_themes = 17;
     65   optional bool encrypt_typed_urls = 18;
     66   optional bool encrypt_extensions = 19;
     67   optional bool encrypt_sessions = 20;
     68   optional bool encrypt_apps = 21;
     69   optional bool encrypt_search_engines = 22;
     70 
     71   // Deprecated on clients where tab sync is enabled by default.
     72   // optional bool sync_tabs = 23;
     73 
     74   // If true, all current and future datatypes will be encrypted.
     75   optional bool encrypt_everything = 24;
     76 
     77   optional bool encrypt_extension_settings = 25;
     78   optional bool encrypt_app_notifications = 26;
     79   optional bool encrypt_app_settings = 27;
     80 
     81   // User device information. Contains information about each device that has a
     82   // sync-enabled Chrome browser connected to the user account.
     83   // This has been moved to the DeviceInfo message.
     84   // repeated DeviceInformation deprecated_device_information = 28;
     85 
     86   // Enable syncing favicons as part of tab sync.
     87   optional bool sync_tab_favicons = 29;
     88 
     89   // The state of the passphrase required to decrypt |encryption_keybag|.
     90   enum PassphraseType {
     91     // Gaia-based encryption passphrase. Deprecated.
     92     IMPLICIT_PASSPHRASE = 1;
     93     // Keystore key encryption passphrase. Uses |keystore_bootstrap| to
     94     // decrypt |encryption_keybag|.
     95     KEYSTORE_PASSPHRASE = 2;
     96     // Previous Gaia-based passphrase frozen and treated as a custom passphrase.
     97     FROZEN_IMPLICIT_PASSPHRASE  = 3;
     98     // User provided custom passphrase.
     99     CUSTOM_PASSPHRASE = 4;
    100   }
    101   optional PassphraseType passphrase_type = 30
    102       [default = IMPLICIT_PASSPHRASE];
    103 
    104   // The keystore decryptor token blob. Encrypted with the keystore key, and
    105   // contains the encryption key used to decrypt |encryption_keybag|.
    106   // Only set if passphrase_state == KEYSTORE_PASSPHRASE.
    107   optional EncryptedData keystore_decryptor_token = 31;
    108 
    109   // The time (in epoch milliseconds) at which the keystore migration was
    110   // performed.
    111   optional int64 keystore_migration_time = 32;
    112 
    113   // The time (in epoch milliseconds) at which a custom passphrase was set.
    114   // Note: this field may not be set if the custom passphrase was applied before
    115   // this field was introduced.
    116   optional int64 custom_passphrase_time = 33;
    117 
    118   // Boolean corresponding to whether custom spelling dictionary should be
    119   // encrypted.
    120   optional bool encrypt_dictionary = 34;
    121 
    122   // Boolean corresponding to Whether to encrypt favicons data or not.
    123   optional bool encrypt_favicon_images = 35;
    124   optional bool encrypt_favicon_tracking = 36;
    125 
    126   // Boolean corresponding to whether articles should be encrypted.
    127   optional bool encrypt_articles = 37;
    128 
    129   // Boolean corresponding to whether app list items should be encrypted.
    130   optional bool encrypt_app_list = 38;
    131 }
    132 
    133