// Copyright 2020 The Chromium Authors // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. // Brought from: //depot/google3/location/nearby/sharing/proto/wire_format.proto // At CL 317565061 syntax = "proto2"; package sharing.nearby; // Required in Chrome. option optimize_for = LITE_RUNTIME; // File metadata. Does not include the actual bytes of the file. // NEXT_ID=6 message FileMetadata { enum Type { UNKNOWN = 0; IMAGE = 1; VIDEO = 2; APP = 3; AUDIO = 4; } // The human readable name of this file (eg. 'Cookbook.pdf'). optional string name = 1; // The type of file (eg. 'IMAGE' from 'dog.jpg'). Specifying a type helps // provide a richer experience on the receiving side. optional Type type = 2 [default = UNKNOWN]; // The FILE payload id that will be sent as a follow up containing the actual // bytes of the file. optional int64 payload_id = 3; // The total size of the file. optional int64 size = 4; // The mimeType of file (eg. 'image/jpeg' from 'dog.jpg'). Specifying a // mimeType helps provide a richer experience on receiving side. optional string mime_type = 5 [default = "application/octet-stream"]; // A uuid for the attachment. Should be unique across all attachments. optional int64 id = 6; } // NEXT_ID=5 message TextMetadata { enum Type { UNKNOWN = 0; TEXT = 1; // Open with browsers. URL = 2; // Open with map apps. ADDRESS = 3; // Dial. PHONE_NUMBER = 4; } // The title of the text content. optional string text_title = 2; // The type of text (phone number, url, address, or plain text). optional Type type = 3 [default = UNKNOWN]; // The BYTE payload id that will be sent as a follow up containing the actual // bytes of the text. optional int64 payload_id = 4; // The size of the text content. optional int64 size = 5; // A uuid for the attachment. Should be unique across all attachments. optional int64 id = 6; } // NEXT_ID=5 message WifiCredentialsMetadata { enum SecurityType { UNKNOWN_SECURITY_TYPE = 0; OPEN = 1; WPA_PSK = 2; WEP = 3; } // The Wifi network name. This will be sent in introduction. optional string ssid = 2; // The security type of network (OPEN, WPA_PSK, WEP). optional SecurityType security_type = 3 [default = UNKNOWN_SECURITY_TYPE]; // The BYTE payload id that will be sent as a follow up containing the // password. optional int64 payload_id = 4; // A uuid for the attachment. Should be unique across all attachments. optional int64 id = 5; } // A frame used when sending messages over the wire. // NEXT_ID=3 message Frame { enum Version { UNKNOWN_VERSION = 0; V1 = 1; } optional Version version = 1; // Right now there's only 1 version, but if there are more, exactly one of // the following fields will be set. optional V1Frame v1 = 2; } // NEXT_ID=7 message V1Frame { enum FrameType { UNKNOWN_FRAME_TYPE = 0; INTRODUCTION = 1; RESPONSE = 2; PAIRED_KEY_ENCRYPTION = 3; PAIRED_KEY_RESULT = 4; CERTIFICATE_INFO = 5; CANCEL = 6; } optional FrameType type = 1; // Exactly one of the following fields will be set. optional IntroductionFrame introduction = 2; optional ConnectionResponseFrame connection_response = 3; optional PairedKeyEncryptionFrame paired_key_encryption = 4; optional PairedKeyResultFrame paired_key_result = 5; optional CertificateInfoFrame certificate_info = 6; } // An introduction packet sent by the sending side. Contains a list of files // they'd like to share. // NEXT_ID=4 message IntroductionFrame { repeated FileMetadata file_metadata = 1; repeated TextMetadata text_metadata = 2; // The required app package to open the content. May be null. optional string required_package = 3; repeated WifiCredentialsMetadata wifi_credentials_metadata = 4; } // A response packet sent by the receiving side. Accepts or rejects the list of // files. // NEXT_ID=2 message ConnectionResponseFrame { enum Status { UNKNOWN = 0; ACCEPT = 1; REJECT = 2; NOT_ENOUGH_SPACE = 3; UNSUPPORTED_ATTACHMENT_TYPE = 4; TIMED_OUT = 5; } // The receiving side's response. optional Status status = 1; } // A paired key encryption packet sent between devices, contains signed data. // NEXT_ID=3 message PairedKeyEncryptionFrame { // The encrypted data in byte array format. optional bytes signed_data = 1; // The hash of a certificate id. optional bytes secret_id_hash = 2; // An optional encrypted data in byte array format. optional bytes optional_signed_data = 3; } // A paired key verification result packet sent between devices. // NEXT_ID=2 message PairedKeyResultFrame { enum Status { UNKNOWN = 0; SUCCESS = 1; FAIL = 2; UNABLE = 3; } // The verification result. optional Status status = 1; } // A package containing certificate info to be shared to remote device offline. // NEXT_ID=2 message CertificateInfoFrame { // The public certificates to be shared with remote devices. repeated PublicCertificate public_certificate = 1; } // A public certificate from the local device. // NEXT_ID=8 message PublicCertificate { // The unique id of the public certificate. optional bytes secret_id = 1; // A bytes representation of a Secret Key owned by contact, to decrypt the // metadata_key stored within the advertisement. optional bytes authenticity_key = 2; // A bytes representation a public key of X509Certificate, owned by contact, // to decrypt encrypted UKEY2 (from Nearby Connections API) as a hand shake in // contact verification phase. optional bytes public_key = 3; // The time in millis from epoch when this certificate becomes effective. optional int64 start_time = 4; // The time in millis from epoch when this certificate expires. optional int64 end_time = 5; // The encrypted metadata in bytes, contains personal information of the // device/user who created this certificate. Needs to be decrypted into bytes, // and converted back to EncryptedMetadata object to access fields. optional bytes encrypted_metadata_bytes = 6; // The tag for verifying metadata_encryption_key. optional bytes metadata_encryption_key_tag = 7; } // NEXT_ID=3 message WifiCredentials { // Wi-Fi password. optional string password = 1; // True if the network is a hidden network that is not broadcasting its SSID. // Default is false. optional bool hidden_ssid = 2 [default = false]; }