/* Copyright 2018 Google LLC
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *     https://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */
syntax = "proto2";

import "securegcm.proto";

package securegcm;

option java_package = "com.google.security.cryptauth.lib.securegcm";
option java_outer_classname = "SecureGcmProximityAuthProto";
option objc_class_prefix = "SGCM";

// Message used when one device wants to initiate a Proximity Auth pairing with another device
// DEPRECATED. DO NOT USE
message CloudToDeviceProximityAuthPairing {
// The name or description of the device that wants to pair with another
// personal device of the user.  This is a string that may be shown to the
// user or may be kept in logs.
  optional string initiating_device_name = 1;

  // The original device's Bluetooth address in human readable form
  // (e.g., <code>AA:BB:CC:DD:EE:FF</code>)
  optional string initiating_device_bt_address = 2;

  // A symmetric key that was generated by the original device.
  optional bytes ephemeral_symmetric_key = 3;

  // Optional additional metadata that the initiating device can choose to send.
  // Used for quick protocol iteration.
  optional bytes additional_metadata = 4;
}

// Message to push to eligible unlock devices so that they can contact the
// device to be unlocked. Used by FindEligibleUnlockDevicesRequest, with
// PayloadType = DEVICE_PROXIMITY_CALLBACK.
message DeviceProximityCallback {
  // Required. The bluetooth MAC address that should be contacted by the unlock
  // device.
  optional string callback_bluetooth_address = 1;

  // Required. The type of the device that triggered this callback to be sent.
  optional DeviceType source_device_type = 2;

  // The version of the setup protocol that the source device expects to use.
  optional int32 protocol_version = 3;
}
