CN / EN
CN / EN

写技术文章

BLE生成Link key使用方法说明(适用于GR5525/GR5526/GR533x)

panda

汇顶员工
2024-01-15 10:42:18




实现版本

  • SDK版:主⼲分⽀

使⽤⽅法说明

  1. 请确保应⽤使⽤SC安全配对⽅法
  2. 根据不同的版本选择适合的使⽤⽅式
  3. link key 删除⽅法: 去配对流程由应⽤触发,在触发去配对流程时,由应⽤同时删除link key

应⽤层SC安全配对流程配置

  • 在 custom_config.h 中使能 CFG_BT_BREDR
    #ifndef CFG_BT_BREDR
    #define CFG_BT_BREDR 1
    #endif
  • 使能配对
    ble_gap_pair_enable(true);
  • 安全参数配置,IO能⼒推荐使⽤IO_NO_INPUT_NO_OUTPUT
    ble_sec_param_t sec_param =
    {
        .level = SEC_MODE1_LEVEL2,
        .io_cap = IO_NO_INPUT_NO_OUTPUT,
        .oob = false,
        .auth = AUTH_BOND | AUTH_SEC_CON,
        .key_size = 16,
        .ikey_dist = 15,
        .rkey_dist = 15,
    };
    error_code = ble_sec_params_set(&sec_param);
  • 在配对完成后,可通过配对完成事件处理函数中app_sec_rcv_enc_ind_handler,调⽤获取linkkey的⽅法
  • 配对完成后,上报 BLE_SEC_EVT_LINK_ENCRYPTED 事件
    void ble_sec_evt_handler(const ble_evt_t *p_evt)
    {
        switch(p_evt->evt_id)
        {
            ......
            case BLE_SEC_EVT_LINK_ENC_REQUEST:
                app_sec_rcv_enc_req_handler(p_evt->evt.sec_evt.index,(ble_sec_evt_enc_req_t*)&(p_evt->evt.sec_evt.params.enc_req));
                break;
            case BLE_SEC_EVT_LINK_ENCRYPTED:
                app_sec_rcv_enc_ind_handler(p_evt->evt.sec_evt.index,p_evt->evt_status,p_evt->evt.sec_evt.params.enc_ind.auth);
                break;
            ......
        }
    }
  • 配对回调函数app_sec_rcv_enc_ind_handler 中通过ble_sec_get_link_key函数获取linkkey


    void app_sec_rcv_enc_ind_handler(uint16_t conn_idx, uint8_t evt_status, uint8_t auth)
    {
        if ((evt_status == BLE_SUCCESS) && (auth & BLE_SEC_AUTH_BOND))
        {
            uint8_t peer_addr[6] = {0};
            uint8_t link_key[16] = {0};
            ble_sec_get_link_key(conn_idx, peer_addr, link_key);
        }
    }
    extern void ble_sec_get_link_key(uint8_t idx, uint8_t* peer_addr, uint8_t* link_key);
    注: 1. peer_addr :⻓度为6; link_key:⻓度为16

link key的使⽤

  • 应⽤拿到远端地址和link key后可通过UART接⼝或者其他通信⽅式通知第三⽅BT芯⽚写⼊信息,在BT回连时不会使⽤配对流程,从⽽达到⼀次配对的⽬的。




2收藏

2赞成

您的评论
我们时刻倾听您的声音
联系销售

扫描关注公众号

打开微信,使用“扫一扫”即可关注