| // Copyright 2018 The Fuchsia Authors. All rights reserved. |
| // Use of this source code is governed by a BSD-style license that can be |
| // found in the LICENSE file. |
| |
| library fuchsia.bluetooth.host; |
| |
| struct SecurityProperties { |
| bool authenticated; |
| bool secure_connections; |
| uint8 encryption_key_size; |
| }; |
| |
| struct Key { |
| // The security properties of this link under which this key was exchanged. |
| SecurityProperties security_properties; |
| |
| // 128 bit key |
| array<uint8>:16 value; |
| }; |
| |
| // Represents a LE Long-Term Key. The |ediv| and |rand| fields are zero if |
| // distributed using LE Secure Connections pairing. |
| struct LTK { |
| Key key; |
| uint8 key_size; |
| uint16 ediv; |
| uint64 rand; |
| }; |
| |
| // The preferred LE connection parameters of the peer. |
| struct LEConnectionParameters { |
| uint16 connection_interval; |
| uint16 connection_latency; |
| uint16 supervision_timeout; |
| }; |
| |
| enum AddressType : uint8 { |
| LE_PUBLIC = 0; |
| LE_RANDOM = 1; |
| BREDR = 2; |
| }; |
| |
| struct LEData { |
| // The identity address of the peer. If |resolvable| is true, then this is the |
| // resolved private address (and the |irk| is present). |
| string address; |
| AddressType address_type; |
| |
| // The peer’s preferred connection parameters, if known. |
| LEConnectionParameters? connection_parameters; |
| |
| // Known GATT service UUIDs. |
| vector<string> services; |
| |
| // The LE long-term key. Present if the link was encrypted. |
| LTK? ltk; |
| |
| // Identity Resolving Key used to generate and resolve random addresses. |
| Key? irk; |
| |
| // Connection Signature Resolving Key used for data signing without encryption. |
| Key? csrk; |
| }; |
| |
| struct BondingData { |
| // The identifier that uniquely identifies this device. |
| string identifier; |
| |
| // The local Bluetooth identity address that this bond is associated with. |
| string local_address; |
| |
| // The name of the device, if any. |
| string? name; |
| |
| // Bonding data that is present when this device is paired on the LE transport. |
| LEData? le; |
| |
| // Bonding data that is present when this device is paired on the BR/EDR transport. |
| // TODO(armansito): Add BR/EDR data. |
| }; |