在一些特定物联网产品有时会遇到对BLE的GATT访问进行加密先来看下BLE加密连接流程图扫描连接-安全请求-配对处理-生成加密key-链路加密完成链路加密连接实例项目开发时候需要几个步骤来完成1BLE组件对应的SMP项设置开启加密配对加密连接保存bond key到NVS2在这里使用:Just work bond。ble host config:配置为:BLE_HS_IO_NO_INPUT_OUTPUT无需输入pair keynimble_host_config_initble_hs_cfg.sm_io_cap BLE_HS_IO_NO_INPUT_OUTPUT;//无输入无输出设备ble_hs_cfg.sm_bonding 1;ble_hs_cfg.sm_mitm 0;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;3GATT层访问安全设定,读写需加密ENCGATT的读写权限加密设定为BLE_GATT_CHR_F_READ_ENC和BLE_GATT_CHR_F_WRITE_ENC* GATT services table */staticconststructble_gatt_svc_defgatt_svr_svcs[] {/* Heart rate service */{.type BLE_GATT_SVC_TYPE_PRIMARY,.uuid heart_rate_svc_uuid.u,.characteristics (structble_gatt_chr_def[]){{/* Heart rate characteristic */.uuid heart_rate_chr_uuid.u,.access_cb heart_rate_chr_access,.flags BLE_GATT_CHR_F_READ | BLE_GATT_CHR_F_INDICATE |BLE_GATT_CHR_F_READ_ENC,.val_handle heart_rate_chr_val_handle},{0,/* No more characteristics in this service. */}}},/* Automation IO service */{.type BLE_GATT_SVC_TYPE_PRIMARY,.uuid auto_io_svc_uuid.u,.characteristics (structble_gatt_chr_def[]){/* LED characteristic */{.uuid led_chr_uuid.u,.access_cb led_chr_access,.flags BLE_GATT_CHR_F_WRITE | BLE_GATT_CHR_F_WRITE_ENC,.val_handle led_chr_val_handle},{0}},}{0,/* No more services. */},};
ESP32 C3开发实战 -7(BLE加密连接Bond)
在一些特定物联网产品有时会遇到对BLE的GATT访问进行加密先来看下BLE加密连接流程图扫描连接-安全请求-配对处理-生成加密key-链路加密完成链路加密连接实例项目开发时候需要几个步骤来完成1BLE组件对应的SMP项设置开启加密配对加密连接保存bond key到NVS2在这里使用:Just work bond。ble host config:配置为:BLE_HS_IO_NO_INPUT_OUTPUT无需输入pair keynimble_host_config_initble_hs_cfg.sm_io_cap BLE_HS_IO_NO_INPUT_OUTPUT;//无输入无输出设备ble_hs_cfg.sm_bonding 1;ble_hs_cfg.sm_mitm 0;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;3GATT层访问安全设定,读写需加密ENCGATT的读写权限加密设定为BLE_GATT_CHR_F_READ_ENC和BLE_GATT_CHR_F_WRITE_ENC* GATT services table */staticconststructble_gatt_svc_defgatt_svr_svcs[] {/* Heart rate service */{.type BLE_GATT_SVC_TYPE_PRIMARY,.uuid heart_rate_svc_uuid.u,.characteristics (structble_gatt_chr_def[]){{/* Heart rate characteristic */.uuid heart_rate_chr_uuid.u,.access_cb heart_rate_chr_access,.flags BLE_GATT_CHR_F_READ | BLE_GATT_CHR_F_INDICATE |BLE_GATT_CHR_F_READ_ENC,.val_handle heart_rate_chr_val_handle},{0,/* No more characteristics in this service. */}}},/* Automation IO service */{.type BLE_GATT_SVC_TYPE_PRIMARY,.uuid auto_io_svc_uuid.u,.characteristics (structble_gatt_chr_def[]){/* LED characteristic */{.uuid led_chr_uuid.u,.access_cb led_chr_access,.flags BLE_GATT_CHR_F_WRITE | BLE_GATT_CHR_F_WRITE_ENC,.val_handle led_chr_val_handle},{0}},}{0,/* No more services. */},};