ble_sec.h
Go to the documentation of this file.
1 /**
2  ****************************************************************************************
3  *
4  * @file ble_sec.h
5  *
6  * @brief BLE SEC API
7  *
8  ****************************************************************************************
9  * @attention
10  #####Copyright (c) 2019 GOODIX
11  All rights reserved.
12 
13  Redistribution and use in source and binary forms, with or without
14  modification, are permitted provided that the following conditions are met:
15  * Redistributions of source code must retain the above copyright
16  notice, this list of conditions and the following disclaimer.
17  * Redistributions in binary form must reproduce the above copyright
18  notice, this list of conditions and the following disclaimer in the
19  documentation and/or other materials provided with the distribution.
20  * Neither the name of GOODIX nor the names of its contributors may be used
21  to endorse or promote products derived from this software without
22  specific prior written permission.
23 
24  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
25  AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
26  IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
27  ARE DISCLAIMED. IN NO EVENT SHALL COPYRIGHT HOLDERS AND CONTRIBUTORS BE
28  LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
29  CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
30  SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
31  INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
32  CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
33  ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
34  POSSIBILITY OF SUCH DAMAGE.
35  *****************************************************************************************
36  */
37 
38 /**
39  * @addtogroup BLE
40  * @{
41  */
42 
43  /**
44  @addtogroup BLE_SEC Security Manager(SM)
45  @{
46  @brief Definitions and prototypes for the BLE_SEC interface.
47  */
48 
49 #ifndef __BLE_SEC_H__
50 #define __BLE_SEC_H__
51 
52 #include "ble_error.h"
53 #include <stdbool.h>
54 
55 /**@addtogroup BLE_SM_DEFINES Defines
56  * @{
57  */
58 /**@defgroup BLE_SEC_AUTH_FLAG SEC Auth Flag
59 * @{
60 */
61 #define BLE_SEC_AUTH_NONE 0 /**< No auth requirement. */
62 #define BLE_SEC_AUTH_BOND (1 << 0) /**< Bond flag. */
63 #define BLE_SEC_AUTH_MITM (1 << 2) /**< MITM flag. */
64 #define BLE_SEC_AUTH_SEC_CON (1 << 3) /**< Security connection flag. */
65 #define BLE_SEC_AUTH_KEY_PRESS_NOTIFY (1 << 4) /**< Key press notify flag. */
66 #define BLE_SEC_AUTH_ALL (AUTH_BOND | AUTH_MITM | AUTH_SEC_CON | AUTH_KEY_PRESS_NOTIFY) /**< All authentication flags are on. */
67 /**@} */
68 
69 /**@defgroup BLE_SEC_KEY_DIST_FLAG SEC Key Distribution Flag
70 * @{
71 */
72 #define BLE_SEC_KDIST_NONE 0 /**< No key needs to be distributed. */
73 #define BLE_SEC_KDIST_ENCKEY (1 << 0) /**< Distribute encryption and master identification info. */
74 #define BLE_SEC_KDIST_IDKEY (1 << 1) /**< Distribute identity and address info. */
75 #define BLE_SEC_KDIST_SIGNKEY (1 << 2) /**< Distribute signing info. */
76 #define BLE_SEC_KDIST_LINKKEY (1 << 3) /**< Distribute BR/EDR link key info. This flag only used for LE/BREDR. */
77 #define BLE_SEC_KDIST_ALL (BLE_SEC_KDIST_ENCKEY | BLE_SEC_KDIST_IDKEY | BLE_SEC_KDIST_SIGNKEY) /**< Distribute all info. */
78 #define BLE_BT_SEC_KDIST_ALL (BLE_SEC_KDIST_ALL | BLE_SEC_KDIST_LINKKEY) /**< Distribute all info for LE/BREDR. */
79 
80 /**@} */
81 /**@} */
82 
83 /**@addtogroup BLE_SEC_ENUMERATIONS Enumerations
84  * @{ */
85 /**@brief SEC IO Capability. */
86 typedef enum
87 {
88  BLE_SEC_IO_DISPLAY_ONLY = 0x00, /**< Display only. */
89  BLE_SEC_IO_DISPLAY_YES_NO = 0x01, /**< Display and input yes or no. */
90  BLE_SEC_IO_KEYBOARD_ONLY = 0x02, /**< Keyboard only. */
91  BLE_SEC_IO_NO_INPUT_NO_OUTPUT = 0x03, /**< No input and no output. */
92  BLE_SEC_IO_KEYBOARD_DISPLAY = 0x04 /**< Keyboard and display. */
94 
95 /**@brief SEC Encryption Request Type.
96  *@note These types indicate some operations need to interact with app during pair process.
97  */
98 typedef enum
99 {
100  BLE_SEC_PAIR_REQ, /**< Pair request. Apps need to decide whether to accept this request. */
101  BLE_SEC_TK_REQ, /**< TK request. Apps need to set the TK value. */
102  BLE_SEC_OOB_REQ, /**< OOB request. Apps need to set the OOB value. */
103  BLE_SEC_NC_REQ /**< Number comparison request. Apps need to check if it is the same number displayed in Master and Slave. */
105 
106 /**@brief SEC Key Press Notify. */
107 typedef enum
108 {
109  BLE_SEC_KEY_PRESS_STARTED = 0x00, /**< Passkey entry started. */
110  BLE_SEC_KEY_PRESS_ENTERED = 0x01, /**< Passkey digit entered. */
111  BLE_SEC_KEY_PRESS_ERASED = 0x02, /**< Passkey digit erased. */
112  BLE_SEC_KEY_PRESS_CLEARED = 0x03, /**< Passkey cleared. */
113  BLE_SEC_KEY_PRESS_COMPLETED = 0x04 /**< Passkey entry completed. */
115 
116 /**@brief SEC pair result. */
117 typedef enum
118 {
119  ENC_SUCCESS = 0x00, /**< Encrypt success. */
120  ENC_FAIL_PASSKEY_ENTRY_FAIL = 0x01, /**< The user input of passkey failed, for example, the user cancelled the operation. */
121  ENC_FAIL_OOB_NOT_AVAILBL = 0x02, /**< The OOB data is not available. */
122  ENC_FAIL_AUTH_REQ = 0x03, /**< The pairing procedure cannot be performed as authentication requirements cannot be met
123  due to IO incapability of one or both devices. */
124  ENC_FAIL_CONFIRM_VAL_FAIL = 0x04, /**< The confirm value does not match the calculated compare value. */
125  ENC_FAIL_PAIRING_NOT_SUPPORT = 0x05, /**< Pairing is not supported by the device. */
126  ENC_FAIL_ENCRPT_KEY_SIZE = 0x06, /**< The resultant encryption key size is insufficient for the security requirements of this device. */
127  ENC_FAIL_COMMAND_NOT_SUPPORT = 0x07, /**< The SMP command received is not supported on this device. */
128  ENC_FAIL_UNSPECIFIED = 0x08, /**< Pairing failed due to an unspecified reason. */
129  ENC_FAIL_REPEAT_ATTEMPT = 0x09, /**< Pairing or authentication procedure is disallowed because too little time has elapsed
130  since last pairing request or security request. */
131  ENC_FAIL_INVALID_PARAM = 0x0A, /**< The Invalid Parameters error code indicates that the command length is invalid
132  or that a parameter is outside of the specified range. */
133  ENC_FAIL_DHKEY_CHECK_FAIL = 0x0B, /**< Indicate to the remote device that the DHKey Check value received doesn't match the one calculated
134  by the local device. */
135  ENC_FAIL_NUM_CMP_FAIL = 0x0C, /**< Indicate that the confirm values in the numeric comparison protocol do not match. */
136  ENC_FAIL_BR_EDR_IN_PROGRESS = 0x0D, /**< Indicate that the pairing over the LE transport failed due to
137  a Pairing Request sent over the BR/EDR transport in process. */
138  ENC_FAIL_KEY_DRIV_GEN_NOT_ALLOW = 0x0E, /**< Indicate that the BR/EDR Link Key generated on the BR/EDR transport
139  cannot be used to derive and distribute keys for the LE transport. */
140  ENC_FAIL_LTK_MISSING = 0x0F, /**< Indicate the LTK of peer devices missing. */
142 
143 /**@brief SEC mode and level. */
144 typedef enum
145 {
146  BLE_SEC_MODE1_LEVEL1 = 0x00, /**< No security is needed. */
147  BLE_SEC_MODE1_LEVEL2 = 0x01, /**< Encrypted link is required. Unnecessary: MITM and SC. */
148  BLE_SEC_MODE1_LEVEL3 = 0x02, /**< Encrypted link is required. Necessary: MITM; unnecessary: SC. */
149  BLE_SEC_MODE1_LEVEL4 = 0x03, /**< Encrypted link is required. Necessary: MITM and SC. */
150  BLE_SEC_MODE2_LEVEL1 = 0x04, /**< Data signing is required. Unnecessary: MITM and SC. */
151  BLE_SEC_MODE2_LEVEL2 = 0x05, /**< Data signing is required. Necessary: MITM; unnecessary: SC. */
153 
154 /**@brief SEC TK type. */
155 typedef enum
156 {
157  BLE_SEC_TK_OOB = 0x00, /**<TK got from OOB (out of band) method. */
158  BLE_SEC_TK_DISPLAY, /**<TK generated and shall be displayed by local device. */
159  BLE_SEC_TK_KEY_ENTRY /**<TK shall be entered by user using device keyboard. */
161 
162 /**@brief Key missing reason. */
163 typedef enum
164 {
165  BLE_SEC_BOND_INFO_LOAD_FAILED = 0x00, /**<Bond information load failed. */
166  BLE_SEC_LTK_VALID_MASK_ERR, /**<LTK valid mask flag is false. */
167  BLE_SEC_EDIV_RAND_VALUE_ERR /**<Ediv and rand value not match. */
169 /** @} */
170 
171 /**@addtogroup BLE_SEC_STRUCTURES Structures
172  * @{ */
173 /**@brief SEC Parameter. */
174 typedef struct
175 {
176  ble_sec_mode_level_t level; /**< Set the minimum security level of the device, see @ref ble_sec_mode_level_t. */
177  ble_sec_io_cap_t io_cap; /**< Set the IO capability, see @ref ble_sec_io_cap_t. */
178  bool oob; /**< Indicate whether OOB is supported. */
179  uint8_t auth; /**< Set the auth, see @ref BLE_SEC_AUTH_FLAG. */
180  uint8_t key_size; /**< Indicate the supported maximum LTK size (range: 7-16). */
181  uint8_t ikey_dist; /**< Set the initial key distribution, see @ref BLE_SEC_KEY_DIST_FLAG. */
182  uint8_t rkey_dist; /**< Set the response key distribution, see @ref BLE_SEC_KEY_DIST_FLAG. */
184 
185 /**@brief TK value. */
186 typedef struct
187 {
188  uint8_t key[16]; /**< TK value. */
189 } ble_sec_tk_t;
190 
191 /**@brief SEC OOB value. */
192 typedef struct
193 {
194  uint8_t conf[16]; /**< Confirm value. */
195  uint8_t rand[16]; /**< Random value. */
196 } ble_sec_oob_t;
197 
198 /**@brief SEC Confirm encryption data. */
199 typedef union
200 {
201  ble_sec_tk_t tk; /**< TK value, see @ref ble_sec_tk_t. */
202  ble_sec_oob_t oob; /**< OOB value, see @ref ble_sec_oob_t. */
204 
205 /**@brief SEC Confirm encryption. */
206 typedef struct
207 {
208  ble_sec_enc_req_type_t req_type; /**< Request type, see @ref ble_sec_enc_req_type_t. */
209  bool accept; /**< Indicate whether to accept the request. */
210  ble_sec_cfm_enc_data_t data; /**< SEC Confirm encryption data, see @ref ble_sec_cfm_enc_data_t. */
212 
213 /**@brief SEC number comparison value. */
214 typedef struct
215 {
216  uint8_t value[4]; /**< Number comparison value (000000~999999). */
217 } ble_sec_nc_t;
218 
219 /**@brief SEC encryption request data. */
220 typedef union
221 {
222  ble_sec_tk_type_t tk_type; /**<TK type, see @ref ble_sec_tk_type_t. */
223  ble_sec_oob_t oob_data; /**<OOB data, see @ref ble_sec_oob_t. */
224  ble_sec_nc_t nc_data; /**<Number comparison data, see @ref ble_sec_nc_t. */
226 
227 /**@brief SEC encryption request. */
228 typedef struct
229 {
230  ble_sec_enc_req_type_t req_type; /**< Indicate the request type, @ref ble_sec_enc_req_type_t. */
231  ble_sec_enc_req_data_t data; /**< SEC encryption request data, @ref ble_sec_enc_req_data_t. */
233 
234  /**@brief Link Encrypte Request event for @ref BLE_SEC_EVT_LINK_ENC_REQUEST. */
235 typedef struct
236 {
237  ble_sec_enc_req_type_t req_type; /**< Indicate the request type, @ref ble_sec_enc_req_type_t. */
238  ble_sec_enc_req_data_t data; /**< SEC encryption request data, @ref ble_sec_enc_req_data_t. */
240 
241  /**@brief Link Encrypted event for @ref BLE_SEC_EVT_LINK_ENCRYPTED. */
242 typedef struct
243 {
244  uint8_t auth; /**< Auth type. */
246 
247 /**@brief Key Press Notify event for @ref BLE_SEC_EVT_KEY_PRESS_NTF. */
248 typedef struct
249 {
250  ble_sec_keypress_notify_t notify_type; /**< key Press Notify type. */
252 
253 /**@brief Key Missing event for @ref BLE_SEC_EVT_KEY_MISSING. */
254 typedef struct
255 {
256  ble_sec_key_missing_reason_t reason; /**< Keymissing reason. */
258 
259 /**@brief BLE Security event structure. */
260 typedef struct
261 {
262  uint8_t index; /**< Index of connection. */
263  union
264  {
265  ble_sec_evt_enc_req_t enc_req; /**< Link Encrypte Request event. */
266  ble_sec_evt_enc_ind_t enc_ind; /**< Link Encrypted event. */
267  ble_sec_evt_keypress_notify_t keypress_ntf; /**< Key Press Notify event. */
268  ble_sec_evt_key_missing_t key_missing; /**< Key Missing event. */
269  } params; /**< The parameters of sec events. */
270 } ble_sec_evt_t; /**< Event Parameters. */
271 
272 /** @} */
273 
274 /** @addtogroup BLE_SEC_FUNCTIONS Functions
275  * @{ */
276 /**
277  ****************************************************************************************
278  * @brief Set security parameter.
279  *
280 * @param[in] p_sec_param: Pointer to the security parameter structure, @ref ble_sec_param_t.
281  *
282  * @retval ::SDK_SUCCESS: The security parameter is successfully set to the BLE stack.
283  * @retval ::SDK_ERR_POINTER_NULL: Invalid pointer supplied.
284  * @retval ::SDK_ERR_INVALID_PARAM: Invalid parameter supplied.
285  ****************************************************************************************
286  */
287 uint16_t ble_sec_params_set(ble_sec_param_t *p_sec_param);
288 
289 /**
290  ****************************************************************************************
291  * @brief Start security encryption, this interface is used by both slave and master
292  *
293  * @note If the local device role is master, it will check that if the peer device is bonded firstly. If the peer device is bonded,
294  * the stack will encrypt the link directly, otherwise the stack will send a pair request to the peer device.
295  *
296  * @note If the local device role is slave, the stack will send a security request to the peer device.
297  *
298  * @param[in] conn_idx: ACL connection index, the first ACL connection index is 0, and increased one by one.
299  *
300  * @retval ::SDK_SUCCESS: The security encryption is successfully set to the BLE stack.
301  * @retval ::SDK_ERR_INVALID_CONN_IDX: Invalid connection index supplied.
302  ****************************************************************************************
303  */
304 uint16_t ble_sec_enc_start(uint8_t conn_idx);
305 
306 /**
307  ****************************************************************************************
308  * @brief Send the encrypt confirm information
309  *
310  * @param[in] conn_idx: ACL connection index, the first ACL connection index is 0, and increased one by one.
311  * @param[in] p_cfm_enc: Pointer to the confirm encryption structure, see @ref ble_sec_cfm_enc_t.
312  *
313  * @retval ::SDK_SUCCESS: The confirm encryption is successfully set to the BLE stack.
314  * @retval ::SDK_ERR_POINTER_NULL: Invalid pointer supplied.
315  * @retval ::SDK_ERR_INVALID_CONN_IDX: Invalid connection index supplied.
316  * @retval ::SDK_ERR_NO_RESOURCES: Not enough resources.
317  ****************************************************************************************
318  */
319 uint16_t ble_sec_enc_cfm(uint8_t conn_idx, const ble_sec_cfm_enc_t *p_cfm_enc);
320 
321 /**
322  ****************************************************************************************
323  * @brief Send key press notify
324  *
325  * @param[in] conn_idx: ACL connection index. The first ACL connection index is 0, and the index will be increased one by one.
326  * @param[in] notify_type: Key press notify type, see @ref ble_sec_keypress_notify_t.
327  *
328  * @retval ::SDK_SUCCESS: The key press notify type is successfully set to the BLE stack.
329  * @retval ::SDK_ERR_INVALID_CONN_IDX: Invalid connection index supplied.
330  * @retval ::SDK_ERR_NO_RESOURCES: Not enough resources.
331  ****************************************************************************************
332  */
333 uint16_t ble_sec_keypress_notify_send(uint8_t conn_idx, uint8_t notify_type);
334 /** @} */
335 
336 #endif
337 
338 /** @} */
339 /** @} */
ble_sec_enc_req_data_t::nc_data
ble_sec_nc_t nc_data
Definition: ble_sec.h:224
BLE_SEC_KEY_PRESS_COMPLETED
@ BLE_SEC_KEY_PRESS_COMPLETED
Definition: ble_sec.h:113
ENC_FAIL_ENCRPT_KEY_SIZE
@ ENC_FAIL_ENCRPT_KEY_SIZE
Definition: ble_sec.h:126
BLE_SEC_BOND_INFO_LOAD_FAILED
@ BLE_SEC_BOND_INFO_LOAD_FAILED
Definition: ble_sec.h:165
ENC_FAIL_COMMAND_NOT_SUPPORT
@ ENC_FAIL_COMMAND_NOT_SUPPORT
Definition: ble_sec.h:127
ble_sec_cfm_enc_data_t::oob
ble_sec_oob_t oob
Definition: ble_sec.h:202
ble_sec_nc_t
SEC number comparison value.
Definition: ble_sec.h:215
ENC_FAIL_AUTH_REQ
@ ENC_FAIL_AUTH_REQ
Definition: ble_sec.h:122
BLE_SEC_KEY_PRESS_CLEARED
@ BLE_SEC_KEY_PRESS_CLEARED
Definition: ble_sec.h:112
ENC_FAIL_INVALID_PARAM
@ ENC_FAIL_INVALID_PARAM
Definition: ble_sec.h:131
BLE_SEC_MODE2_LEVEL1
@ BLE_SEC_MODE2_LEVEL1
Definition: ble_sec.h:150
BLE_SEC_OOB_REQ
@ BLE_SEC_OOB_REQ
Definition: ble_sec.h:102
BLE_SEC_KEY_PRESS_STARTED
@ BLE_SEC_KEY_PRESS_STARTED
Definition: ble_sec.h:109
ENC_FAIL_KEY_DRIV_GEN_NOT_ALLOW
@ ENC_FAIL_KEY_DRIV_GEN_NOT_ALLOW
Definition: ble_sec.h:138
ble_sec_evt_keypress_notify_t
Key Press Notify event for BLE_SEC_EVT_KEY_PRESS_NTF.
Definition: ble_sec.h:249
ble_sec_evt_enc_req_t::req_type
ble_sec_enc_req_type_t req_type
Definition: ble_sec.h:237
BLE_SEC_TK_OOB
@ BLE_SEC_TK_OOB
Definition: ble_sec.h:157
ble_sec_cfm_enc_data_t::tk
ble_sec_tk_t tk
Definition: ble_sec.h:201
ble_sec_tk_t
TK value.
Definition: ble_sec.h:187
BLE_SEC_TK_KEY_ENTRY
@ BLE_SEC_TK_KEY_ENTRY
Definition: ble_sec.h:159
ble_sec_param_t::io_cap
ble_sec_io_cap_t io_cap
Definition: ble_sec.h:177
ble_sec_param_t::rkey_dist
uint8_t rkey_dist
Definition: ble_sec.h:182
ble_sec_evt_keypress_notify_t::notify_type
ble_sec_keypress_notify_t notify_type
Definition: ble_sec.h:250
ble_sec_param_t::oob
bool oob
Definition: ble_sec.h:178
ble_sec_evt_key_missing_t
Key Missing event for BLE_SEC_EVT_KEY_MISSING.
Definition: ble_sec.h:255
ble_sec_keypress_notify_send
uint16_t ble_sec_keypress_notify_send(uint8_t conn_idx, uint8_t notify_type)
Send key press notify.
ble_sec_cfm_enc_t
SEC Confirm encryption.
Definition: ble_sec.h:207
BLE_SEC_KEY_PRESS_ENTERED
@ BLE_SEC_KEY_PRESS_ENTERED
Definition: ble_sec.h:110
BLE_SEC_TK_DISPLAY
@ BLE_SEC_TK_DISPLAY
Definition: ble_sec.h:158
ble_sec_enc_req_t
SEC encryption request.
Definition: ble_sec.h:229
ble_sec_evt_enc_ind_t::auth
uint8_t auth
Definition: ble_sec.h:244
ble_sec_evt_enc_ind_t
Link Encrypted event for BLE_SEC_EVT_LINK_ENCRYPTED.
Definition: ble_sec.h:243
ENC_FAIL_PASSKEY_ENTRY_FAIL
@ ENC_FAIL_PASSKEY_ENTRY_FAIL
Definition: ble_sec.h:120
ENC_FAIL_OOB_NOT_AVAILBL
@ ENC_FAIL_OOB_NOT_AVAILBL
Definition: ble_sec.h:121
ble_sec_evt_key_missing_t::reason
ble_sec_key_missing_reason_t reason
Definition: ble_sec.h:256
ble_sec_evt_enc_req_t
Link Encrypte Request event for BLE_SEC_EVT_LINK_ENC_REQUEST.
Definition: ble_sec.h:236
ble_sec_enc_req_data_t::tk_type
ble_sec_tk_type_t tk_type
Definition: ble_sec.h:222
BLE_SEC_MODE1_LEVEL1
@ BLE_SEC_MODE1_LEVEL1
Definition: ble_sec.h:146
ble_sec_cfm_enc_t::data
ble_sec_cfm_enc_data_t data
Definition: ble_sec.h:210
ble_sec_enc_req_data_t
SEC encryption request data.
Definition: ble_sec.h:221
ble_error.h
File that contains error codes.
ENC_FAIL_PAIRING_NOT_SUPPORT
@ ENC_FAIL_PAIRING_NOT_SUPPORT
Definition: ble_sec.h:125
BLE_SEC_MODE1_LEVEL2
@ BLE_SEC_MODE1_LEVEL2
Definition: ble_sec.h:147
BLE_SEC_KEY_PRESS_ERASED
@ BLE_SEC_KEY_PRESS_ERASED
Definition: ble_sec.h:111
ble_sec_evt_t::enc_req
ble_sec_evt_enc_req_t enc_req
Definition: ble_sec.h:265
ble_sec_enc_cfm
uint16_t ble_sec_enc_cfm(uint8_t conn_idx, const ble_sec_cfm_enc_t *p_cfm_enc)
Send the encrypt confirm information.
ble_sec_cfm_enc_t::accept
bool accept
Definition: ble_sec.h:209
BLE_SEC_IO_DISPLAY_ONLY
@ BLE_SEC_IO_DISPLAY_ONLY
Definition: ble_sec.h:88
ble_sec_enc_req_t::req_type
ble_sec_enc_req_type_t req_type
Definition: ble_sec.h:230
ENC_FAIL_DHKEY_CHECK_FAIL
@ ENC_FAIL_DHKEY_CHECK_FAIL
Definition: ble_sec.h:133
ble_sec_param_t::key_size
uint8_t key_size
Definition: ble_sec.h:180
ENC_FAIL_CONFIRM_VAL_FAIL
@ ENC_FAIL_CONFIRM_VAL_FAIL
Definition: ble_sec.h:124
BLE_SEC_MODE1_LEVEL3
@ BLE_SEC_MODE1_LEVEL3
Definition: ble_sec.h:148
ble_sec_mode_level_t
ble_sec_mode_level_t
SEC mode and level.
Definition: ble_sec.h:145
ENC_FAIL_REPEAT_ATTEMPT
@ ENC_FAIL_REPEAT_ATTEMPT
Definition: ble_sec.h:129
ble_sec_evt_enc_req_t::data
ble_sec_enc_req_data_t data
Definition: ble_sec.h:238
ble_sec_cfm_enc_t::req_type
ble_sec_enc_req_type_t req_type
Definition: ble_sec.h:208
ble_sec_tk_type_t
ble_sec_tk_type_t
SEC TK type.
Definition: ble_sec.h:156
BLE_SEC_TK_REQ
@ BLE_SEC_TK_REQ
Definition: ble_sec.h:101
BLE_SEC_IO_NO_INPUT_NO_OUTPUT
@ BLE_SEC_IO_NO_INPUT_NO_OUTPUT
Definition: ble_sec.h:91
ble_sec_enc_ind_t
ble_sec_enc_ind_t
SEC pair result.
Definition: ble_sec.h:118
ble_sec_keypress_notify_t
ble_sec_keypress_notify_t
SEC Key Press Notify.
Definition: ble_sec.h:108
ENC_FAIL_LTK_MISSING
@ ENC_FAIL_LTK_MISSING
Definition: ble_sec.h:140
BLE_SEC_NC_REQ
@ BLE_SEC_NC_REQ
Definition: ble_sec.h:103
ble_sec_enc_start
uint16_t ble_sec_enc_start(uint8_t conn_idx)
Start security encryption, this interface is used by both slave and master.
ble_sec_enc_req_data_t::oob_data
ble_sec_oob_t oob_data
Definition: ble_sec.h:223
ble_sec_key_missing_reason_t
ble_sec_key_missing_reason_t
Key missing reason.
Definition: ble_sec.h:164
BLE_SEC_IO_KEYBOARD_DISPLAY
@ BLE_SEC_IO_KEYBOARD_DISPLAY
Definition: ble_sec.h:92
BLE_SEC_LTK_VALID_MASK_ERR
@ BLE_SEC_LTK_VALID_MASK_ERR
Definition: ble_sec.h:166
ble_sec_enc_req_t::data
ble_sec_enc_req_data_t data
Definition: ble_sec.h:231
ble_sec_cfm_enc_data_t
SEC Confirm encryption data.
Definition: ble_sec.h:200
ENC_FAIL_BR_EDR_IN_PROGRESS
@ ENC_FAIL_BR_EDR_IN_PROGRESS
Definition: ble_sec.h:136
BLE_SEC_MODE2_LEVEL2
@ BLE_SEC_MODE2_LEVEL2
Definition: ble_sec.h:151
BLE_SEC_IO_KEYBOARD_ONLY
@ BLE_SEC_IO_KEYBOARD_ONLY
Definition: ble_sec.h:90
ble_sec_evt_t::enc_ind
ble_sec_evt_enc_ind_t enc_ind
Definition: ble_sec.h:266
BLE_SEC_PAIR_REQ
@ BLE_SEC_PAIR_REQ
Definition: ble_sec.h:100
BLE_SEC_IO_DISPLAY_YES_NO
@ BLE_SEC_IO_DISPLAY_YES_NO
Definition: ble_sec.h:89
ENC_FAIL_UNSPECIFIED
@ ENC_FAIL_UNSPECIFIED
Definition: ble_sec.h:128
ble_sec_io_cap_t
ble_sec_io_cap_t
SEC IO Capability.
Definition: ble_sec.h:87
ble_sec_evt_t::index
uint8_t index
Definition: ble_sec.h:262
ENC_FAIL_NUM_CMP_FAIL
@ ENC_FAIL_NUM_CMP_FAIL
Definition: ble_sec.h:135
BLE_SEC_EDIV_RAND_VALUE_ERR
@ BLE_SEC_EDIV_RAND_VALUE_ERR
Definition: ble_sec.h:167
ble_sec_param_t
SEC Parameter.
Definition: ble_sec.h:175
ble_sec_evt_t::keypress_ntf
ble_sec_evt_keypress_notify_t keypress_ntf
Definition: ble_sec.h:267
ble_sec_param_t::ikey_dist
uint8_t ikey_dist
Definition: ble_sec.h:181
ble_sec_params_set
uint16_t ble_sec_params_set(ble_sec_param_t *p_sec_param)
Set security parameter.
BLE_SEC_MODE1_LEVEL4
@ BLE_SEC_MODE1_LEVEL4
Definition: ble_sec.h:149
ENC_SUCCESS
@ ENC_SUCCESS
Definition: ble_sec.h:119
ble_sec_param_t::auth
uint8_t auth
Definition: ble_sec.h:179
ble_sec_evt_t
BLE Security event structure.
Definition: ble_sec.h:261
ble_sec_enc_req_type_t
ble_sec_enc_req_type_t
SEC Encryption Request Type.
Definition: ble_sec.h:99
ble_sec_evt_t::key_missing
ble_sec_evt_key_missing_t key_missing
Definition: ble_sec.h:268
ble_sec_param_t::level
ble_sec_mode_level_t level
Definition: ble_sec.h:176
ble_sec_oob_t
SEC OOB value.
Definition: ble_sec.h:193