Data Structures | |
struct | smpCfg_t |
Configurable parameters. More... | |
struct | smpDmPair_t |
Data type for SMP_MSG_API_PAIR_REQ and SMP_MSG_API_PAIR_RSP. More... | |
struct | smpDmAuthRsp_t |
Data type for SMP_MSG_API_AUTH_RSP. More... | |
struct | smpDmKeypress_t |
Data type for SMP_MSG_API_USER_KEYPRESS. More... | |
struct | smpDmSecurityReq_t |
Data type for SMP_MSG_API_SECURITY_REQ. More... | |
union | smpDmMsg_t |
Union SMP DM message data types. More... | |
Macros | |
#define | SMP_HDR_LEN 1 |
PDU format. More... | |
#define | SMP_TIMEOUT 30 |
Protocol timeout. More... | |
#define | SMP_OOB_LEN 16 |
OOB Data length in bytes. | |
#define | SMP_PIN_LEN 3 |
Passkey Pin lenght in bytes. | |
SMP Events | |
enum | { SMP_MSG_API_PAIR_REQ = 1, SMP_MSG_API_PAIR_RSP, SMP_MSG_API_CANCEL_REQ, SMP_MSG_API_AUTH_RSP, SMP_MSG_API_SECURITY_REQ, SMP_MSG_CMD_PKT, SMP_MSG_CMD_PAIRING_FAILED, SMP_MSG_DM_ENCRYPT_CMPL, SMP_MSG_DM_ENCRYPT_FAILED, SMP_MSG_DM_CONN_CLOSE, SMP_MSG_WSF_AES_CMPL, SMP_MSG_INT_SEND_NEXT_KEY, SMP_MSG_INT_MAX_ATTEMPTS, SMP_MSG_INT_PAIRING_CMPL, SMP_MSG_INT_RSP_TIMEOUT, SMP_MSG_INT_WI_TIMEOUT, SMP_MSG_INT_LESC, SMP_MSG_INT_LEGACY, SMP_MSG_INT_JW_NC, SMP_MSG_INT_PASSKEY, SMP_MSG_INT_OOB, SMP_MSG_API_USER_CONFIRM, SMP_MSG_API_USER_KEYPRESS, SMP_MSG_API_KEYPRESS_CMPL, SMP_MSG_WSF_ECC_CMPL, SMP_MSG_INT_PK_NEXT, SMP_MSG_INT_PK_CMPL, SMP_MSG_WSF_CMAC_CMPL, SMP_MSG_DH_CHECK_FAILURE, SMP_MSG_EARLY_CNF, SMP_NUM_MSGS } |
Event handler messages for SMP state machines. More... | |
enum | { SMP_DB_SERVICE_IND = SMP_NUM_MSGS } |
Additional SMP messages. More... | |
SMP Initialization Functions | |
Legacy and Secure Connections initialization for Initiator and Responder roles. | |
void | SmpiInit (void) |
Initialize SMP initiator role. More... | |
void | SmprInit (void) |
Initialize SMP responder role. More... | |
void | SmpiScInit (void) |
Initialize SMP initiator role utilizing BTLE Secure Connections. More... | |
void | SmprScInit (void) |
Initialize SMP responder role utilizing BTLE Secure Connections. More... | |
void | SmpNonInit (void) |
Use this SMP init function when SMP is not supported. More... | |
SMP DM Interface Functions | |
void | SmpDmMsgSend (smpDmMsg_t *pMsg) |
This function is called by DM to send a message to SMP. More... | |
void | SmpDmEncryptInd (wsfMsgHdr_t *pMsg) |
This function is called by DM to notify SMP of encrypted link status. More... | |
uint8_t * | SmpDmGetStk (dmConnId_t connId, uint8_t *pSecLevel) |
Return the STK for the given connection. More... | |
void | SmpScGetCancelMsgWithReattempt (dmConnId_t connId, wsfMsgHdr_t *pHdr, uint8_t status) |
Format a cancel message with consideration for the attempts counter. More... | |
void | SmpDbInit (void) |
Initialize the SMP Database. More... | |
void | SmpScEnableZeroDhKey (bool_t enable) |
Called to force the DhKey to zero for qualification test purposes. More... | |
SMP Encryption Key Size | |
#define | SMP_KEY_SIZE_MAX 16 |
Maximum encryption key size. | |
#define | SMP_KEY_SIZE_MIN 7 |
Minimum encryption key size. | |
SMP Error Codes | |
#define | SMP_ERR_PASSKEY_ENTRY 0x01 |
User input of passkey failed. | |
#define | SMP_ERR_OOB 0x02 |
OOB data is not available. | |
#define | SMP_ERR_AUTH_REQ 0x03 |
Authentication requirements cannot be met. | |
#define | SMP_ERR_CONFIRM_VALUE 0x04 |
Confirm value does not match. | |
#define | SMP_ERR_PAIRING_NOT_SUP 0x05 |
Pairing is not supported by the device. | |
#define | SMP_ERR_ENC_KEY_SIZE 0x06 |
Insufficient encryption key size. | |
#define | SMP_ERR_COMMAND_NOT_SUP 0x07 |
Command not supported. | |
#define | SMP_ERR_UNSPECIFIED 0x08 |
Unspecified reason. | |
#define | SMP_ERR_ATTEMPTS 0x09 |
Repeated attempts. | |
#define | SMP_ERR_INVALID_PARAM 0x0A |
Invalid parameter or command length. | |
#define | SMP_ERR_DH_KEY_CHECK 0x0B |
DH Key check did not match. | |
#define | SMP_ERR_NUMERIC_COMPARISON 0x0C |
Numeric comparison did not match. | |
#define | SMP_ERR_BR_EDR_IN_PROGRESS 0x0D |
BR/EDR in progress. | |
#define | SMP_ERR_CROSS_TRANSPORT 0x0E |
BR/EDR cross transport key generation not allowed. | |
Proprietary Error Codes | |
#define | SMP_ERR_MEMORY 0xE0 |
Out of memory. | |
#define | SMP_ERR_TIMEOUT 0xE1 |
Transaction timeout. | |
SMP PDU Codes | |
#define | SMP_CMD_PAIR_REQ 0x01 |
Pairing request. | |
#define | SMP_CMD_PAIR_RSP 0x02 |
Pairing response. | |
#define | SMP_CMD_PAIR_CNF 0x03 |
Pairing confirm. | |
#define | SMP_CMD_PAIR_RAND 0x04 |
Pairing random. | |
#define | SMP_CMD_PAIR_FAIL 0x05 |
Pairing failed. | |
#define | SMP_CMD_ENC_INFO 0x06 |
Encryption information. | |
#define | SMP_CMD_MASTER_ID 0x07 |
Master identification. | |
#define | SMP_CMD_ID_INFO 0x08 |
Identity information. | |
#define | SMP_CMD_ID_ADDR_INFO 0x09 |
Identity address information. | |
#define | SMP_CMD_SIGN_INFO 0x0A |
Signing information. | |
#define | SMP_CMD_SECURITY_REQ 0x0B |
Security fequest. | |
#define | SMP_CMD_PUBLIC_KEY 0x0C |
Public Kkey. | |
#define | SMP_CMD_DHKEY_CHECK 0x0D |
DH Key check. | |
#define | SMP_CMD_KEYPRESS 0x0E |
User key press. | |
#define | SMP_CMD_MAX 0x0F |
Command code maximum. | |
SMP PDU Packet Lengths | |
#define | SMP_PAIR_REQ_LEN 7 |
Pairing request message length. | |
#define | SMP_PAIR_RSP_LEN 7 |
Pairing response message length. | |
#define | SMP_PAIR_CNF_LEN 17 |
Pairing confirmation message length. | |
#define | SMP_PAIR_RAND_LEN 17 |
Pairing random message length. | |
#define | SMP_PAIR_FAIL_LEN 2 |
Pairing fail message length. | |
#define | SMP_ENC_INFO_LEN 17 |
Encryption information message length. | |
#define | SMP_MASTER_ID_LEN 11 |
Master identification messagelength. | |
#define | SMP_ID_INFO_LEN 17 |
Identity information message length. | |
#define | SMP_ID_ADDR_INFO_LEN 8 |
Identity address information message length. | |
#define | SMP_SIGN_INFO_LEN 17 |
Signing information message length. | |
#define | SMP_SECURITY_REQ_LEN 2 |
Security request message length. | |
#define | SMP_PUB_KEY_MSG_LEN (1 + 2*SMP_PUB_KEY_LEN) |
Public key message length. | |
#define | SMP_DHKEY_CHECK_MSG_LEN (1 + SMP_DHKEY_CHECK_LEN) |
Diffie-Hellman key check message length. | |
#define | SMP_KEYPRESS_MSG_LEN 2 |
Keypress message length. | |
SMP I/O Capabilities | |
I/O capabilities codes to be set for SMP_CMD_PAIR_REQ and SMP_CMD_PAIR_RSP | |
#define | SMP_IO_DISP_ONLY 0x00 |
Display only. | |
#define | SMP_IO_DISP_YES_NO 0x01 |
Display yes/no. | |
#define | SMP_IO_KEY_ONLY 0x02 |
Keyboard only. | |
#define | SMP_IO_NO_IN_NO_OUT 0x03 |
No input, no output. | |
#define | SMP_IO_KEY_DISP 0x04 |
Keyboard display. | |
SMP OOB Data Flag | |
Out-of-Band codes to be set for SMP_CMD_PAIR_REQ and SMP_CMD_PAIR_RSP | |
#define | SMP_OOB_DATA_NONE 0x00 |
No OOB data from the remote device is present. | |
#define | SMP_OOB_DATA_PRESENT 0x01 |
OOB data from the remote device is present. | |
SMP Authentication Requirements Flags | |
Authentication Requirements Flags to be set for SMP_CMD_PAIR_REQ and SMP_CMD_PAIR_RSP. | |
#define | SMP_AUTH_BOND_MASK 0x03 |
Mask for bonding bits. | |
#define | SMP_AUTH_BOND_FLAG 0x01 |
Bonding requested. | |
#define | SMP_AUTH_MITM_FLAG 0x04 |
MITM (authenticated pairing) requested. | |
#define | SMP_AUTH_SC_FLAG 0x08 |
LE Secure Connections requested. | |
#define | SMP_AUTH_KP_FLAG 0x10 |
Keypress notifications requested. | |
SMP Key Distribution Flags | |
Flags of security keys this device is requesting to be distribution once pairing completes. | |
#define | SMP_KEY_DIST_ENC 0x01 |
Distribute LTK. | |
#define | SMP_KEY_DIST_ID 0x02 |
Distribute IRK. | |
#define | SMP_KEY_DIST_SIGN 0x04 |
Distribute CSRK. | |
#define | SMP_KEY_DIST_MASK (SMP_KEY_DIST_ENC | SMP_KEY_DIST_ID | SMP_KEY_DIST_SIGN) |
Key distribution mask. | |
SMP LE Secure Connection Keypress Codes | |
Keypress codes found in SMP_CMD_KEYPRESS PDU to be sent on the respective action when the SMP_AUTH_KP_FLAG is set in both the SMP_CMD_PAIR_REQ and SMP_CMD_PAIR_RSP. | |
#define | SMP_PASSKEY_ENTRY_STARTED 0x00 |
Passkey entry started keypress type. | |
#define | SMP_PASSKEY_DIGIT_ENTERED 0x01 |
Passkey digit entered keypress type. | |
#define | SMP_PASSKEY_DIGIT_ERASED 0x02 |
Passkey digit erased keypress type. | |
#define | SMP_PASSKEY_CLEARED 0x03 |
Passkey cleared keypress type. | |
#define | SMP_PASSKEY_ENTRY_COMPLETED 0x04 |
Passkey entry complete keypress type. | |
SMP Value Length Constants | |
#define | SMP_RAND_LEN 16 |
Random number length. | |
#define | SMP_CONFIRM_LEN 16 |
Confirm number length. | |
#define | SMP_KEY_LEN 16 |
Key length. | |
#define | SMP_RAND8_LEN 8 |
Random 8-byte number length. | |
#define | SMP_PRIVATE_KEY_LEN 32 |
Secure connections private key length. | |
#define | SMP_PUB_KEY_LEN 32 |
Secure connecdtions public key length. | |
#define | SMP_DHKEY_LEN 32 |
Secure connection Diffie-Hellman key length. | |
#define | SMP_DHKEY_CHECK_LEN 16 |
Secure connection Diffie-Hellman key check length. | |
CMAC Input Lengths Constants | |
#define | SMP_F4_TEXT_LEN (SMP_PUB_KEY_LEN * 2 + 1) |
F4 input length. | |
#define | SMP_G2_TEXT_LEN (SMP_PUB_KEY_LEN * 2 + SMP_RAND_LEN) |
G2 input length. | |
#define | SMP_F5_TKEY_TEXT_LEN (SMP_DHKEY_LEN) |
F5 Temporary key input length. | |
#define | SMP_F5_TEXT_LEN (9 + 2*BDA_ADDR_LEN + 2*SMP_RAND_LEN) |
F5 input length. | |
#define | SMP_F6_TEXT_LEN (2*BDA_ADDR_LEN + 3*SMP_RAND_LEN + 5) |
F6 input length. | |
#define SMP_HDR_LEN 1 |
#define SMP_TIMEOUT 30 |
anonymous enum |
Event handler messages for SMP state machines.
Definition at line 42 of file smp_api.h.
anonymous enum |
void SmpiInit | ( | void | ) |
Initialize SMP initiator role.
void SmprInit | ( | void | ) |
Initialize SMP responder role.
void SmpiScInit | ( | void | ) |
Initialize SMP initiator role utilizing BTLE Secure Connections.
void SmprScInit | ( | void | ) |
Initialize SMP responder role utilizing BTLE Secure Connections.
void SmpNonInit | ( | void | ) |
Use this SMP init function when SMP is not supported.
void SmpDmMsgSend | ( | smpDmMsg_t * | pMsg | ) |
This function is called by DM to send a message to SMP.
pMsg | Pointer to message structure. |
void SmpDmEncryptInd | ( | wsfMsgHdr_t * | pMsg | ) |
This function is called by DM to notify SMP of encrypted link status.
pMsg | Pointer to HCI message structure. |
uint8_t* SmpDmGetStk | ( | dmConnId_t | connId, |
uint8_t * | pSecLevel | ||
) |
Return the STK for the given connection.
connId | Connection identifier. |
pSecLevel | Returns the security level of pairing when STK was created. |
void SmpScGetCancelMsgWithReattempt | ( | dmConnId_t | connId, |
wsfMsgHdr_t * | pHdr, | ||
uint8_t | status | ||
) |
Format a cancel message with consideration for the attempts counter.
connId | Connection Id. |
pHdr | Pointer to header of message to fill. |
status | Status to include. |
void SmpDbInit | ( | void | ) |
Initialize the SMP Database.
void SmpScEnableZeroDhKey | ( | bool_t | enable | ) |
Called to force the DhKey to zero for qualification test purposes.
enable | TRUE - Force DhKey to zero. FALSE - Use calculated key |