| // 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. |
| |
| // If you change or add any fields in this file, update proto_visitors.h and |
| // potentially proto_enum_conversions.{h, cc}. |
| |
| syntax = "proto2"; |
| |
| option java_multiple_files = true; |
| option java_package = "org.chromium.components.sync.protocol"; |
| |
| option optimize_for = LITE_RUNTIME; |
| |
| package sync_pb; |
| |
| import "components/sync/protocol/sync_enums.proto"; |
| |
| // Information about a device that is running a sync-enabled Chrome browser. We |
| // are mapping the per-client cache guid to more specific information about the |
| // device. |
| message DeviceInfoSpecifics { |
| // The cache_guid created to identify a sync client on this device. |
| optional string cache_guid = 1; |
| |
| // A non-unique but human readable name to describe this client. |
| optional string client_name = 2; |
| |
| // The platform of the device. |
| optional SyncEnums.DeviceType device_type = 3; |
| |
| // The UserAgent used when contacting the Chrome Sync server. |
| optional string sync_user_agent = 4; |
| |
| // The Chrome instance's version. Updated (if necessary) on every startup. |
| optional string chrome_version = 5; |
| |
| // Last time when pre-sync data on the device was saved. The device can be |
| // restored to state back to this time. In millisecond since UNIX epoch. |
| // DEPRECATED in M50. |
| optional int64 deprecated_backup_timestamp = 6 [deprecated = true]; |
| |
| // Device_id that is stable until user signs out. This device_id is used for |
| // annotating login scoped refresh token. |
| optional string signin_scoped_device_id = 7; |
| |
| // This field is updated to be the current time periodically, and is also set |
| // to the current time whenever another field changes. By examining the |
| // difference between this field and the current time, it should be possible |
| // to reason about the inactivity of any device that was syncing at one time. |
| optional int64 last_updated_timestamp = 8; |
| |
| // Device info fields that are specific to a feature. This is information that |
| // can not be derived from the other fields in the proto and are not general |
| // enough to be used by another feature. |
| optional FeatureSpecificFields feature_fields = 9; |
| |
| // Device specific information for Sharing feature. |
| optional SharingSpecificFields sharing_fields = 10; |
| |
| // Model of device. |
| optional string model = 11; |
| |
| // Name of device manufacturer. |
| optional string manufacturer = 12; |
| |
| // The interval in minutes with which |last_updated_timestamp| is updated to |
| // the sync servers if online and while sync is actively running (e.g. |
| // excludes backgrounded apps on Android). Introduced in M81. The legacy |
| // default was 1 day. |
| optional int32 pulse_interval_in_minutes = 13; |
| |
| // Device specific information for Sync invalidations. |
| optional InvalidationSpecificFields invalidation_fields = 14; |
| |
| // Information for contacting this device in order to perform security key |
| // operations. |
| optional PhoneAsASecurityKeySpecificFields paask_fields = 15; |
| |
| // Unique hardware identifier string which details the HW combination of |
| // a ChromeOS device. This field will be empty on other OS devices. |
| optional string full_hardware_class = 16; |
| } |
| |
| // Feature specific information about the device that is running a sync-enabled |
| // Chrome browser. Adding to this proto is discouraged and should only be added |
| // when the information can not be derived more generally. |
| message FeatureSpecificFields { |
| // Tracks whether the SendTabToSelf feature is enabled on the device. For this |
| // to be true, two things must be true: (1) The receiving side of the feature |
| // must be enabled on the device (2) The user has enabled sync for this |
| // feature |
| optional bool send_tab_to_self_receiving_enabled = 1; |
| } |
| |
| // Device specific information for Sharing feature. Used to send end-to-end |
| // encrypted message through FCM to other devices. |
| message SharingSpecificFields { |
| // FCM registration token of device subscribed using VAPID key. |
| // TODO(crbug.com/1012226): Deprecate when VAPID migration is over. |
| optional string vapid_fcm_token = 1; |
| |
| // Public key for message encryption [RFC8291] using VAPID key. |
| // TODO(crbug.com/1012226): Deprecate when VAPID migration is over. |
| optional bytes vapid_p256dh = 2; |
| |
| // Auth secret for message encryption [RFC8291] using VAPID key. |
| // TODO(crbug.com/1012226): Deprecate when VAPID migration is over. |
| optional bytes vapid_auth_secret = 3; |
| |
| // Enum defining available Sharing features. |
| enum EnabledFeatures { |
| reserved 5; |
| reserved "PEER_CONNECTION"; |
| |
| UNKNOWN = 0; |
| // Supports Click to Call only via VAPID. |
| CLICK_TO_CALL_VAPID = 1; |
| // Supports Shared Clipboard only via VAPID. |
| SHARED_CLIPBOARD_VAPID = 2; |
| SMS_FETCHER = 3; |
| REMOTE_COPY = 4; |
| DISCOVERY = 6; |
| // Suppots Click to Call via both VAPID and sender ID. |
| CLICK_TO_CALL_V2 = 7; |
| // Suppots Shared Clipboard via both VAPID and sender ID. |
| SHARED_CLIPBOARD_V2 = 8; |
| } |
| |
| // A list of enabled Sharing features. |
| repeated EnabledFeatures enabled_features = 4; |
| |
| // Deprecated. Use sender_id_fcm_token_v2 for new clients. |
| optional string sender_id_fcm_token_deprecated = 5 [deprecated = true]; |
| |
| // Deprecated. Use sender_id_p256dh_v2 for new clients. |
| optional bytes sender_id_p256dh_deprecated = 6 [deprecated = true]; |
| |
| // Deprecated. Use sender_id_auth_secret_v2 for new clients. |
| optional bytes sender_id_auth_secret_deprecated = 7 [deprecated = true]; |
| |
| // FCM registration token of device subscribed using Sharing sender ID. |
| optional string sender_id_fcm_token_v2 = 8; |
| |
| // Public key for message encryption [RFC8291] using Sharing sender ID. |
| optional bytes sender_id_p256dh_v2 = 9; |
| |
| // Auth secret for message encryption [RFC8291] using Sharing sender ID. |
| optional bytes sender_id_auth_secret_v2 = 10; |
| } |
| |
| // Device specific information telling how to send invalidations to this device. |
| message InvalidationSpecificFields { |
| // FCM registration token of device (using Sync sender ID). |
| optional string instance_id_token = 1; |
| |
| // This device wants to receive only invalidations which are related to these |
| // types. The legitimate values of this field correspond to the protobuf field |
| // numbers of all EntitySpecifics fields supported by the server (see |
| // components/sync/protocol/sync.proto). |
| repeated int32 interested_data_type_ids = 2; |
| } |
| |
| message PhoneAsASecurityKeySpecificFields { |
| // The encoded tunnel server in the same format as in the BLE advert. See |
| // device::cablev2::tunnelserver::DecodeDomain. (Actually a uint16 but |
| // proto doesn't have that as a type.) |
| optional uint32 tunnel_server_domain = 1; |
| |
| // An FCM token that can be presented to the tunnel server to contact this |
| // device. |
| optional bytes contact_id = 2; |
| |
| // A shared secret key, used to enable communication across devices via |
| // unauthenticated channels. Knowledge of this secret acts as proof that the |
| // remote end is authorized to talk to the device publishing this secret. |
| optional bytes secret = 3; |
| |
| // An id that identifies |secret|. This, and |secret|, will be rotated and |
| // the ID allows this device to know which |secret| the counterparty is |
| // using. |
| optional fixed32 id = 4; |
| |
| // A P-256, X9.62-encoded public key for this device. Specific to the Chrome |
| // instance. |
| optional bytes peer_public_key_x962 = 5; |
| } |