diff --git a/example/libusb/sm.c b/example/libusb/sm.c index ec4da1940..1a6b8b2b2 100644 --- a/example/libusb/sm.c +++ b/example/libusb/sm.c @@ -295,10 +295,6 @@ static const stk_generation_method_t stk_generation_method[5][5] = { static void sm_run(); -/// CMAC Suppport -static void sm_cmac_handle_encryption_result(sm_key_t data); -static void sm_cmac_handle_aes_engine_ready(); - // Utils static inline void swapX(uint8_t *src, uint8_t *dst, int len){ int i; @@ -439,7 +435,6 @@ static void sm_dm_r_prime(uint8_t r[8], sm_key_t r_prime){ memcpy(&r_prime[8], r, 8); } - // calculate arguments for first AES128 operation in C1 function static void sm_c1_t1(sm_key_t r, uint8_t preq[7], uint8_t pres[7], uint8_t iat, uint8_t rat, sm_key_t t1){ @@ -1588,6 +1583,37 @@ static void sm_event_packet_handler (void * connection, uint8_t packet_type, uin sm_run(); } + +// Security Manager Client API +void sm_register_oob_data_callback( int (*get_oob_data_callback)(uint8_t addres_type, bd_addr_t * addr, uint8_t * oob_data)){ + sm_get_oob_data = get_oob_data_callback; +} + +void sm_register_packet_handler(btstack_packet_handler_t handler){ + sm_client_packet_handler = handler; +} + +void sm_set_accepted_stk_generation_methods(uint8_t accepted_stk_generation_methods){ + sm_accepted_stk_generation_methods = accepted_stk_generation_methods; +} + +void sm_set_encrypted_key_size_range(uint8_t min_size, uint8_t max_size){ + sm_min_encryption_key_size = min_size; + sm_max_encryption_key_size = max_size; +} + +void sm_set_authentication_requirements(uint8_t auth_req){ + sm_s_auth_req = auth_req; +} + +void sm_set_io_capabilities(io_capability_t io_capability){ + sm_s_io_capabilities = io_capability; +} + +void sm_set_request_security(int enable){ + sm_s_request_security = enable; +} + void sm_set_er(sm_key_t er){ memcpy(sm_persistent_er, er, 16); } @@ -1630,22 +1656,8 @@ void sm_init(){ l2cap_register_packet_handler(sm_event_packet_handler); } -// GAP LE API -void gap_random_address_set_mode(gap_random_address_type_t random_address_type){ - gap_random_address_update_stop(); - gap_random_adress_type = random_address_type; - if (random_address_type == GAP_RANDOM_ADDRESS_TYPE_OFF) return; - gap_random_address_update_start(); -} - -void gap_random_address_set_update_period(int period_ms){ - gap_random_adress_update_period = period_ms; - if (gap_random_adress_type == GAP_RANDOM_ADDRESS_TYPE_OFF) return; - gap_random_address_update_stop(); - gap_random_address_update_start(); -} - -int sm_get_connection(uint8_t addr_type, bd_addr_t address){ +// GAP Bonding API +static int sm_get_connection(uint8_t addr_type, bd_addr_t address){ // TODO compare to current connection return 1; } @@ -1681,32 +1693,17 @@ void sm_passkey_input(uint8_t addr_type, bd_addr_t address, uint32_t passkey){ sm_run(); } -// Security Manager Client API -void sm_register_oob_data_callback( int (*get_oob_data_callback)(uint8_t addres_type, bd_addr_t * addr, uint8_t * oob_data)){ - sm_get_oob_data = get_oob_data_callback; +// GAP LE API +void gap_random_address_set_mode(gap_random_address_type_t random_address_type){ + gap_random_address_update_stop(); + gap_random_adress_type = random_address_type; + if (random_address_type == GAP_RANDOM_ADDRESS_TYPE_OFF) return; + gap_random_address_update_start(); } -void sm_register_packet_handler(btstack_packet_handler_t handler){ - sm_client_packet_handler = handler; -} - -void sm_set_accepted_stk_generation_methods(uint8_t accepted_stk_generation_methods){ - sm_accepted_stk_generation_methods = accepted_stk_generation_methods; -} - -void sm_set_encrypted_key_size_range(uint8_t min_size, uint8_t max_size){ - sm_min_encryption_key_size = min_size; - sm_max_encryption_key_size = max_size; -} - -void sm_set_authentication_requirements(uint8_t auth_req){ - sm_s_auth_req = auth_req; -} - -void sm_set_io_capabilities(io_capability_t io_capability){ - sm_s_io_capabilities = io_capability; -} - -void sm_set_request_security(int enable){ - sm_s_request_security = enable; -} +void gap_random_address_set_update_period(int period_ms){ + gap_random_adress_update_period = period_ms; + if (gap_random_adress_type == GAP_RANDOM_ADDRESS_TYPE_OFF) return; + gap_random_address_update_stop(); + gap_random_address_update_start(); +} \ No newline at end of file diff --git a/example/libusb/sm.h b/example/libusb/sm.h index cccca6fb2..f1db6f161 100644 --- a/example/libusb/sm.h +++ b/example/libusb/sm.h @@ -124,6 +124,8 @@ typedef struct sm_event_identity_resolving { // void sm_init(); +void sm_set_er(sm_key_t er); +void sm_set_ir(sm_key_t ir); void sm_register_oob_data_callback( int (*get_oob_data_callback)(uint8_t addres_type, bd_addr_t * addr, uint8_t * oob_data)); void sm_register_packet_handler(btstack_packet_handler_t handler); @@ -133,6 +135,10 @@ void sm_set_authentication_requirements(uint8_t auth_req); void sm_set_io_capabilities(io_capability_t io_capability); void sm_set_request_security(int enable); +void sm_bonding_decline(uint8_t addr_type, bd_addr_t address); +void sm_just_works_confirm(uint8_t addr_type, bd_addr_t address); +void sm_passkey_input(uint8_t addr_type, bd_addr_t address, uint32_t passkey); + // Support for signed writes int sm_cmac_ready(); void sm_cmac_start(sm_key_t k, uint16_t message_len, uint8_t * message, void (*done_handler)(uint8_t hash[8]));