123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387 |
- #ifndef SM_H
- #define SM_H
- #ifdef __cplusplus
- extern "C"
- {
- #endif
- #include "bcomdef.h"
- #include "OSAL.h"
- #define DISPLAY_ONLY 0x00
- #define DISPLAY_YES_NO 0x01
- #define KEYBOARD_ONLY 0x02
- #define NO_INPUT_NO_OUTPUT 0x03
- #define KEYBOARD_DISPLAY 0x04
- #define SM_AUTH_MITM_MASK(a) (((a) & 0x04) >> 2)
- #define SM_PASSKEY_TYPE_INPUT 0x01
- #define SM_PASSKEY_TYPE_DISPLAY 0x02
- #define SM_AUTH_REQ_NO_BONDING 0x00
- #define SM_AUTH_REQ_BONDING 0x01
- #define PASSKEY_LEN 6
- #define SM_AUTH_STATE_AUTHENTICATED 0x04
- #define SM_AUTH_STATE_BONDING 0x01
- typedef struct
- {
- osal_event_hdr_t hdr;
- uint8 newKey[KEYLEN];
- } smNewRandKeyEvent_t;
- typedef struct
- {
- unsigned int sEncKey:1;
- unsigned int sIdKey:1;
- unsigned int sSign:1;
- unsigned int sReserved:5;
-
- unsigned int mEncKey:1;
- unsigned int mIdKey:1;
- unsigned int mSign:1;
- unsigned int mReserved:5;
- } keyDist_t;
- typedef struct
- {
- uint8 ioCaps;
- uint8 oobAvailable;
- uint8 oob[KEYLEN];
- uint8 authReq;
- keyDist_t keyDist;
- uint8 maxEncKeySize;
- } smLinkSecurityReq_t;
- typedef struct
- {
- uint8 ltk[KEYLEN];
- uint16 div;
- uint8 rand[B_RANDOM_NUM_SIZE];
- uint8 keySize;
- } smSecurityInfo_t;
- typedef struct
- {
- uint8 irk[KEYLEN];
- uint8 bd_addr[B_ADDR_LEN];
- } smIdentityInfo_t;
- typedef struct
- {
- uint8 srk[KEYLEN];
- uint32 signCounter;
- } smSigningInfo_t;
- typedef struct
- {
- unsigned int bonding:2;
- unsigned int mitm:1;
- unsigned int reserved:5;
- } authReq_t;
- extern bStatus_t SM_InitiatorInit( void );
- extern bStatus_t SM_StartPairing( uint8 initiator,
- uint8 taskID,
- uint16 connectionHandle,
- smLinkSecurityReq_t *pSecReqs );
- extern bStatus_t SM_StartEncryption( uint16 connHandle, uint8 *pLTK,
- uint16 div, uint8 *pRandNum, uint8 keyLen );
- extern bStatus_t SM_ResponderInit( void );
- extern bStatus_t SM_NewRandKey( uint8 taskID );
- extern bStatus_t SM_CalcRandomAddr( uint8 *pIRK, uint8 *pNewAddr );
- extern bStatus_t SM_ResolveRandomAddrs( uint8 *pIRK, uint8 *pAddr );
- extern bStatus_t SM_Encrypt( uint8 *pKey, uint8 *pPlainText, uint8 *pResult );
- extern bStatus_t SM_GenerateAuthenSig( uint8 *pData, uint8 len, uint8 *pAuthenSig );
- extern bStatus_t SM_VerifyAuthenSig( uint16 connHandle,
- uint8 authentication,
- uint8 *pData,
- uint8 len,
- uint8 *pAuthenSig );
- extern bStatus_t SM_PasskeyUpdate( uint8 *pPasskey, uint16 connectionHandle );
-
- extern void SM_Init( uint8 task_id );
-
- extern uint16 SM_ProcessEvent( uint8 task_id, uint16 events );
- #ifdef __cplusplus
- }
- #endif
- #endif
|