mirror of
https://github.com/bluekitchen/btstack.git
synced 2025-03-01 10:13:29 +00:00
sm: allow to override ltk with sm_register_ltk_callback
This commit is contained in:
parent
12d9fd2d3f
commit
b96d60a610
@ -386,6 +386,7 @@ static uint16_t sm_active_connection_handle = HCI_CON_HANDLE_INVALID;
|
||||
// stores oob data in provided 16 byte buffer if not null
|
||||
static int (*sm_get_oob_data)(uint8_t addres_type, bd_addr_t addr, uint8_t * oob_data) = NULL;
|
||||
static int (*sm_get_sc_oob_data)(uint8_t addres_type, bd_addr_t addr, uint8_t * oob_sc_peer_confirm, uint8_t * oob_sc_peer_random);
|
||||
static bool (*sm_get_ltk_callback)(hci_con_handle_t con_handle, uint8_t addres_type, bd_addr_t addr, uint8_t * ltk);
|
||||
|
||||
static void sm_run(void);
|
||||
static void sm_done_for_handle(hci_con_handle_t con_handle);
|
||||
@ -3011,6 +3012,10 @@ static void sm_run(void){
|
||||
return;
|
||||
}
|
||||
case SM_RESPONDER_PH4_SEND_LTK_REPLY: {
|
||||
// allow to override LTK
|
||||
if (sm_get_ltk_callback != NULL){
|
||||
(void)(*sm_get_ltk_callback)(connection->sm_handle, connection->sm_peer_addr_type, connection->sm_peer_address, setup->sm_ltk);
|
||||
}
|
||||
sm_key_t ltk_flipped;
|
||||
reverse_128(setup->sm_ltk, ltk_flipped);
|
||||
connection->sm_engine_state = SM_PH4_W4_CONNECTION_ENCRYPTED;
|
||||
@ -4640,6 +4645,10 @@ void sm_register_sc_oob_data_callback( int (*get_sc_oob_data_callback)(uint8_t a
|
||||
sm_get_sc_oob_data = get_sc_oob_data_callback;
|
||||
}
|
||||
|
||||
void sm_register_ltk_callback( bool (*get_ltk_callback)(hci_con_handle_t con_handle, uint8_t address_type, bd_addr_t addr, uint8_t * ltk)){
|
||||
sm_get_ltk_callback = get_ltk_callback;
|
||||
}
|
||||
|
||||
void sm_add_event_handler(btstack_packet_callback_registration_t * callback_handler){
|
||||
btstack_linked_list_add_tail(&sm_event_handlers, (btstack_linked_item_t*) callback_handler);
|
||||
}
|
||||
|
@ -262,13 +262,18 @@ void sm_allow_ltk_reconstruction_without_le_device_db_entry(int allow);
|
||||
uint8_t sm_generate_sc_oob_data(void (*callback)(const uint8_t * confirm_value, const uint8_t * random_value));
|
||||
|
||||
/**
|
||||
*
|
||||
* @brief Registers OOB Data Callback for LE Secure Conections. The callback should set all arguments and return 1 if OOB data is availble
|
||||
* @note the oob_sc_local_random usually is the random_value returend by sm_generate_sc_oob_data
|
||||
* @param get_oob_data_callback
|
||||
*/
|
||||
void sm_register_sc_oob_data_callback( int (*get_sc_oob_data_callback)(uint8_t address_type, bd_addr_t addr, uint8_t * oob_sc_peer_confirm, uint8_t * oob_sc_peer_random));
|
||||
|
||||
/**
|
||||
* @bbrief Register LTK Callback that allows to provide a custom LTK on re-encryption. The callback returns true if LTK was modified
|
||||
* @param get_ltk_callback
|
||||
*/
|
||||
void sm_register_ltk_callback( bool (*get_ltk_callback)(hci_con_handle_t con_handle, uint8_t address_type, bd_addr_t addr, uint8_t * ltk));
|
||||
|
||||
/* API_END */
|
||||
|
||||
/**
|
||||
|
Loading…
x
Reference in New Issue
Block a user