mirror of
https://github.com/bluekitchen/btstack.git
synced 2025-02-04 15:39:59 +00:00
sm: use SM_SC_ for SC states
This commit is contained in:
parent
5a293e6e96
commit
c6b7cbd9f9
77
src/ble/sm.c
77
src/ble/sm.c
@ -822,6 +822,7 @@ static void sm_setup_tk(void){
|
|||||||
const stk_generation_method_t (*generation_method)[5] = stk_generation_method;
|
const stk_generation_method_t (*generation_method)[5] = stk_generation_method;
|
||||||
|
|
||||||
#ifdef ENABLE_LE_SECURE_CONNECTIONS
|
#ifdef ENABLE_LE_SECURE_CONNECTIONS
|
||||||
|
// table not define by default
|
||||||
if (setup->sm_use_secure_connections){
|
if (setup->sm_use_secure_connections){
|
||||||
generation_method = stk_generation_method_with_secure_connection;
|
generation_method = stk_generation_method_with_secure_connection;
|
||||||
}
|
}
|
||||||
@ -1630,7 +1631,7 @@ static void sm_run(void){
|
|||||||
return;
|
return;
|
||||||
|
|
||||||
#ifdef ENABLE_LE_SECURE_CONNECTIONS
|
#ifdef ENABLE_LE_SECURE_CONNECTIONS
|
||||||
case SM_PH2_SEND_PUBLIC_KEY_COMMAND: {
|
case SM_SC_SEND_PUBLIC_KEY_COMMAND: {
|
||||||
uint8_t buffer[65];
|
uint8_t buffer[65];
|
||||||
buffer[0] = SM_CODE_PAIRING_PUBLIC_KEY;
|
buffer[0] = SM_CODE_PAIRING_PUBLIC_KEY;
|
||||||
//
|
//
|
||||||
@ -1655,9 +1656,9 @@ static void sm_run(void){
|
|||||||
case JUST_WORKS:
|
case JUST_WORKS:
|
||||||
case NK_BOTH_INPUT:
|
case NK_BOTH_INPUT:
|
||||||
if (connection->sm_role){
|
if (connection->sm_role){
|
||||||
connection->sm_engine_state = SM_PH2_SEND_CONFIRMATION;
|
connection->sm_engine_state = SM_SC_SEND_CONFIRMATION;
|
||||||
} else {
|
} else {
|
||||||
connection->sm_engine_state = SM_RESPONDER_PH2_W4_PUBLIC_KEY_COMMAND;
|
connection->sm_engine_state = SM_SC_W4_PUBLIC_KEY_COMMAND;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case PK_INIT_INPUT:
|
case PK_INIT_INPUT:
|
||||||
@ -1670,10 +1671,10 @@ static void sm_run(void){
|
|||||||
setup->sm_passkey_bit = 0;
|
setup->sm_passkey_bit = 0;
|
||||||
if (connection->sm_role){
|
if (connection->sm_role){
|
||||||
// responder
|
// responder
|
||||||
connection->sm_engine_state = SM_PH2_W4_CONFIRMATION;
|
connection->sm_engine_state = SM_SC_W4_CONFIRMATION;
|
||||||
} else {
|
} else {
|
||||||
// initiator
|
// initiator
|
||||||
connection->sm_engine_state = SM_RESPONDER_PH2_W4_PUBLIC_KEY_COMMAND;
|
connection->sm_engine_state = SM_SC_W4_PUBLIC_KEY_COMMAND;
|
||||||
}
|
}
|
||||||
sm_trigger_user_response(connection);
|
sm_trigger_user_response(connection);
|
||||||
break;
|
break;
|
||||||
@ -1686,7 +1687,7 @@ static void sm_run(void){
|
|||||||
sm_timeout_reset(connection);
|
sm_timeout_reset(connection);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
case SM_PH2_SEND_CONFIRMATION: {
|
case SM_SC_SEND_CONFIRMATION: {
|
||||||
uint8_t buffer[17];
|
uint8_t buffer[17];
|
||||||
buffer[0] = SM_CODE_PAIRING_CONFIRM;
|
buffer[0] = SM_CODE_PAIRING_CONFIRM;
|
||||||
#ifdef USE_MBEDTLS_FOR_ECDH
|
#ifdef USE_MBEDTLS_FOR_ECDH
|
||||||
@ -1706,15 +1707,15 @@ static void sm_run(void){
|
|||||||
reverse_128(confirm_value, &buffer[1]);
|
reverse_128(confirm_value, &buffer[1]);
|
||||||
#endif
|
#endif
|
||||||
if (connection->sm_role){
|
if (connection->sm_role){
|
||||||
connection->sm_engine_state = SM_PH2_W4_PAIRING_RANDOM;
|
connection->sm_engine_state = SM_SC_W4_PAIRING_RANDOM;
|
||||||
} else {
|
} else {
|
||||||
connection->sm_engine_state = SM_PH2_W4_CONFIRMATION;
|
connection->sm_engine_state = SM_SC_W4_CONFIRMATION;
|
||||||
}
|
}
|
||||||
l2cap_send_connectionless(connection->sm_handle, L2CAP_CID_SECURITY_MANAGER_PROTOCOL, (uint8_t*) buffer, sizeof(buffer));
|
l2cap_send_connectionless(connection->sm_handle, L2CAP_CID_SECURITY_MANAGER_PROTOCOL, (uint8_t*) buffer, sizeof(buffer));
|
||||||
sm_timeout_reset(connection);
|
sm_timeout_reset(connection);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
case SM_PH2_SEND_PAIRING_RANDOM_SC: {
|
case SM_SC_SEND_PAIRING_RANDOM: {
|
||||||
uint8_t buffer[17];
|
uint8_t buffer[17];
|
||||||
buffer[0] = SM_CODE_PAIRING_RANDOM;
|
buffer[0] = SM_CODE_PAIRING_RANDOM;
|
||||||
reverse_128(setup->sm_local_nonce, &buffer[1]);
|
reverse_128(setup->sm_local_nonce, &buffer[1]);
|
||||||
@ -1722,15 +1723,15 @@ static void sm_run(void){
|
|||||||
if (setup->sm_stk_generation_method != JUST_WORKS && setup->sm_stk_generation_method != NK_BOTH_INPUT && setup->sm_passkey_bit < 20){
|
if (setup->sm_stk_generation_method != JUST_WORKS && setup->sm_stk_generation_method != NK_BOTH_INPUT && setup->sm_passkey_bit < 20){
|
||||||
if (connection->sm_role){
|
if (connection->sm_role){
|
||||||
// responder
|
// responder
|
||||||
connection->sm_engine_state = SM_PH2_W4_CONFIRMATION;
|
connection->sm_engine_state = SM_SC_W4_CONFIRMATION;
|
||||||
} else {
|
} else {
|
||||||
// initiator
|
// initiator
|
||||||
connection->sm_engine_state = SM_PH2_W4_PAIRING_RANDOM;
|
connection->sm_engine_state = SM_SC_W4_PAIRING_RANDOM;
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
if (connection->sm_role){
|
if (connection->sm_role){
|
||||||
// responder
|
// responder
|
||||||
connection->sm_engine_state = SM_PH2_W4_DHKEY_CHECK_COMMAND;
|
connection->sm_engine_state = SM_SC_W4_DHKEY_CHECK_COMMAND;
|
||||||
if (setup->sm_stk_generation_method == NK_BOTH_INPUT){
|
if (setup->sm_stk_generation_method == NK_BOTH_INPUT){
|
||||||
// calc Vb if numeric comparison
|
// calc Vb if numeric comparison
|
||||||
// TODO: use AES Engine to calculate g2
|
// TODO: use AES Engine to calculate g2
|
||||||
@ -1742,14 +1743,14 @@ static void sm_run(void){
|
|||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
// initiator
|
// initiator
|
||||||
connection->sm_engine_state = SM_PH2_W4_PAIRING_RANDOM;
|
connection->sm_engine_state = SM_SC_W4_PAIRING_RANDOM;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
l2cap_send_connectionless(connection->sm_handle, L2CAP_CID_SECURITY_MANAGER_PROTOCOL, (uint8_t*) buffer, sizeof(buffer));
|
l2cap_send_connectionless(connection->sm_handle, L2CAP_CID_SECURITY_MANAGER_PROTOCOL, (uint8_t*) buffer, sizeof(buffer));
|
||||||
sm_timeout_reset(connection);
|
sm_timeout_reset(connection);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
case SM_PH2_SEND_DHKEY_CHECK_COMMAND: {
|
case SM_SC_SEND_DHKEY_CHECK_COMMAND: {
|
||||||
|
|
||||||
uint8_t buffer[17];
|
uint8_t buffer[17];
|
||||||
buffer[0] = SM_CODE_PAIRING_DHKEY_CHECK;
|
buffer[0] = SM_CODE_PAIRING_DHKEY_CHECK;
|
||||||
@ -1813,9 +1814,9 @@ static void sm_run(void){
|
|||||||
#endif
|
#endif
|
||||||
reverse_128(setup->sm_local_dhkey_check, &buffer[1]);
|
reverse_128(setup->sm_local_dhkey_check, &buffer[1]);
|
||||||
if (connection->sm_role){
|
if (connection->sm_role){
|
||||||
connection->sm_engine_state = SM_RESPONDER_PH2_W4_LTK_REQUEST_SC;
|
connection->sm_engine_state = SM_SC_W4_LTK_REQUEST_SC;
|
||||||
} else {
|
} else {
|
||||||
connection->sm_engine_state = SM_PH2_W4_DHKEY_CHECK_COMMAND;
|
connection->sm_engine_state = SM_SC_W4_DHKEY_CHECK_COMMAND;
|
||||||
}
|
}
|
||||||
l2cap_send_connectionless(connection->sm_handle, L2CAP_CID_SECURITY_MANAGER_PROTOCOL, (uint8_t*) buffer, sizeof(buffer));
|
l2cap_send_connectionless(connection->sm_handle, L2CAP_CID_SECURITY_MANAGER_PROTOCOL, (uint8_t*) buffer, sizeof(buffer));
|
||||||
sm_timeout_reset(connection);
|
sm_timeout_reset(connection);
|
||||||
@ -1831,7 +1832,7 @@ static void sm_run(void){
|
|||||||
connection->sm_engine_state = SM_RESPONDER_PH1_W4_PAIRING_CONFIRM;
|
connection->sm_engine_state = SM_RESPONDER_PH1_W4_PAIRING_CONFIRM;
|
||||||
#ifdef ENABLE_LE_SECURE_CONNECTIONS
|
#ifdef ENABLE_LE_SECURE_CONNECTIONS
|
||||||
if (setup->sm_use_secure_connections){
|
if (setup->sm_use_secure_connections){
|
||||||
connection->sm_engine_state = SM_RESPONDER_PH2_W4_PUBLIC_KEY_COMMAND;
|
connection->sm_engine_state = SM_SC_W4_PUBLIC_KEY_COMMAND;
|
||||||
// skip LTK/EDIV for SC
|
// skip LTK/EDIV for SC
|
||||||
key_distribution_flags &= ~SM_KEYDIST_ENC_KEY;
|
key_distribution_flags &= ~SM_KEYDIST_ENC_KEY;
|
||||||
}
|
}
|
||||||
@ -2388,7 +2389,7 @@ static void sm_event_packet_handler (uint8_t packet_type, uint16_t channel, uint
|
|||||||
sm_conn->sm_engine_state = SM_PH2_CALC_STK;
|
sm_conn->sm_engine_state = SM_PH2_CALC_STK;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
if (sm_conn->sm_engine_state == SM_RESPONDER_PH2_W4_LTK_REQUEST_SC){
|
if (sm_conn->sm_engine_state == SM_SC_W4_LTK_REQUEST_SC){
|
||||||
sm_conn->sm_engine_state = SM_RESPONDER_PH2_SEND_LTK_REPLY;
|
sm_conn->sm_engine_state = SM_RESPONDER_PH2_SEND_LTK_REPLY;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
@ -2622,10 +2623,10 @@ static void sm_pdu_handler(uint8_t packet_type, hci_con_handle_t con_handle, uin
|
|||||||
sm_conn->sm_engine_state = SM_PH1_W4_USER_RESPONSE;
|
sm_conn->sm_engine_state = SM_PH1_W4_USER_RESPONSE;
|
||||||
sm_trigger_user_response(sm_conn);
|
sm_trigger_user_response(sm_conn);
|
||||||
if (setup->sm_user_response == SM_USER_RESPONSE_IDLE){
|
if (setup->sm_user_response == SM_USER_RESPONSE_IDLE){
|
||||||
sm_conn->sm_engine_state = SM_PH2_SEND_PUBLIC_KEY_COMMAND;
|
sm_conn->sm_engine_state = SM_SC_SEND_PUBLIC_KEY_COMMAND;
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
sm_conn->sm_engine_state = SM_PH2_SEND_PUBLIC_KEY_COMMAND;
|
sm_conn->sm_engine_state = SM_SC_SEND_PUBLIC_KEY_COMMAND;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
@ -2680,7 +2681,7 @@ static void sm_pdu_handler(uint8_t packet_type, hci_con_handle_t con_handle, uin
|
|||||||
break;
|
break;
|
||||||
|
|
||||||
#ifdef ENABLE_LE_SECURE_CONNECTIONS
|
#ifdef ENABLE_LE_SECURE_CONNECTIONS
|
||||||
case SM_RESPONDER_PH2_W4_PUBLIC_KEY_COMMAND:
|
case SM_SC_W4_PUBLIC_KEY_COMMAND:
|
||||||
if (packet[0] != SM_CODE_PAIRING_PUBLIC_KEY){
|
if (packet[0] != SM_CODE_PAIRING_PUBLIC_KEY){
|
||||||
sm_pdu_received_in_wrong_state(sm_conn);
|
sm_pdu_received_in_wrong_state(sm_conn);
|
||||||
break;
|
break;
|
||||||
@ -2711,7 +2712,7 @@ static void sm_pdu_handler(uint8_t packet_type, hci_con_handle_t con_handle, uin
|
|||||||
#endif
|
#endif
|
||||||
if (sm_conn->sm_role){
|
if (sm_conn->sm_role){
|
||||||
// responder
|
// responder
|
||||||
sm_conn->sm_engine_state = SM_PH2_SEND_PUBLIC_KEY_COMMAND;
|
sm_conn->sm_engine_state = SM_SC_SEND_PUBLIC_KEY_COMMAND;
|
||||||
} else {
|
} else {
|
||||||
// initiator
|
// initiator
|
||||||
// stk generation method
|
// stk generation method
|
||||||
@ -2719,12 +2720,12 @@ static void sm_pdu_handler(uint8_t packet_type, hci_con_handle_t con_handle, uin
|
|||||||
switch (setup->sm_stk_generation_method){
|
switch (setup->sm_stk_generation_method){
|
||||||
case JUST_WORKS:
|
case JUST_WORKS:
|
||||||
case NK_BOTH_INPUT:
|
case NK_BOTH_INPUT:
|
||||||
sm_conn->sm_engine_state = SM_PH2_W4_CONFIRMATION;
|
sm_conn->sm_engine_state = SM_SC_W4_CONFIRMATION;
|
||||||
break;
|
break;
|
||||||
case PK_INIT_INPUT:
|
case PK_INIT_INPUT:
|
||||||
case PK_RESP_INPUT:
|
case PK_RESP_INPUT:
|
||||||
case OK_BOTH_INPUT:
|
case OK_BOTH_INPUT:
|
||||||
sm_conn->sm_engine_state = SM_PH2_SEND_CONFIRMATION;
|
sm_conn->sm_engine_state = SM_SC_SEND_CONFIRMATION;
|
||||||
break;
|
break;
|
||||||
case OOB:
|
case OOB:
|
||||||
// TODO: implement SC OOB
|
// TODO: implement SC OOB
|
||||||
@ -2733,7 +2734,7 @@ static void sm_pdu_handler(uint8_t packet_type, hci_con_handle_t con_handle, uin
|
|||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case SM_PH2_W4_CONFIRMATION:
|
case SM_SC_W4_CONFIRMATION:
|
||||||
if (packet[0] != SM_CODE_PAIRING_CONFIRM){
|
if (packet[0] != SM_CODE_PAIRING_CONFIRM){
|
||||||
sm_pdu_received_in_wrong_state(sm_conn);
|
sm_pdu_received_in_wrong_state(sm_conn);
|
||||||
break;
|
break;
|
||||||
@ -2743,14 +2744,14 @@ static void sm_pdu_handler(uint8_t packet_type, hci_con_handle_t con_handle, uin
|
|||||||
|
|
||||||
if (sm_conn->sm_role){
|
if (sm_conn->sm_role){
|
||||||
// responder
|
// responder
|
||||||
sm_conn->sm_engine_state = SM_PH2_SEND_CONFIRMATION;
|
sm_conn->sm_engine_state = SM_SC_SEND_CONFIRMATION;
|
||||||
} else {
|
} else {
|
||||||
// initiator
|
// initiator
|
||||||
sm_conn->sm_engine_state = SM_PH2_SEND_PAIRING_RANDOM_SC;
|
sm_conn->sm_engine_state = SM_SC_SEND_PAIRING_RANDOM;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case SM_PH2_W4_PAIRING_RANDOM:
|
case SM_SC_W4_PAIRING_RANDOM:
|
||||||
if (packet[0] != SM_CODE_PAIRING_RANDOM){
|
if (packet[0] != SM_CODE_PAIRING_RANDOM){
|
||||||
sm_pdu_received_in_wrong_state(sm_conn);
|
sm_pdu_received_in_wrong_state(sm_conn);
|
||||||
break;
|
break;
|
||||||
@ -2785,12 +2786,12 @@ static void sm_pdu_handler(uint8_t packet_type, hci_con_handle_t con_handle, uin
|
|||||||
|
|
||||||
if (sm_conn->sm_role){
|
if (sm_conn->sm_role){
|
||||||
// Responder
|
// Responder
|
||||||
sm_conn->sm_engine_state = SM_PH2_SEND_PAIRING_RANDOM_SC;
|
sm_conn->sm_engine_state = SM_SC_SEND_PAIRING_RANDOM;
|
||||||
} else {
|
} else {
|
||||||
// Initiator role
|
// Initiator role
|
||||||
switch (setup->sm_stk_generation_method){
|
switch (setup->sm_stk_generation_method){
|
||||||
case JUST_WORKS:
|
case JUST_WORKS:
|
||||||
sm_conn->sm_engine_state = SM_PH2_SEND_DHKEY_CHECK_COMMAND;
|
sm_conn->sm_engine_state = SM_SC_SEND_DHKEY_CHECK_COMMAND;
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case NK_BOTH_INPUT: {
|
case NK_BOTH_INPUT: {
|
||||||
@ -2807,9 +2808,9 @@ static void sm_pdu_handler(uint8_t packet_type, hci_con_handle_t con_handle, uin
|
|||||||
case PK_RESP_INPUT:
|
case PK_RESP_INPUT:
|
||||||
case OK_BOTH_INPUT:
|
case OK_BOTH_INPUT:
|
||||||
if (setup->sm_passkey_bit < 20) {
|
if (setup->sm_passkey_bit < 20) {
|
||||||
sm_conn->sm_engine_state = SM_PH2_SEND_CONFIRMATION;
|
sm_conn->sm_engine_state = SM_SC_SEND_CONFIRMATION;
|
||||||
} else {
|
} else {
|
||||||
sm_conn->sm_engine_state = SM_PH2_SEND_DHKEY_CHECK_COMMAND;
|
sm_conn->sm_engine_state = SM_SC_SEND_DHKEY_CHECK_COMMAND;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case OOB:
|
case OOB:
|
||||||
@ -2819,7 +2820,7 @@ static void sm_pdu_handler(uint8_t packet_type, hci_con_handle_t con_handle, uin
|
|||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case SM_PH2_W4_DHKEY_CHECK_COMMAND:
|
case SM_SC_W4_DHKEY_CHECK_COMMAND:
|
||||||
if (packet[0] != SM_CODE_PAIRING_DHKEY_CHECK){
|
if (packet[0] != SM_CODE_PAIRING_DHKEY_CHECK){
|
||||||
sm_pdu_received_in_wrong_state(sm_conn);
|
sm_pdu_received_in_wrong_state(sm_conn);
|
||||||
break;
|
break;
|
||||||
@ -2860,9 +2861,9 @@ static void sm_pdu_handler(uint8_t packet_type, hci_con_handle_t con_handle, uin
|
|||||||
// responder
|
// responder
|
||||||
// for numeric comparison, we need to wait for user confirm
|
// for numeric comparison, we need to wait for user confirm
|
||||||
if (setup->sm_stk_generation_method == NK_BOTH_INPUT && setup->sm_user_response != SM_USER_RESPONSE_CONFIRM){
|
if (setup->sm_stk_generation_method == NK_BOTH_INPUT && setup->sm_user_response != SM_USER_RESPONSE_CONFIRM){
|
||||||
sm_conn->sm_engine_state = SM_PH2_W4_USER_RESPONSE;
|
sm_conn->sm_engine_state = SM_SC_W4_USER_RESPONSE;
|
||||||
} else {
|
} else {
|
||||||
sm_conn->sm_engine_state = SM_PH2_SEND_DHKEY_CHECK_COMMAND;
|
sm_conn->sm_engine_state = SM_SC_SEND_DHKEY_CHECK_COMMAND;
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
// initiator
|
// initiator
|
||||||
@ -3221,14 +3222,14 @@ void sm_just_works_confirm(hci_con_handle_t con_handle){
|
|||||||
|
|
||||||
#ifdef ENABLE_LE_SECURE_CONNECTIONS
|
#ifdef ENABLE_LE_SECURE_CONNECTIONS
|
||||||
if (setup->sm_use_secure_connections){
|
if (setup->sm_use_secure_connections){
|
||||||
sm_conn->sm_engine_state = SM_PH2_SEND_PUBLIC_KEY_COMMAND;
|
sm_conn->sm_engine_state = SM_SC_SEND_PUBLIC_KEY_COMMAND;
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
if (sm_conn->sm_engine_state == SM_PH2_W4_USER_RESPONSE){
|
if (sm_conn->sm_engine_state == SM_SC_W4_USER_RESPONSE){
|
||||||
if (sm_conn->sm_role){
|
if (sm_conn->sm_role){
|
||||||
// responder
|
// responder
|
||||||
sm_conn->sm_engine_state = SM_PH2_SEND_DHKEY_CHECK_COMMAND;
|
sm_conn->sm_engine_state = SM_SC_SEND_DHKEY_CHECK_COMMAND;
|
||||||
} else {
|
} else {
|
||||||
// initiator
|
// initiator
|
||||||
// TODO handle intiator role
|
// TODO handle intiator role
|
||||||
|
27
src/hci.h
27
src/hci.h
@ -249,16 +249,6 @@ typedef enum {
|
|||||||
|
|
||||||
SM_PH2_W4_CONNECTION_ENCRYPTED,
|
SM_PH2_W4_CONNECTION_ENCRYPTED,
|
||||||
|
|
||||||
// LE Secure Connections
|
|
||||||
SM_PH2_SEND_PUBLIC_KEY_COMMAND,
|
|
||||||
SM_PH2_SEND_CONFIRMATION,
|
|
||||||
SM_PH2_SEND_PAIRING_RANDOM_SC,
|
|
||||||
SM_PH2_SEND_DHKEY_CHECK_COMMAND,
|
|
||||||
SM_PH2_W4_CONFIRMATION,
|
|
||||||
SM_PH2_W4_PAIRING_RANDOM,
|
|
||||||
SM_PH2_W4_USER_RESPONSE,
|
|
||||||
SM_PH2_W4_DHKEY_CHECK_COMMAND,
|
|
||||||
|
|
||||||
// Phase 3: Transport Specific Key Distribution
|
// Phase 3: Transport Specific Key Distribution
|
||||||
// calculate DHK, Y, EDIV, and LTK
|
// calculate DHK, Y, EDIV, and LTK
|
||||||
SM_PH3_GET_RANDOM,
|
SM_PH3_GET_RANDOM,
|
||||||
@ -290,9 +280,6 @@ typedef enum {
|
|||||||
SM_RESPONDER_PH2_W4_PAIRING_RANDOM,
|
SM_RESPONDER_PH2_W4_PAIRING_RANDOM,
|
||||||
SM_RESPONDER_PH2_W4_LTK_REQUEST,
|
SM_RESPONDER_PH2_W4_LTK_REQUEST,
|
||||||
SM_RESPONDER_PH2_SEND_LTK_REPLY,
|
SM_RESPONDER_PH2_SEND_LTK_REPLY,
|
||||||
// LE Secure Connection
|
|
||||||
SM_RESPONDER_PH2_W4_PUBLIC_KEY_COMMAND,
|
|
||||||
SM_RESPONDER_PH2_W4_LTK_REQUEST_SC,
|
|
||||||
|
|
||||||
// Phase 4: re-establish previously distributed LTK
|
// Phase 4: re-establish previously distributed LTK
|
||||||
// state == 46
|
// state == 46
|
||||||
@ -314,7 +301,19 @@ typedef enum {
|
|||||||
SM_INITIATOR_PH2_W4_PAIRING_CONFIRM,
|
SM_INITIATOR_PH2_W4_PAIRING_CONFIRM,
|
||||||
SM_INITIATOR_PH2_W4_PAIRING_RANDOM,
|
SM_INITIATOR_PH2_W4_PAIRING_RANDOM,
|
||||||
SM_INITIATOR_PH3_SEND_START_ENCRYPTION,
|
SM_INITIATOR_PH3_SEND_START_ENCRYPTION,
|
||||||
//
|
|
||||||
|
// LE Secure Connections
|
||||||
|
SM_SC_SEND_PUBLIC_KEY_COMMAND,
|
||||||
|
SM_SC_W4_PUBLIC_KEY_COMMAND,
|
||||||
|
SM_SC_SEND_CONFIRMATION,
|
||||||
|
SM_SC_W4_CONFIRMATION,
|
||||||
|
SM_SC_SEND_PAIRING_RANDOM,
|
||||||
|
SM_SC_W4_PAIRING_RANDOM,
|
||||||
|
SM_SC_SEND_DHKEY_CHECK_COMMAND,
|
||||||
|
SM_SC_W4_DHKEY_CHECK_COMMAND,
|
||||||
|
SM_SC_W4_USER_RESPONSE,
|
||||||
|
SM_SC_W4_LTK_REQUEST_SC,
|
||||||
|
|
||||||
} security_manager_state_t;
|
} security_manager_state_t;
|
||||||
|
|
||||||
typedef enum {
|
typedef enum {
|
||||||
|
Loading…
x
Reference in New Issue
Block a user