TI BLE5-Stack API Documentation  2.02.06.00
gapbondmgr.h
Go to the documentation of this file.
1 /******************************************************************************
2 
3  Group: WCS, BTS
4  $Target Device: DEVICES $
5 
6  ******************************************************************************
7  $License: BSD3 2010 $
8  ******************************************************************************
9  $Release Name: PACKAGE NAME $
10  $Release Date: PACKAGE RELEASE DATE $
11  *****************************************************************************/
12 
21 #ifndef GAPBONDMGR_H
22 #define GAPBONDMGR_H
23 
24 #ifdef __cplusplus
25 extern "C"
26 {
27 #endif
28 
29 /*-------------------------------------------------------------------
30  * INCLUDES
31  */
32 #include "gap.h"
33 
34 /*-------------------------------------------------------------------
35  * CONSTANTS
36  */
37 
43 // This is a common file for the legacy and sysconfig examples,
44 // the parameters under ifndef SYSCFG are defined in this file for
45 // the legacy examples and generated using the sysconfig tool for
46 // the sysconfig examples
47 #ifndef SYSCFG
48 #if !defined ( GAP_BONDINGS_MAX )
49 #define GAP_BONDINGS_MAX 10
51 #endif
52 
53 #if !defined ( GAP_CHAR_CFG_MAX )
54 #define GAP_CHAR_CFG_MAX 4
56 #endif
57 #endif //SYSCFG
58 
78 #define GAPBOND_PAIRING_MODE 0x400
79 
89 #define GAPBOND_MITM_PROTECTION 0x402
90 
100 #define GAPBOND_IO_CAPABILITIES 0x403
101 
111 #define GAPBOND_OOB_ENABLED 0x404
112 
123 #define GAPBOND_OOB_DATA 0x405
124 
134 #define GAPBOND_BONDING_ENABLED 0x406
135 
148 #define GAPBOND_KEY_DIST_LIST 0x407
149 
155 #define GAPBOND_ERASE_ALLBONDS 0x409
156 
158 #define GAPBOND_AUTO_FAIL_PAIRING 0x40A
159 #define GAPBOND_AUTO_FAIL_REASON 0x40B
160 
171 #define GAPBOND_KEYSIZE 0x40C
172 
186 #define GAPBOND_AUTO_SYNC_WL 0x40D
187 
195 #define GAPBOND_BOND_COUNT 0x40E
196 
207 #define GAPBOND_BOND_FAIL_ACTION 0x40F
208 
221 #define GAPBOND_ERASE_SINGLEBOND 0x410
222 
236 #define GAPBOND_SECURE_CONNECTION 0x411
237 
256 #define GAPBOND_ECCKEY_REGEN_POLICY 0x412
257 
279 #define GAPBOND_ECC_KEYS 0x413
280 
290 #define GAPBOND_SC_HOST_DEBUG 0x414
291 
308 #define GAPBOND_ERASE_BOND_IN_CONN 0x415
309 
327 #define GAPBOND_ALLOW_DEBUG_KEYS 0x416
328 
342 #define GAPBOND_LRU_BOND_REPLACEMENT 0x418
343 
352 #define GAPBOND_ERASE_LOCAL_INFO 0x41A
353 
363 #define GAPBOND_AUTHEN_PAIRING_ONLY 0x41B
364 
375 #define GAPBOND_SAME_IRK_OPTION 0x41C
376 
388 #define GAPBOND_PAIRING_MODE_NO_PAIRING 0x00
390 #define GAPBOND_PAIRING_MODE_WAIT_FOR_REQ 0x01
392 #define GAPBOND_PAIRING_MODE_INITIATE 0x02
394 
400 #define GAPBOND_IO_CAP_DISPLAY_ONLY 0x00
402 #define GAPBOND_IO_CAP_DISPLAY_YES_NO 0x01
404 #define GAPBOND_IO_CAP_KEYBOARD_ONLY 0x02
406 #define GAPBOND_IO_CAP_NO_INPUT_NO_OUTPUT 0x03
408 #define GAPBOND_IO_CAP_KEYBOARD_DISPLAY 0x04
410 
416 #define GAPBOND_KEYDIST_SENCKEY 0x01
418 #define GAPBOND_KEYDIST_SIDKEY 0x02
420 #define GAPBOND_KEYDIST_SSIGN 0x04
422 #define GAPBOND_KEYDIST_SLINK 0x08
424 #define GAPBOND_KEYDIST_MENCKEY 0x10
426 #define GAPBOND_KEYDIST_MIDKEY 0x20
428 #define GAPBOND_KEYDIST_MSIGN 0x40
430 #define GAPBOND_KEYDIST_MLINK 0x80
432 
438 #define GAPBOND_SAME_IRK_UPDATE_BOND_REC 0x00
440 #define GAPBOND_SAME_IRK_TERMINATE_LINK 0x01
442 
478 #define GAP_BOND_REC_ID_OFFSET 0
479 #define GAP_BOND_LOCAL_LTK_OFFSET 1
480 #define GAP_BOND_DEV_LTK_OFFSET 2
481 #define GAP_BOND_DEV_IRK_OFFSET 3
482 #define GAP_BOND_DEV_CSRK_OFFSET 4
483 #define GAP_BOND_DEV_SIGN_COUNTER_OFFSET 5
484 #define GAP_BOND_REC_IDS 6
485 
486 // Bonded State Flags
487 #define GAP_BONDED_STATE_AUTHENTICATED 0x01
488 #define GAP_BONDED_STATE_SERVICE_CHANGED 0x02
489 #define GAP_BONDED_STATE_CAR 0x04
490 #define GAP_BONDED_STATE_SECURECONNECTION 0x08
491 #define GAP_BONDED_STATE_RPA_ONLY 0x10
492 
510 #define GAPBOND_PAIRING_STATE_STARTED 0x00
511 
531 #define GAPBOND_PAIRING_STATE_COMPLETE 0x01
532 
550 #define GAPBOND_PAIRING_STATE_ENCRYPTED 0x02
551 #define GAPBOND_PAIRING_STATE_BOND_SAVED 0x03
553 #define GAPBOND_PAIRING_STATE_CAR_READ 0x04
555 #define GAPBOND_PAIRING_STATE_RPAO_READ 0x05
557 #define GAPBOND_GENERATE_ECC_DONE 0x06
559 
574 #define SMP_PAIRING_FAILED_PASSKEY_ENTRY_FAILED 0x01
575 #define SMP_PAIRING_FAILED_OOB_NOT_AVAIL 0x02
577 
581 #define SMP_PAIRING_FAILED_AUTH_REQ 0x03
582 #define SMP_PAIRING_FAILED_CONFIRM_VALUE 0x04
584 #define SMP_PAIRING_FAILED_NOT_SUPPORTED 0x05
586 
590 #define SMP_PAIRING_FAILED_ENC_KEY_SIZE 0x06
591 #define SMP_PAIRING_FAILED_CMD_NOT_SUPPORTED 0x07
593 #define SMP_PAIRING_FAILED_UNSPECIFIED 0x08
595 
599 #define SMP_PAIRING_FAILED_REPEATED_ATTEMPTS 0x09
600 
604 #define SMP_PAIRING_FAILED_INVALID_PARAMETERS 0x0A
605 
609 #define SMP_PAIRING_FAILED_DHKEY_CHECK_FAILED 0x0B
610 
614 #define SMP_PAIRING_FAILED_NUM_COMPARISON_FAILED 0x0C
615 
621 #define GAPBOND_FAIL_NO_ACTION 0x00
623 #define GAPBOND_FAIL_INITIATE_PAIRING 0x01
625 #define GAPBOND_FAIL_TERMINATE_LINK 0x02
627 
631 #define GAPBOND_FAIL_TERMINATE_ERASE_BONDS 0x03
632 
638 #define GAPBOND_SECURE_CONNECTION_NONE 0x00
640 #define GAPBOND_SECURE_CONNECTION_ALLOW 0x01
642 #define GAPBOND_SECURE_CONNECTION_ONLY 0x02
644 
654 #define GAPBOND_REGENERATE_ALWAYS 0x00
656 #define GAPBOND_REGENERATE_NEVER 0xFF
658 
660 #define ECC_KEYLEN 32
662 
665 /*-------------------------------------------------------------------
666  * TYPEDEFS
667  */
668 
692 typedef void (*pfnPasscodeCB_t)
693 (
694  uint8_t *deviceAddr,
695  uint16_t connectionHandle,
696  uint8_t uiInputs,
697  uint8_t uiOutputs,
698  uint32_t numComparison
699 );
700 
712 typedef void (*pfnPairStateCB_t)
713 (
714  uint16_t connectionHandle,
715  uint8_t state,
716  uint8_t status
717 );
718 
725 typedef struct
726 {
729 } gapBondCBs_t;
730 
738 typedef struct
740 {
741  uint8_t privateKey[ECC_KEYLEN];
742  uint8_t publicKeyX[ECC_KEYLEN];
743  uint8_t publicKeyY[ECC_KEYLEN];
745 
746 //structure of OOB data
747 typedef struct gapBondOOBData
748 {
749  uint8 confirm[KEYLEN]; //calculated/received confirm value
750  uint8 rand[KEYLEN]; //calculated/received random number
751 } gapBondOOBData_t;
752 
754 typedef struct
755 {
756  uint8_t LTK[KEYLEN]; // Long Term Key (LTK)
757  uint16_t div; //lint -e754 // LTK eDiv
758  uint8_t rand[B_RANDOM_NUM_SIZE]; // LTK random number
759  uint8_t keySize; // LTK key size
760 } gapBondLTK_t;
761 
763 typedef struct
764 {
771  uint8_t addr[B_ADDR_LEN];
781  uint8_t stateFlags;
782 } gapBondRec_t;
783 
785 typedef struct
786 {
787  uint16_t attrHandle; // attribute handle
788  uint8_t value; // attribute value for this device
790 
792 /*-------------------------------------------------------------------
793  * API's
794  */
795 
801 extern void GAPBondMgr_Register(gapBondCBs_t *pCB);
802 
819 extern bStatus_t GAPBondMgr_SetParameter(uint16_t param, uint8_t len,
820  void *pValue);
821 
836 extern bStatus_t GAPBondMgr_GetParameter(uint16_t param, void *pValue);
837 
856 extern bStatus_t GAPBondMgr_Pair(uint16_t connHandle);
857 
886 extern bStatus_t GAPBondMgr_FindAddr(uint8_t *pDevAddr,
887  GAP_Peer_Addr_Types_t addrType,
888  uint8_t *pIdx,
889  GAP_Peer_Addr_Types_t *pIdentityAddrType,
890  uint8_t *pIdentityAddr);
891 
904 extern bStatus_t GAPBondMgr_ServiceChangeInd(uint16_t connectionHandle,
905  uint8_t setParam);
906 
921 extern bStatus_t GAPBondMgr_PasscodeRsp(uint16_t connectionHandle,
922  uint8_t status, uint32_t passcode);
923 
934 extern bStatus_t GAPBondMgr_SCGetLocalOOBParameters(gapBondOOBData_t *localOobData);
935 
948 extern bStatus_t GAPBondMgr_SCSetRemoteOOBParameters(gapBondOOBData_t *remoteOobData,
949  uint8 OOBDataFlag);
950 
960 
975 extern uint8_t gapBondMgrReadBondRec(GAP_Peer_Addr_Types_t addrType,
976  uint8_t *pDevAddr,
977  gapBondRec_t* pBondRec,
978  gapBondLTK_t* pLocalLtk,
979  gapBondLTK_t* pDevLtk,
980  uint8_t* pIRK,
981  uint8_t* pSRK,
982  uint32_t signCount,
983  gapBondCharCfg_t* charCfg);
984 
999 extern uint8_t gapBondMgrImportBond(gapBondRec_t* pBondRec,
1000  gapBondLTK_t* pLocalLtk,
1001  gapBondLTK_t* pDevLtk,
1002  uint8_t* pIRK,
1003  uint8_t* pSRK,
1004  uint32_t signCount,
1005  gapBondCharCfg_t* charCfg);
1006 /*-------------------------------------------------------------------
1007 -------------------------------------------------------------------*/
1008 #ifdef __cplusplus
1009 }
1010 #endif
1011 
1012 #endif /* GAPBONDMGR_H */
1013 
GAP_Peer_Addr_Types_t
Address types used for specifying peer address type.
Definition: gap.h:727
Public and Private ECC Keys.
Definition: gapbondmgr.h:739
bStatus_t GAPBondMgr_Pair(uint16_t connHandle)
#define B_RANDOM_NUM_SIZE
BLE Random Number Size.
Definition: bcomdef.h:133
Structure of NV data for the connected device's encryption information.
Definition: gapbondmgr.h:754
bStatus_t GAPBondMgr_GenerateEccKeys(void)
Generates ECC keys.
bStatus_t GAPBondMgr_GetParameter(uint16_t param, void *pValue)
bStatus_t GAPBondMgr_PasscodeRsp(uint16_t connectionHandle, uint8_t status, uint32_t passcode)
void(* pfnPairStateCB_t)(uint16_t connectionHandle, uint8_t state, uint8_t status)
Definition: gapbondmgr.h:713
bStatus_t GAPBondMgr_SCGetLocalOOBParameters(gapBondOOBData_t *localOobData)
Get local Random number and confirm value for secure connection.
Structure of NV data for the connected device's address information.
Definition: gapbondmgr.h:763
pfnPasscodeCB_t passcodeCB
Passcode callback.
Definition: gapbondmgr.h:727
bStatus_t GAPBondMgr_FindAddr(uint8_t *pDevAddr, GAP_Peer_Addr_Types_t addrType, uint8_t *pIdx, GAP_Peer_Addr_Types_t *pIdentityAddrType, uint8_t *pIdentityAddr)
Search for an address in the bonding table. If the address is a random private resolvable address...
void GAPBondMgr_Register(gapBondCBs_t *pCB)
Definition: gapbondmgr.h:725
void(* pfnPasscodeCB_t)(uint8_t *deviceAddr, uint16_t connectionHandle, uint8_t uiInputs, uint8_t uiOutputs, uint32_t numComparison)
Definition: gapbondmgr.h:693
uint8_t gapBondMgrImportBond(gapBondRec_t *pBondRec, gapBondLTK_t *pLocalLtk, gapBondLTK_t *pDevLtk, uint8_t *pIRK, uint8_t *pSRK, uint32_t signCount, gapBondCharCfg_t *charCfg)
Import bond record to NV.
uint8_t gapBondMgrReadBondRec(GAP_Peer_Addr_Types_t addrType, uint8_t *pDevAddr, gapBondRec_t *pBondRec, gapBondLTK_t *pLocalLtk, gapBondLTK_t *pDevLtk, uint8_t *pIRK, uint8_t *pSRK, uint32_t signCount, gapBondCharCfg_t *charCfg)
Read bond record from NV.
uint8_t stateFlags
Definition: gapbondmgr.h:781
GAP layer interface.
bStatus_t GAPBondMgr_ServiceChangeInd(uint16_t connectionHandle, uint8_t setParam)
GAP_Peer_Addr_Types_t addrType
Definition: gapbondmgr.h:775
#define B_ADDR_LEN
Default Public and Random Address Length.
Definition: bcomdef.h:108
bStatus_t GAPBondMgr_SetParameter(uint16_t param, uint8_t len, void *pValue)
Status_t bStatus_t
BLE Generic Status return.
Definition: bcomdef.h:251
#define ECC_KEYLEN
ECC Key Length: 256 bit keys.
Definition: gapbondmgr.h:661
bStatus_t GAPBondMgr_SCSetRemoteOOBParameters(gapBondOOBData_t *remoteOobData, uint8 OOBDataFlag)
Set remote's OOB parameters for secure connection.
#define KEYLEN
Default key length.
Definition: bcomdef.h:111
pfnPairStateCB_t pairStateCB
Pairing state callback.
Definition: gapbondmgr.h:728
Structure of NV data for the connected device's characteristic configuration.
Definition: gapbondmgr.h:785
© Copyright 1995-2022, Texas Instruments Incorporated. All rights reserved.
Trademarks | Privacy policy | Terms of use | Terms of sale