Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 8c09989e authored by TreeHugger Robot's avatar TreeHugger Robot Committed by Android (Google) Code Review
Browse files

Merge changes from topic "bluetooth_oob_api" into sc-dev

* changes:
  OOB: Replace 'memcpy' with assignments
  OOB: Cancel advertiser and replace
  OOB: Start advertising when OOB data is generated.
  OOB: Connector; Set name of remote from OOB data
  OOB: Store keys and data generated for local OOB use.
  OOB: Utilize SMP state machine to generate the OOB data.
  OOB: Rework create bond out of band flow to not use btif_dm_cb_create_bond
parents 5e6d55a1 44154777
Loading
Loading
Loading
Loading
+8 −0
Original line number Diff line number Diff line
@@ -3447,6 +3447,14 @@ static uint8_t bta_dm_ble_smp_cback(tBTM_LE_EVT event, const RawAddress& bda,
      bta_dm_cb.p_sec_cback(BTA_DM_BLE_SC_OOB_REQ_EVT, &sec_event);
      break;

    case BTM_LE_SC_LOC_OOB_EVT:
      tBTA_DM_LOC_OOB_DATA local_oob_data;
      local_oob_data.local_oob_c = p_data->local_oob_data.commitment;
      local_oob_data.local_oob_r = p_data->local_oob_data.randomizer;
      sec_event.local_oob_data = local_oob_data;
      bta_dm_cb.p_sec_cback(BTA_DM_BLE_SC_CR_LOC_OOB_EVT, &sec_event);
      break;

    case BTM_LE_KEY_EVT:
      sec_event.ble_key.bd_addr = bda;
      sec_event.ble_key.key_type = p_data->key.key_type;
+8 −0
Original line number Diff line number Diff line
@@ -216,6 +216,8 @@ typedef uint8_t tBTA_DM_BLE_RSSI_ALERT_TYPE;
#define BTA_DM_ENER_INFO_READ 28 /* Energy info read */
#define BTA_DM_BLE_SC_OOB_REQ_EVT 29 /* SMP SC OOB request event */
#define BTA_DM_BLE_CONSENT_REQ_EVT 30 /* SMP consent request event */
#define BTA_DM_BLE_SC_CR_LOC_OOB_EVT \
  31 /* SMP SC Create Local OOB request event */
typedef uint8_t tBTA_DM_SEC_EVT;

/* Structure associated with BTA_DM_PIN_REQ_EVT */
@@ -363,6 +365,11 @@ typedef struct {
  tBTA_STATUS result; /* true of bond cancel succeeded, false if failed. */
} tBTA_DM_BOND_CANCEL_CMPL;

typedef struct {
  Octet16 local_oob_c; /* Local OOB Data Confirmation/Commitment */
  Octet16 local_oob_r; /* Local OOB Data Randomizer */
} tBTA_DM_LOC_OOB_DATA;

/* Union of all security callback structures */
typedef union {
  tBTA_DM_PIN_REQ pin_req;        /* PIN request. */
@@ -378,6 +385,7 @@ typedef union {
  tBTA_DM_BLE_KEY ble_key;            /* BLE SMP keys used when pairing */
  tBTA_BLE_LOCAL_ID_KEYS ble_id_keys; /* IR event */
  Octet16 ble_er;                     /* ER event data */
  tBTA_DM_LOC_OOB_DATA local_oob_data; /* Local OOB data generated by us */
} tBTA_DM_SEC;

/* Security callback */
+2 −1
Original line number Diff line number Diff line
@@ -208,7 +208,8 @@ void invoke_ssp_request_cb(RawAddress bd_addr, bt_bdname_t bd_name,
                           uint32_t cod, bt_ssp_variant_t pairing_variant,
                           uint32_t pass_key);
void invoke_oob_data_request_cb(tBT_TRANSPORT t, bool valid, Octet16 c,
                                Octet16 r, RawAddress raw_address);
                                Octet16 r, RawAddress raw_address,
                                uint8_t address_type);
void invoke_bond_state_changed_cb(bt_status_t status, RawAddress bd_addr,
                                  bt_bond_state_t state);
void invoke_acl_state_changed_cb(bt_status_t status, RawAddress bd_addr,
+2 −0
Original line number Diff line number Diff line
@@ -27,6 +27,8 @@
#ifndef BTIF_GATT_H
#define BTIF_GATT_H

#include "include/hardware/bt_gatt.h"

extern const btgatt_client_interface_t btgattClientInterface;
extern const btgatt_server_interface_t btgattServerInterface;

+3 −3
Original line number Diff line number Diff line
@@ -739,7 +739,8 @@ void invoke_ssp_request_cb(RawAddress bd_addr, bt_bdname_t bd_name,
}

void invoke_oob_data_request_cb(tBT_TRANSPORT t, bool valid, Octet16 c,
                                Octet16 r, RawAddress raw_address) {
                                Octet16 r, RawAddress raw_address,
                                uint8_t address_type) {
  LOG_INFO("%s", __func__);
  bt_oob_data_t oob_data = {};

@@ -749,8 +750,7 @@ void invoke_oob_data_request_cb(tBT_TRANSPORT t, bool valid, Octet16 c,
    oob_data.address[i] = raw_address.address[j];
    j--;
  }
  // Set type always public
  oob_data.address[6] = 0;
  oob_data.address[6] = address_type;

  // Each value (for C and R) is 16 octets in length
  bool c_empty = true;
Loading