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. */
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 Link Encrypte Request event for @ref BLE_SEC_EVT_LINK_ENC_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_evt_enc_req_t;
206
207 /**@brief Link Encrypted event for @ref BLE_SEC_EVT_LINK_ENCRYPTED. */
208 typedef struct
209 {
210 uint8_t auth; /**< Auth type. */
211 } ble_sec_evt_enc_ind_t;
212
213 /**@brief Key Press Notify event for @ref BLE_SEC_EVT_KEY_PRESS_NTF. */
214 typedef struct
215 {
216 ble_sec_keypress_notify_t notify_type; /**< key Press Notify type. */
217 } ble_sec_evt_keypress_notify_t;
218
219 /**@brief Key Missing event for @ref BLE_SEC_EVT_KEY_MISSING. */
220 typedef struct
221 {
222 ble_sec_key_missing_reason_t reason; /**< Keymissing reason. */
223 } ble_sec_evt_key_missing_t;
224
225 /**@brief BLE Security event structure. */
226 typedef struct
227 {
228 uint8_t index; /**< Index of connection. */
229 union
230 {
231 ble_sec_evt_enc_req_t enc_req; /**< Link Encrypte Request event. */
232 ble_sec_evt_enc_ind_t enc_ind; /**< Link Encrypted event. */
233 ble_sec_evt_keypress_notify_t keypress_ntf; /**< Key Press Notify event. */
234 ble_sec_evt_key_missing_t key_missing; /**< Key Missing event. */
235 } params; /**< The parameters of sec events. */
236 } ble_sec_evt_t; /**< Event Parameters. */
237
238 /** @} */
239
240 /** @addtogroup BLE_SEC_FUNCTIONS Functions
241 * @{ */
242 /**
243 ****************************************************************************************
244 * @brief Set security parameter.
245 *
246 * @param[in] p_sec_param: Pointer to the security parameter structure, @ref ble_sec_param_t.
247 *
248 * @retval ::SDK_SUCCESS: The security parameter is successfully set to the BLE stack.
249 * @retval ::SDK_ERR_POINTER_NULL: Invalid pointer supplied.
250 * @retval ::SDK_ERR_INVALID_PARAM: Invalid parameter supplied.
251 ****************************************************************************************
252 */
253 uint16_t ble_sec_params_set(ble_sec_param_t *p_sec_param);
254
255 /**
256 ****************************************************************************************
257 * @brief Start security encryption, this interface is used by both slave and master
258 *
259 * @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,
260 * the stack will encrypt the link directly, otherwise the stack will send a pair request to the peer device.
261 *
262 * @note If the local device role is slave, the stack will send a security request to the peer device.
263 *
264 * @param[in] conn_idx: ACL connection index, the first ACL connection index is 0, and increased one by one.
265 *
266 * @retval ::SDK_SUCCESS: The security encryption is successfully set to the BLE stack.
267 * @retval ::SDK_ERR_INVALID_CONN_IDX: Invalid connection index supplied.
268 ****************************************************************************************
269 */
270 uint16_t ble_sec_enc_start(uint8_t conn_idx);
271
272 /**
273 ****************************************************************************************
274 * @brief Send pair request, this interface is used only by master.
275 *
276 * @note Invoke this api, the master will send pair request whether the peer device is bonded or not.
277 *
278 * @param[in] conn_idx: ACL connection index, the first ACL connection index is 0, and increased one by one.
279 *
280 * @retval ::SDK_SUCCESS: Send pair request is successfully set to the BLE stack.
281 * @retval ::SDK_ERR_INVALID_CONN_IDX: Invalid connection index supplied.
282 * @retval ::SDK_ERR_DISALLOWED: Operation is disallowed.
283 ****************************************************************************************
284 */
285 uint16_t ble_sec_send_pair_req(uint8_t conn_idx);
286
287 /**
288 ****************************************************************************************
289 * @brief Send the encrypt confirm information
290 *
291 * @param[in] conn_idx: ACL connection index, the first ACL connection index is 0, and increased one by one.
292 * @param[in] p_cfm_enc: Pointer to the confirm encryption structure, see @ref ble_sec_cfm_enc_t.
293 *
294 * @retval ::SDK_SUCCESS: The confirm encryption is successfully set to the BLE stack.
295 * @retval ::SDK_ERR_POINTER_NULL: Invalid pointer supplied.
296 * @retval ::SDK_ERR_INVALID_CONN_IDX: Invalid connection index supplied.
297 * @retval ::SDK_ERR_NO_RESOURCES: Not enough resources.
298 ****************************************************************************************
299 */
300 uint16_t ble_sec_enc_cfm(uint8_t conn_idx, const ble_sec_cfm_enc_t *p_cfm_enc);
301
302 /**
303 ****************************************************************************************
304 * @brief Send key press notify
305 *
306 * @param[in] conn_idx: ACL connection index. The first ACL connection index is 0, and the index will be increased one by one.
307 * @param[in] notify_type: Key press notify type, see @ref ble_sec_keypress_notify_t.
308 *
309 * @retval ::SDK_SUCCESS: The key press notify type is successfully set to the BLE stack.
310 * @retval ::SDK_ERR_INVALID_CONN_IDX: Invalid connection index supplied.
311 * @retval ::SDK_ERR_NO_RESOURCES: Not enough resources.
312 ****************************************************************************************
313 */
314 uint16_t ble_sec_keypress_notify_send(uint8_t conn_idx, uint8_t notify_type);
315 /** @} */
316
317 #endif
318
319 /** @} */
320 /** @} */
ble_sec_enc_req_data_t::nc_data
ble_sec_nc_t nc_data
Number comparison data, see ble_sec_nc_t.
Definition: ble_sec.h:197
BLE_SEC_KEY_PRESS_COMPLETED
@ BLE_SEC_KEY_PRESS_COMPLETED
Passkey entry completed.
Definition: ble_sec.h:113
BLE_SEC_BOND_INFO_LOAD_FAILED
@ BLE_SEC_BOND_INFO_LOAD_FAILED
Bond information load failed.
Definition: ble_sec.h:138
ble_sec_cfm_enc_data_t::oob
ble_sec_oob_t oob
OOB value, see ble_sec_oob_t.
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
Passkey cleared.
Definition: ble_sec.h:112
BLE_SEC_MODE2_LEVEL1
@ BLE_SEC_MODE2_LEVEL1
Data signing is required.
Definition: ble_sec.h:123
BLE_SEC_OOB_REQ
@ BLE_SEC_OOB_REQ
OOB request.
Definition: ble_sec.h:102
BLE_SEC_KEY_PRESS_STARTED
@ BLE_SEC_KEY_PRESS_STARTED
Passkey entry 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:215
ble_sec_evt_enc_req_t::req_type
ble_sec_enc_req_type_t req_type
Indicate the request type, ble_sec_enc_req_type_t.
Definition: ble_sec.h:203
BLE_SEC_TK_OOB
@ BLE_SEC_TK_OOB
TK got from OOB (out of band) method.
Definition: ble_sec.h:130
ble_sec_cfm_enc_data_t::tk
ble_sec_tk_t tk
TK value, see ble_sec_tk_t.
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
TK shall be entered by user using device keyboard.
Definition: ble_sec.h:132
ble_sec_param_t::io_cap
ble_sec_io_cap_t io_cap
Set the IO capability, see ble_sec_io_cap_t.
Definition: ble_sec.h:150
ble_sec_param_t::rkey_dist
uint8_t rkey_dist
Set the response key distribution, see SEC Key Distribution Flag.
Definition: ble_sec.h:155
ble_sec_evt_keypress_notify_t::notify_type
ble_sec_keypress_notify_t notify_type
key Press Notify type.
Definition: ble_sec.h:216
ble_sec_param_t::oob
bool oob
Indicate whether OOB is supported.
Definition: ble_sec.h:151
ble_sec_evt_key_missing_t
Key Missing event for BLE_SEC_EVT_KEY_MISSING.
Definition: ble_sec.h:221
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
Passkey digit entered.
Definition: ble_sec.h:110
BLE_SEC_TK_DISPLAY
@ BLE_SEC_TK_DISPLAY
TK generated and shall be displayed by local device.
Definition: ble_sec.h:131
ble_sec_evt_enc_ind_t::auth
uint8_t auth
Auth type.
Definition: ble_sec.h:210
ble_sec_evt_enc_ind_t
Link Encrypted event for BLE_SEC_EVT_LINK_ENCRYPTED.
Definition: ble_sec.h:209
ble_sec_evt_key_missing_t::reason
ble_sec_key_missing_reason_t reason
Keymissing reason.
Definition: ble_sec.h:222
ble_sec_evt_enc_req_t
Link Encrypte Request event for BLE_SEC_EVT_LINK_ENC_REQUEST.
Definition: ble_sec.h:202
ble_sec_enc_req_data_t::tk_type
ble_sec_tk_type_t tk_type
TK type, see ble_sec_tk_type_t.
Definition: ble_sec.h:195
BLE_SEC_MODE1_LEVEL1
@ BLE_SEC_MODE1_LEVEL1
No security is needed.
Definition: ble_sec.h:119
ble_sec_cfm_enc_t::data
ble_sec_cfm_enc_data_t data
SEC Confirm encryption data, see ble_sec_cfm_enc_data_t.
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
Encrypted link is required.
Definition: ble_sec.h:120
BLE_SEC_KEY_PRESS_ERASED
@ BLE_SEC_KEY_PRESS_ERASED
Passkey digit erased.
Definition: ble_sec.h:111
ble_sec_evt_t::enc_req
ble_sec_evt_enc_req_t enc_req
Link Encrypte Request event.
Definition: ble_sec.h:231
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
Indicate whether to accept the request.
Definition: ble_sec.h:182
BLE_SEC_IO_DISPLAY_ONLY
@ BLE_SEC_IO_DISPLAY_ONLY
Display only.
Definition: ble_sec.h:88
ble_sec_param_t::key_size
uint8_t key_size
Indicate the supported maximum LTK size (range: 7-16).
Definition: ble_sec.h:153
BLE_SEC_MODE1_LEVEL3
@ BLE_SEC_MODE1_LEVEL3
Encrypted link is required.
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
SEC encryption request data, ble_sec_enc_req_data_t.
Definition: ble_sec.h:204
ble_sec_cfm_enc_t::req_type
ble_sec_enc_req_type_t req_type
Request type, see ble_sec_enc_req_type_t.
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
TK request.
Definition: ble_sec.h:101
BLE_SEC_IO_NO_INPUT_NO_OUTPUT
@ BLE_SEC_IO_NO_INPUT_NO_OUTPUT
No input and 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
Number comparison request.
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
OOB data, see ble_sec_oob_t.
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
Keyboard and display.
Definition: ble_sec.h:92
BLE_SEC_LTK_VALID_MASK_ERR
@ BLE_SEC_LTK_VALID_MASK_ERR
LTK valid mask flag is false.
Definition: ble_sec.h:139
ble_sec_cfm_enc_data_t
SEC Confirm encryption data.
Definition: ble_sec.h:173
BLE_SEC_MODE2_LEVEL2
@ BLE_SEC_MODE2_LEVEL2
Data signing is required.
Definition: ble_sec.h:124
BLE_SEC_IO_KEYBOARD_ONLY
@ BLE_SEC_IO_KEYBOARD_ONLY
Keyboard only.
Definition: ble_sec.h:90
ble_sec_evt_t::enc_ind
ble_sec_evt_enc_ind_t enc_ind
Link Encrypted event.
Definition: ble_sec.h:232
BLE_SEC_PAIR_REQ
@ BLE_SEC_PAIR_REQ
Pair request.
Definition: ble_sec.h:100
BLE_SEC_IO_DISPLAY_YES_NO
@ BLE_SEC_IO_DISPLAY_YES_NO
Display and input yes or 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
Index of connection.
Definition: ble_sec.h:228
BLE_SEC_EDIV_RAND_VALUE_ERR
@ BLE_SEC_EDIV_RAND_VALUE_ERR
Ediv and rand value not match.
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
Key Press Notify event.
Definition: ble_sec.h:233
ble_sec_param_t::ikey_dist
uint8_t ikey_dist
Set the initial key distribution, see SEC Key Distribution Flag.
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
Encrypted link is required.
Definition: ble_sec.h:122
ble_sec_param_t::auth
uint8_t auth
Set the auth, see SEC Auth Flag.
Definition: ble_sec.h:152
ble_sec_evt_t
BLE Security event structure.
Definition: ble_sec.h:227
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
Key Missing event.
Definition: ble_sec.h:234
ble_sec_param_t::level
ble_sec_mode_level_t level
Set the minimum security level of the device, see ble_sec_mode_level_t.
Definition: ble_sec.h:149
ble_sec_oob_t
SEC OOB value.
Definition: ble_sec.h:166