From fbd906e05f5d65e7aaadfc823fbecc0fbec8f107 Mon Sep 17 00:00:00 2001 From: Prasad Alatkar Date: Thu, 1 Apr 2021 17:26:30 +0800 Subject: [PATCH] BLE provisioning: Add secure connection pairing with just works for NimBLE --- .../protocomm/src/transports/protocomm_nimble.c | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) diff --git a/components/protocomm/src/transports/protocomm_nimble.c b/components/protocomm/src/transports/protocomm_nimble.c index 9517f92a40..199127d81c 100644 --- a/components/protocomm/src/transports/protocomm_nimble.c +++ b/components/protocomm/src/transports/protocomm_nimble.c @@ -483,6 +483,16 @@ static int simple_ble_start(const simple_ble_cfg_t *cfg) ble_hs_cfg.reset_cb = simple_ble_on_reset; ble_hs_cfg.sync_cb = simple_ble_on_sync; ble_hs_cfg.gatts_register_cb = gatt_svr_register_cb; + ble_hs_cfg.store_status_cb = ble_store_util_status_rr; + + /* Initialize security manager configuration in NimBLE host */ + ble_hs_cfg.sm_io_cap = BLE_SM_IO_CAP_NO_IO; /* Just Works */ + ble_hs_cfg.sm_bonding = 1; /* Enable bonding inline with bluedroid */ + ble_hs_cfg.sm_mitm = 1; + ble_hs_cfg.sm_sc = 1; /* Enable secure connection by default */ + /* Distribute LTK and IRK */ + ble_hs_cfg.sm_our_key_dist = BLE_SM_PAIR_KEY_DIST_ENC | BLE_SM_PAIR_KEY_DIST_ID; + ble_hs_cfg.sm_their_key_dist = BLE_SM_PAIR_KEY_DIST_ENC | BLE_SM_PAIR_KEY_DIST_ID; rc = gatt_svr_init(cfg); if (rc != 0) { @@ -614,7 +624,10 @@ ble_gatt_add_characteristics(struct ble_gatt_chr_def *characteristics, int idx) memcpy(temp_uuid128_name.value, ble_uuid_base, BLE_UUID128_VAL_LENGTH); memcpy(&temp_uuid128_name.value[12], &protoble_internal->g_nu_lookup[idx].uuid, 2); - (characteristics + idx)->flags = BLE_GATT_CHR_F_READ | BLE_GATT_CHR_F_WRITE; + (characteristics + idx)->flags = BLE_GATT_CHR_F_READ | + BLE_GATT_CHR_F_WRITE | + BLE_GATT_CHR_F_READ_ENC | + BLE_GATT_CHR_F_WRITE_ENC; (characteristics + idx)->access_cb = gatt_svr_chr_access; /* Out of 128 bit UUID, 16 bits from g_nu_lookup table. Currently