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 (BLE_SEC_AUTH_BOND | BLE_SEC_AUTH_MITM | BLE_SEC_AUTH_SEC_CON | BLE_SEC_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. */
93 } ble_sec_io_cap_t;
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. */
104 } ble_sec_enc_req_type_t;
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. */
114 } ble_sec_keypress_notify_t;
115
116 /**@brief SEC mode and level. */
117 typedef enum
118 {
119 BLE_SEC_MODE1_LEVEL1 = 0x00, /**< No security is needed. */
120 BLE_SEC_MODE1_LEVEL2 = 0x01, /**< Encrypted link is required. Unnecessary: MITM and SC. */
121 BLE_SEC_MODE1_LEVEL3 = 0x02, /**< Encrypted link is required. Necessary: MITM; unnecessary: SC. */
122 BLE_SEC_MODE1_LEVEL4 = 0x03, /**< Encrypted link is required. Necessary: MITM and SC. */
123 BLE_SEC_MODE2_LEVEL1 = 0x04, /**< Data signing is required. Unnecessary: MITM and SC. */
124 BLE_SEC_MODE2_LEVEL2 = 0x05, /**< Data signing is required. Necessary: MITM; unnecessary: SC. */
125 } ble_sec_mode_level_t;
126
127 /**@brief SEC TK type. */
128 typedef enum
129 {
130 BLE_SEC_TK_OOB = 0x00, /**<TK got from OOB (out of band) method. */
131 BLE_SEC_TK_DISPLAY, /**<TK generated and shall be displayed by local device. */
132 BLE_SEC_TK_KEY_ENTRY /**<TK shall be entered by user using device keyboard. */
133 } ble_sec_tk_type_t;
134
135 /**@brief Key missing reason. */
136 typedef enum
137 {
138 BLE_SEC_BOND_INFO_LOAD_FAILED = 0x00, /**<Bond information load failed. */
139 BLE_SEC_LTK_VALID_MASK_ERR, /**<LTK valid mask flag is false. */
140 BLE_SEC_EDIV_RAND_VALUE_ERR /**<Ediv and rand value not match. */
141 } ble_sec_key_missing_reason_t;
142 /** @} */
143
144 /**@addtogroup BLE_SEC_STRUCTURES Structures
145 * @{ */
146 /**@brief SEC Parameter. */
147 typedef struct
148 {
149 ble_sec_mode_level_t level; /**< Set the minimum security level of the device, see @ref ble_sec_mode_level_t. */
150 ble_sec_io_cap_t io_cap; /**< Set the IO capability, see @ref ble_sec_io_cap_t. */
151 bool oob; /**< Indicate whether OOB is supported. */
152 uint8_t auth; /**< Set the auth, see @ref BLE_SEC_AUTH_FLAG. */
153 uint8_t key_size; /**< Indicate the supported maximum LTK size (range: 7-16). */
154 uint8_t ikey_dist; /**< Set the initial key distribution, see @ref BLE_SEC_KEY_DIST_FLAG. */
155 uint8_t rkey_dist; /**< Set the response key distribution, see @ref BLE_SEC_KEY_DIST_FLAG. */
156 } ble_sec_param_t;
157
158 /**@brief TK value. */
159 typedef struct
160 {
161 uint8_t key[16]; /**< TK value. */
162 } ble_sec_tk_t;
163
164 /**@brief SEC OOB value. */
165 typedef struct
166 {
167 uint8_t conf[16]; /**< Confirm value. */
168 uint8_t rand[16]; /**< Random value. */
169 } ble_sec_oob_t;
170
171 /**@brief SEC Confirm encryption data. */
172 typedef union
173 {
174 ble_sec_tk_t tk; /**< TK value, see @ref ble_sec_tk_t. */
175 ble_sec_oob_t oob; /**< OOB value, see @ref ble_sec_oob_t. */
176 } ble_sec_cfm_enc_data_t;
177
178 /**@brief SEC Confirm encryption. */
179 typedef struct
180 {
181 ble_sec_enc_req_type_t req_type; /**< Request type, see @ref ble_sec_enc_req_type_t. */
182 bool accept; /**< Indicate whether to accept the request. */
183 ble_sec_cfm_enc_data_t data; /**< SEC Confirm encryption data, see @ref ble_sec_cfm_enc_data_t. */
184 } ble_sec_cfm_enc_t;
185
186 /**@brief SEC number comparison value. */
187 typedef struct
188 {
189 uint8_t value[4]; /**< Number comparison value (000000~999999). */
190 } ble_sec_nc_t;
191
192 /**@brief SEC encryption request data. */
193 typedef union
194 {
195 ble_sec_tk_type_t tk_type; /**<TK type, see @ref ble_sec_tk_type_t. */
196 ble_sec_oob_t oob_data; /**<OOB data, see @ref ble_sec_oob_t. */
197 ble_sec_nc_t nc_data; /**<Number comparison data, see @ref ble_sec_nc_t. */
198 } ble_sec_enc_req_data_t;
199
200 /**@brief SEC encryption request. */
201 typedef struct
202 {
203 ble_sec_enc_req_type_t req_type; /**< Indicate the request type, @ref ble_sec_enc_req_type_t. */
204 ble_sec_enc_req_data_t data; /**< SEC encryption request data, @ref ble_sec_enc_req_data_t. */
205 } ble_sec_enc_req_t;
206
207 /**@brief Link Encrypte Request event for @ref BLE_SEC_EVT_LINK_ENC_REQUEST. */
208 typedef struct
209 {
210 ble_sec_enc_req_type_t req_type; /**< Indicate the request type, @ref ble_sec_enc_req_type_t. */
211 ble_sec_enc_req_data_t data; /**< SEC encryption request data, @ref ble_sec_enc_req_data_t. */
212 } ble_sec_evt_enc_req_t;
213
214 /**@brief Link Encrypted event for @ref BLE_SEC_EVT_LINK_ENCRYPTED. */
215 typedef struct
216 {
217 uint8_t auth; /**< Auth type. */
218 } ble_sec_evt_enc_ind_t;
219
220 /**@brief Key Press Notify event for @ref BLE_SEC_EVT_KEY_PRESS_NTF. */
221 typedef struct
222 {
223 ble_sec_keypress_notify_t notify_type; /**< key Press Notify type. */
224 } ble_sec_evt_keypress_notify_t;
225
226 /**@brief Key Missing event for @ref BLE_SEC_EVT_KEY_MISSING. */
227 typedef struct
228 {
229 ble_sec_key_missing_reason_t reason; /**< Keymissing reason. */
230 } ble_sec_evt_key_missing_t;
231
232 /**@brief BLE Security event structure. */
233 typedef struct
234 {
235 uint8_t index; /**< Index of connection. */
236 union
237 {
238 ble_sec_evt_enc_req_t enc_req; /**< Link Encrypte Request event. */
239 ble_sec_evt_enc_ind_t enc_ind; /**< Link Encrypted event. */
240 ble_sec_evt_keypress_notify_t keypress_ntf; /**< Key Press Notify event. */
241 ble_sec_evt_key_missing_t key_missing; /**< Key Missing event. */
242 } params; /**< The parameters of sec events. */
243 } ble_sec_evt_t; /**< Event Parameters. */
244
245 /** @} */
246
247 /** @addtogroup BLE_SEC_FUNCTIONS Functions
248 * @{ */
249 /**
250 ****************************************************************************************
251 * @brief Set security parameter.
252 *
253 * @param[in] p_sec_param: Pointer to the security parameter structure, @ref ble_sec_param_t.
254 *
255 * @retval ::SDK_SUCCESS: The security parameter is successfully set to the BLE stack.
256 * @retval ::SDK_ERR_POINTER_NULL: Invalid pointer supplied.
257 * @retval ::SDK_ERR_INVALID_PARAM: Invalid parameter supplied.
258 ****************************************************************************************
259 */
260 uint16_t ble_sec_params_set(ble_sec_param_t *p_sec_param);
261
262 /**
263 ****************************************************************************************
264 * @brief Start security encryption, this interface is used by both slave and master
265 *
266 * @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,
267 * the stack will encrypt the link directly, otherwise the stack will send a pair request to the peer device.
268 *
269 * @note If the local device role is slave, the stack will send a security request to the peer device.
270 *
271 * @param[in] conn_idx: ACL connection index, the first ACL connection index is 0, and increased one by one.
272 *
273 * @retval ::SDK_SUCCESS: The security encryption is successfully set to the BLE stack.
274 * @retval ::SDK_ERR_INVALID_CONN_IDX: Invalid connection index supplied.
275 ****************************************************************************************
276 */
277 uint16_t ble_sec_enc_start(uint8_t conn_idx);
278
279 /**
280 ****************************************************************************************
281 * @brief Send pair request, this interface is used only by master.
282 *
283 * @note Invoke this api, the master will send pair request whether the peer device is bonded or not.
284 *
285 * @param[in] conn_idx: ACL connection index, the first ACL connection index is 0, and increased one by one.
286 *
287 * @retval ::SDK_SUCCESS: Send pair request is successfully set to the BLE stack.
288 * @retval ::SDK_ERR_INVALID_CONN_IDX: Invalid connection index supplied.
289 * @retval ::SDK_ERR_DISALLOWED: Operation is disallowed.
290 ****************************************************************************************
291 */
292 uint16_t ble_sec_send_pair_req(uint8_t conn_idx);
293
294 /**
295 ****************************************************************************************
296 * @brief Send the encrypt confirm information
297 *
298 * @param[in] conn_idx: ACL connection index, the first ACL connection index is 0, and increased one by one.
299 * @param[in] p_cfm_enc: Pointer to the confirm encryption structure, see @ref ble_sec_cfm_enc_t.
300 *
301 * @retval ::SDK_SUCCESS: The confirm encryption is successfully set to the BLE stack.
302 * @retval ::SDK_ERR_POINTER_NULL: Invalid pointer supplied.
303 * @retval ::SDK_ERR_INVALID_CONN_IDX: Invalid connection index supplied.
304 * @retval ::SDK_ERR_NO_RESOURCES: Not enough resources.
305 ****************************************************************************************
306 */
307 uint16_t ble_sec_enc_cfm(uint8_t conn_idx, const ble_sec_cfm_enc_t *p_cfm_enc);
308
309 /**
310 ****************************************************************************************
311 * @brief Send key press notify
312 *
313 * @param[in] conn_idx: ACL connection index. The first ACL connection index is 0, and the index will be increased one by one.
314 * @param[in] notify_type: Key press notify type, see @ref ble_sec_keypress_notify_t.
315 *
316 * @retval ::SDK_SUCCESS: The key press notify type is successfully set to the BLE stack.
317 * @retval ::SDK_ERR_INVALID_CONN_IDX: Invalid connection index supplied.
318 * @retval ::SDK_ERR_NO_RESOURCES: Not enough resources.
319 ****************************************************************************************
320 */
321 uint16_t ble_sec_keypress_notify_send(uint8_t conn_idx, uint8_t notify_type);
322 /** @} */
323
324 #endif
325
326 /** @} */
327 /** @} */
ble_sec_enc_req_data_t::nc_data
ble_sec_nc_t nc_data
Definition: ble_sec.h:197
BLE_SEC_KEY_PRESS_COMPLETED
@ BLE_SEC_KEY_PRESS_COMPLETED
Definition: ble_sec.h:113
BLE_SEC_BOND_INFO_LOAD_FAILED
@ BLE_SEC_BOND_INFO_LOAD_FAILED
Definition: ble_sec.h:138
ble_sec_cfm_enc_data_t::oob
ble_sec_oob_t oob
Definition: ble_sec.h:175
ble_sec_nc_t
SEC number comparison value.
Definition: ble_sec.h:188
BLE_SEC_KEY_PRESS_CLEARED
@ BLE_SEC_KEY_PRESS_CLEARED
Definition: ble_sec.h:112
BLE_SEC_MODE2_LEVEL1
@ BLE_SEC_MODE2_LEVEL1
Definition: ble_sec.h:123
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
ble_sec_send_pair_req
uint16_t ble_sec_send_pair_req(uint8_t conn_idx)
Send pair request, this interface is used only by master.
ble_sec_evt_keypress_notify_t
Key Press Notify event for BLE_SEC_EVT_KEY_PRESS_NTF.
Definition: ble_sec.h:222
ble_sec_evt_enc_req_t::req_type
ble_sec_enc_req_type_t req_type
Definition: ble_sec.h:210
BLE_SEC_TK_OOB
@ BLE_SEC_TK_OOB
Definition: ble_sec.h:130
ble_sec_cfm_enc_data_t::tk
ble_sec_tk_t tk
Definition: ble_sec.h:174
ble_sec_tk_t
TK value.
Definition: ble_sec.h:160
BLE_SEC_TK_KEY_ENTRY
@ BLE_SEC_TK_KEY_ENTRY
Definition: ble_sec.h:132
ble_sec_param_t::io_cap
ble_sec_io_cap_t io_cap
Definition: ble_sec.h:150
ble_sec_param_t::rkey_dist
uint8_t rkey_dist
Definition: ble_sec.h:155
ble_sec_evt_keypress_notify_t::notify_type
ble_sec_keypress_notify_t notify_type
Definition: ble_sec.h:223
ble_sec_param_t::oob
bool oob
Definition: ble_sec.h:151
ble_sec_evt_key_missing_t
Key Missing event for BLE_SEC_EVT_KEY_MISSING.
Definition: ble_sec.h:228
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:180
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:131
ble_sec_enc_req_t
SEC encryption request.
Definition: ble_sec.h:202
ble_sec_evt_enc_ind_t::auth
uint8_t auth
Definition: ble_sec.h:217
ble_sec_evt_enc_ind_t
Link Encrypted event for BLE_SEC_EVT_LINK_ENCRYPTED.
Definition: ble_sec.h:216
ble_sec_evt_key_missing_t::reason
ble_sec_key_missing_reason_t reason
Definition: ble_sec.h:229
ble_sec_evt_enc_req_t
Link Encrypte Request event for BLE_SEC_EVT_LINK_ENC_REQUEST.
Definition: ble_sec.h:209
ble_sec_enc_req_data_t::tk_type
ble_sec_tk_type_t tk_type
Definition: ble_sec.h:195
BLE_SEC_MODE1_LEVEL1
@ BLE_SEC_MODE1_LEVEL1
Definition: ble_sec.h:119
ble_sec_cfm_enc_t::data
ble_sec_cfm_enc_data_t data
Definition: ble_sec.h:183
ble_sec_enc_req_data_t
SEC encryption request data.
Definition: ble_sec.h:194
ble_error.h
File that contains error codes.
BLE_SEC_MODE1_LEVEL2
@ BLE_SEC_MODE1_LEVEL2
Definition: ble_sec.h:120
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:238
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:182
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:203
ble_sec_param_t::key_size
uint8_t key_size
Definition: ble_sec.h:153
BLE_SEC_MODE1_LEVEL3
@ BLE_SEC_MODE1_LEVEL3
Definition: ble_sec.h:121
ble_sec_mode_level_t
ble_sec_mode_level_t
SEC mode and level.
Definition: ble_sec.h:118
ble_sec_evt_enc_req_t::data
ble_sec_enc_req_data_t data
Definition: ble_sec.h:211
ble_sec_cfm_enc_t::req_type
ble_sec_enc_req_type_t req_type
Definition: ble_sec.h:181
ble_sec_tk_type_t
ble_sec_tk_type_t
SEC TK type.
Definition: ble_sec.h:129
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_keypress_notify_t
ble_sec_keypress_notify_t
SEC Key Press Notify.
Definition: ble_sec.h:108
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:196
ble_sec_key_missing_reason_t
ble_sec_key_missing_reason_t
Key missing reason.
Definition: ble_sec.h:137
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:139
ble_sec_enc_req_t::data
ble_sec_enc_req_data_t data
Definition: ble_sec.h:204
ble_sec_cfm_enc_data_t
SEC Confirm encryption data.
Definition: ble_sec.h:173
BLE_SEC_MODE2_LEVEL2
@ BLE_SEC_MODE2_LEVEL2
Definition: ble_sec.h:124
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:239
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
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:235
BLE_SEC_EDIV_RAND_VALUE_ERR
@ BLE_SEC_EDIV_RAND_VALUE_ERR
Definition: ble_sec.h:140
ble_sec_param_t
SEC Parameter.
Definition: ble_sec.h:148
ble_sec_evt_t::keypress_ntf
ble_sec_evt_keypress_notify_t keypress_ntf
Definition: ble_sec.h:240
ble_sec_param_t::ikey_dist
uint8_t ikey_dist
Definition: ble_sec.h:154
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:122
ble_sec_param_t::auth
uint8_t auth
Definition: ble_sec.h:152
ble_sec_evt_t
BLE Security event structure.
Definition: ble_sec.h:234
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:241
ble_sec_param_t::level
ble_sec_mode_level_t level
Definition: ble_sec.h:149
ble_sec_oob_t
SEC OOB value.
Definition: ble_sec.h:166