nrf51822笔记之密码配对过程梳理
配對的觸發有以下幾種情況:
1:主機直接發起。
2:從機發起安全請求,如果之前綁定過,那么主機會直接用用保存的LTK加密鏈路,如果沒有那么主機會發起配對請求。
3:BLE中的有一個安全模式的概念。當某個屬性被設置為需要認證的加密鏈路訪問時,那么當在主機訪問從機的屬性服務器時,如果鏈路是不安全的就會返回錯誤,然后主機會發起配對請求從而實現安全要求。
?
第三種方式:
被動等待主機觸發的方式,首先要將從機屬性設置需要安全的鏈路才能訪問,那么手機在訪問時就會觸發安全參數請求,從機回復安全參數(以及靜態密碼)
1.加密主機訪問鏈路:
? ??BLE_GAP_CONN_SEC_MODE_SET_ENC_WITH_MITM();
或者
? ? BLE_GAP_CONN_SEC_MODE_SET_ENC_NO_MITM();
?
2.主機失敗會觸發安全參數請求:BLE_GAP_EVT_SEC_PARAMS_REQUEST
?
3.從機響應回復請求:? ?err_code = sd_ble_gap_sec_params_reply();
?
?
?
第二種方式:
1、手機連接上后立刻調用安全請求api: ?sd_ble_gap_authenticate。
?
? ? ??? @details In the central role, this function will send an SMP Pairing Request (or an SMP Pairing Failed if rejected),otherwise in the peripheral role, an SMP Security Request will be sent.
? ? ? ? ?? ? ? ? ? ? ? ?err_code=sd_ble_gap_authenticate();
?
2、這樣手機收到后就會發送配對請求 ? ?:BLE_GAP_EVT_SEC_PARAMS_REQUEST
?
3、回復手機的配對請求,設置不綁定。(這樣手機每次收到設備的安全請求就會發配對請求過來從而啟動配對)
? ? ? ? ? ? ? err_code =?sd_ble_gap_sec_params_reply();
4、之配對過程會自動進行。我們只需要根據收到的BLE_GAP_EVT_AUTH_STATUS事件,判斷其狀態是否是成功,來決定配對是不是成功了,從而決定斷不斷開鏈接。
? ? ? ? ?caseBLE_GAP_EVT_AUTH_STATUS:
? ? ? ? ? ? if(p_ble_evt->evt.gap_evt.params.auth_status.auth_status == BLE_GAP_SEC_STATUS_SUCCESS)
? ? ? ? ? ? ?? {
? ? ? ? ? ? ? ? ? ? printf("pair success\r\n");
? ? ? ? ? ? ?? }
? ? ? ? ? ? else
? ? ? ? ? ? ?? {
? ? ? ? ? ? ?? ?????sd_ble_gap_disconnect(m_conn_handle, BLE_HCI_REMOTE_USER_TERMINATED_CONNECTION);
? ? ? ? ? ?????}
?
《新程序員》:云原生和全面數字化實踐50位技術專家共同創作,文字、視頻、音頻交互閱讀總結
以上是生活随笔為你收集整理的nrf51822笔记之密码配对过程梳理的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: BLE-NRF51822教程13-连接时
- 下一篇: BLE-NRF51822教程10—动态密