mirror of
https://github.com/bluekitchen/btstack.git
synced 2025-02-04 06:39:53 +00:00
sm: verify LTK before encrypting connection when ENABLE_LE_CENTRAL_AUTO_ENCRYPTION is defined and IRK lookup succeeds
This commit is contained in:
parent
d61023b23c
commit
f53ec64947
15
src/ble/sm.c
15
src/ble/sm.c
@ -4102,17 +4102,20 @@ void sm_request_pairing(hci_con_handle_t con_handle){
|
||||
// used as a trigger to start central/master/initiator security procedures
|
||||
if (sm_conn->sm_engine_state == SM_INITIATOR_CONNECTED){
|
||||
uint8_t ltk[16];
|
||||
bool have_ltk;
|
||||
switch (sm_conn->sm_irk_lookup_state){
|
||||
case IRK_LOOKUP_SUCCEEDED:
|
||||
#ifndef ENABLE_LE_CENTRAL_AUTO_ENCRYPTION
|
||||
le_device_db_encryption_get(sm_conn->sm_le_db_index, NULL, NULL, ltk, NULL, NULL, NULL, NULL);
|
||||
log_info("have ltk %u", !sm_is_null_key(ltk));
|
||||
// trigger 'pairing complete' event on encryption change
|
||||
sm_conn->sm_pairing_requested = 1;
|
||||
sm_conn->sm_engine_state = SM_INITIATOR_PH0_HAS_LTK;
|
||||
break;
|
||||
have_ltk = !sm_is_null_key(ltk);
|
||||
log_info("have ltk %u", have_ltk);
|
||||
if (have_ltk){
|
||||
sm_conn->sm_pairing_requested = 1;
|
||||
sm_conn->sm_engine_state = SM_INITIATOR_PH0_HAS_LTK;
|
||||
break;
|
||||
}
|
||||
#endif
|
||||
/* explicit fall-through */
|
||||
/* explicit fall-through */
|
||||
|
||||
case IRK_LOOKUP_FAILED:
|
||||
sm_conn->sm_engine_state = SM_INITIATOR_PH1_W2_SEND_PAIRING_REQUEST;
|
||||
|
Loading…
x
Reference in New Issue
Block a user