Skip to content

Commit 52b132e

Browse files
committed
BLE: Cleanup pal security manager
1 parent 2952a5b commit 52b132e

File tree

5 files changed

+163
-165
lines changed

5 files changed

+163
-165
lines changed

connectivity/FEATURE_BLE/source/cordio/include/ble/internal/PalSecurityManagerImpl.h

Lines changed: 47 additions & 45 deletions
Original file line numberDiff line numberDiff line change
@@ -28,10 +28,11 @@
2828
#include "cfg_stack.h"
2929

3030
namespace ble {
31+
namespace impl {
3132

3233
class BLEInstanceBase;
3334

34-
class PalSecurityManager : public interface::PalSecurityManager {
35+
class PalSecurityManager final : public ble::PalSecurityManager {
3536
friend BLEInstanceBase;
3637
public:
3738

@@ -46,17 +47,17 @@ class PalSecurityManager : public interface::PalSecurityManager {
4647
/**
4748
* @see ::ble::PalSecurityManager::initialize
4849
*/
49-
ble_error_t initialize();
50+
ble_error_t initialize() final;
5051

5152
/**
5253
* @see ::ble::PalSecurityManager::terminate
5354
*/
54-
ble_error_t terminate();
55+
ble_error_t terminate() final;
5556

5657
/**
5758
* @see ::ble::PalSecurityManager::reset
5859
*/
59-
ble_error_t reset();
60+
ble_error_t reset() final;
6061

6162
////////////////////////////////////////////////////////////////////////////
6263
// Resolving list management
@@ -65,7 +66,7 @@ class PalSecurityManager : public interface::PalSecurityManager {
6566
/**
6667
* @see ::ble::PalSecurityManager::read_resolving_list_capacity
6768
*/
68-
uint8_t read_resolving_list_capacity();
69+
uint8_t read_resolving_list_capacity() final;
6970

7071
/**
7172
* @see ::ble::PalSecurityManager::add_device_to_resolving_list
@@ -74,20 +75,20 @@ class PalSecurityManager : public interface::PalSecurityManager {
7475
advertising_peer_address_type_t peer_identity_address_type,
7576
const address_t &peer_identity_address,
7677
const irk_t &peer_irk
77-
);
78+
) final;
7879

7980
/**
8081
* @see ::ble::PalSecurityManager::remove_device_from_resolving_list
8182
*/
8283
ble_error_t remove_device_from_resolving_list(
8384
advertising_peer_address_type_t peer_identity_address_type,
8485
const address_t &peer_identity_address
85-
);
86+
) final;
8687

8788
/**
8889
* @see ::ble::PalSecurityManager::clear_resolving_list
8990
*/
90-
ble_error_t clear_resolving_list();
91+
ble_error_t clear_resolving_list() final;
9192

9293
////////////////////////////////////////////////////////////////////////////
9394
// Pairing
@@ -102,7 +103,7 @@ class PalSecurityManager : public interface::PalSecurityManager {
102103
AuthenticationMask authentication_requirements,
103104
KeyDistribution initiator_dist,
104105
KeyDistribution responder_dist
105-
);
106+
) final;
106107

107108
/**
108109
* @see ::ble::PalSecurityManager::send_pairing_response
@@ -113,14 +114,14 @@ class PalSecurityManager : public interface::PalSecurityManager {
113114
AuthenticationMask authentication_requirements,
114115
KeyDistribution initiator_dist,
115116
KeyDistribution responder_dist
116-
);
117+
) final;
117118

118119
/**
119120
* @see ::ble::PalSecurityManager::cancel_pairing
120121
*/
121122
ble_error_t cancel_pairing(
122123
connection_handle_t connection, pairing_failure_t reason
123-
);
124+
) final;
124125

125126
////////////////////////////////////////////////////////////////////////////
126127
// Feature support
@@ -131,12 +132,12 @@ class PalSecurityManager : public interface::PalSecurityManager {
131132
*/
132133
ble_error_t get_secure_connections_support(
133134
bool &enabled
134-
);
135+
) final;
135136

136137
/**
137138
* @see ::ble::PalSecurityManager::set_io_capability
138139
*/
139-
ble_error_t set_io_capability(io_capability_t io_capability);
140+
ble_error_t set_io_capability(io_capability_t io_capability) final;
140141

141142
////////////////////////////////////////////////////////////////////////////
142143
// Security settings
@@ -147,30 +148,30 @@ class PalSecurityManager : public interface::PalSecurityManager {
147148
*/
148149
ble_error_t set_authentication_timeout(
149150
connection_handle_t, uint16_t timeout_in_10ms
150-
);
151+
) final;
151152

152153
/**
153154
* @see ::ble::PalSecurityManager::get_authentication_timeout
154155
*/
155156
ble_error_t get_authentication_timeout(
156157
connection_handle_t, uint16_t &timeout_in_10ms
157-
);
158+
) final;
158159

159160
/**
160161
* @see ::ble::PalSecurityManager::set_encryption_key_requirements
161162
*/
162163
ble_error_t set_encryption_key_requirements(
163164
uint8_t min_encryption_key_size,
164165
uint8_t max_encryption_key_size
165-
);
166+
) final;
166167

167168
/**
168169
* @see ::ble::PalSecurityManager::slave_security_request
169170
*/
170171
ble_error_t slave_security_request(
171172
connection_handle_t connection,
172173
AuthenticationMask authentication
173-
);
174+
) final;
174175

175176
////////////////////////////////////////////////////////////////////////////
176177
// Encryption
@@ -185,7 +186,7 @@ class PalSecurityManager : public interface::PalSecurityManager {
185186
const rand_t &rand,
186187
const ediv_t &ediv,
187188
bool mitm
188-
);
189+
) final;
189190

190191
/**
191192
* @see ::ble::PalSecurityManager::enable_encryption
@@ -194,15 +195,15 @@ class PalSecurityManager : public interface::PalSecurityManager {
194195
connection_handle_t connection,
195196
const ltk_t &ltk,
196197
bool mitm
197-
);
198+
) final;
198199

199200
/**
200201
* @see ::ble::PalSecurityManager::encrypt_data
201202
*/
202203
ble_error_t encrypt_data(
203204
const byte_array_t<16> &key,
204205
encryption_block_t &data
205-
);
206+
) final;
206207

207208
////////////////////////////////////////////////////////////////////////////
208209
// Privacy
@@ -211,12 +212,12 @@ class PalSecurityManager : public interface::PalSecurityManager {
211212
/**
212213
* @see ::ble::PalSecurityManager::set_private_address_timeout
213214
*/
214-
ble_error_t set_private_address_timeout(uint16_t timeout_in_seconds);
215+
ble_error_t set_private_address_timeout(uint16_t timeout_in_seconds) final;
215216

216217
/**
217218
* @see ::ble::PalSecurityManager::get_identity_address
218219
*/
219-
ble_error_t get_identity_address(address_t& address, bool& public_address);
220+
ble_error_t get_identity_address(address_t &address, bool &public_address) final;
220221

221222
////////////////////////////////////////////////////////////////////////////
222223
// Keys
@@ -230,27 +231,27 @@ class PalSecurityManager : public interface::PalSecurityManager {
230231
const ltk_t &ltk,
231232
bool mitm,
232233
bool secure_connections
233-
);
234+
) final;
234235

235236
/**
236237
* @see ::ble::PalSecurityManager::set_ltk_not_found
237238
*/
238239
ble_error_t set_ltk_not_found(
239240
connection_handle_t connection
240-
);
241+
) final;
241242

242243
/**
243244
* @see ::ble::PalSecurityManager::set_irk
244245
*/
245-
ble_error_t set_irk(const irk_t &irk);
246+
ble_error_t set_irk(const irk_t &irk) final;
246247

247248
/**
248249
* @see ::ble::PalSecurityManager::set_csrk
249250
*/
250251
ble_error_t set_csrk(
251252
const csrk_t &csrk,
252253
sign_count_t sign_counter
253-
);
254+
) final;
254255

255256
/**
256257
* @see ::ble::PalSecurityManager::set_peer_csrk
@@ -260,9 +261,9 @@ class PalSecurityManager : public interface::PalSecurityManager {
260261
const csrk_t &csrk,
261262
bool authenticated,
262263
sign_count_t sign_counter
263-
);
264+
) final;
264265

265-
ble_error_t remove_peer_csrk(connection_handle_t connection);
266+
ble_error_t remove_peer_csrk(connection_handle_t connection) final;
266267

267268
////////////////////////////////////////////////////////////////////////////
268269
// Authentication
@@ -271,7 +272,7 @@ class PalSecurityManager : public interface::PalSecurityManager {
271272
/**
272273
* @see ::ble::PalSecurityManager::get_random_data
273274
*/
274-
ble_error_t get_random_data(byte_array_t<8> &random_data);
275+
ble_error_t get_random_data(byte_array_t<8> &random_data) final;
275276

276277
////////////////////////////////////////////////////////////////////////////
277278
// MITM
@@ -280,15 +281,15 @@ class PalSecurityManager : public interface::PalSecurityManager {
280281
/**
281282
* @see ::ble::PalSecurityManager::set_display_passkey
282283
*/
283-
ble_error_t set_display_passkey(passkey_num_t passkey);
284+
ble_error_t set_display_passkey(passkey_num_t passkey) final;
284285

285286
/**
286287
* @see ::ble::PalSecurityManager::passkey_request_reply
287288
*/
288289
ble_error_t passkey_request_reply(
289290
connection_handle_t connection,
290291
passkey_num_t passkey
291-
);
292+
) final;
292293

293294
/**
294295
* @see ::ble::PalSecurityManager::secure_connections_oob_request_reply
@@ -298,51 +299,51 @@ class PalSecurityManager : public interface::PalSecurityManager {
298299
const oob_lesc_value_t &local_random,
299300
const oob_lesc_value_t &peer_random,
300301
const oob_confirm_t &peer_confirm
301-
);
302+
) final;
302303

303304
/**
304305
* @see ::ble::PalSecurityManager::legacy_pairing_oob_request_reply
305306
*/
306307
ble_error_t legacy_pairing_oob_request_reply(
307308
connection_handle_t connection,
308309
const oob_tk_t &oob_data
309-
);
310+
) final;
310311

311312
/**
312313
* @see ::ble::PalSecurityManager::confirmation_entered
313314
*/
314315
ble_error_t confirmation_entered(
315316
connection_handle_t connection, bool confirmation
316-
);
317+
) final;
317318

318319
/**
319320
* @see ::ble::PalSecurityManager::send_keypress_notification
320321
*/
321322
ble_error_t send_keypress_notification(
322323
connection_handle_t connection, ble::Keypress_t keypress
323-
);
324+
) final;
324325

325326
/**
326327
* @see ::ble::PalSecurityManager::generate_secure_connections_oob
327328
*/
328-
ble_error_t generate_secure_connections_oob();
329+
ble_error_t generate_secure_connections_oob() final;
329330

330331
/**
331332
* @see ::ble::PalSecurityManager::set_event_handler
332333
*/
333-
void set_event_handler(PalSecurityManagerEventHandler *event_handler);
334+
void set_event_handler(PalSecurityManagerEventHandler *event_handler) final;
334335

335336
/**
336337
* @see ::ble::PalSecurityManager::get_event_handler
337338
*/
338-
PalSecurityManagerEventHandler* get_event_handler();
339+
PalSecurityManagerEventHandler *get_event_handler() final;
339340

340-
private:
341+
public:
341342
/* used by the PAL to get the singleton */
342343
static PalSecurityManager &get_security_manager();
343344

344345
/* used by PAL to handle security messages coming from the stack Event handler */
345-
static bool sm_handler(const wsfMsgHdr_t* msg);
346+
static bool sm_handler(const wsfMsgHdr_t *msg);
346347

347348
private:
348349

@@ -371,28 +372,29 @@ class PalSecurityManager : public interface::PalSecurityManager {
371372
void clear_privacy_control_blocks();
372373

373374
// Queue a control block
374-
void queue_privacy_control_block(PrivacyControlBlock* block);
375+
void queue_privacy_control_block(PrivacyControlBlock *block);
375376

376377
// Try to dequeue and process the next control block
377378
// cb_completed is set when the previous block has completed
378379
void process_privacy_control_blocks(bool cb_completed);
379380

380381
void cleanup_peer_csrks();
381382

382-
PalSecurityManagerEventHandler* _pal_event_handler;
383+
PalSecurityManagerEventHandler *_pal_event_handler;
383384

384385
bool _use_default_passkey;
385386
passkey_num_t _default_passkey;
386387
bool _lesc_keys_generated;
387388
uint8_t _public_key_x[SEC_ECC_KEY_LEN];
388389

389-
PrivacyControlBlock* _pending_privacy_control_blocks;
390+
PrivacyControlBlock *_pending_privacy_control_blocks;
390391
bool _processing_privacy_control_block;
391392
irk_t _irk;
392393
csrk_t _csrk;
393-
csrk_t* _peer_csrks[DM_CONN_MAX];
394+
csrk_t *_peer_csrks[DM_CONN_MAX];
394395
};
395396

396-
} // ble
397+
} // namespace impl
398+
} // namespace ble
397399

398400
#endif /* IMPL_PAL_SECURITY_MANAGER_ */

connectivity/FEATURE_BLE/source/cordio/source/BLEInstanceBaseImpl.cpp

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -45,6 +45,7 @@
4545
#include "source/BLEInstanceBase.h"
4646
#include "ble/driver/CordioHCIDriver.h"
4747
#include "GattServerImpl.h"
48+
#include "PalSecurityManagerImpl.h"
4849

4950
#include "internal/PalAttClientImpl.h"
5051
#include "PalGapImpl.h"
@@ -197,7 +198,7 @@ ble::impl::Gap &BLEInstanceBase::getGapImpl()
197198
_event_queue,
198199
ble::impl::PalGap::get_gap(),
199200
cordio_gap_service,
200-
ble::PalSecurityManager::get_security_manager()
201+
ble::impl::PalSecurityManager::get_security_manager()
201202
);
202203
return gap;
203204
}
@@ -267,7 +268,7 @@ ble::impl::SecurityManager &BLEInstanceBase::getSecurityManagerImpl()
267268
{
268269
static PalSigningMonitor signing_event_monitor;
269270
static ble::impl::SecurityManager m_instance(
270-
ble::PalSecurityManager::get_security_manager(),
271+
ble::impl::PalSecurityManager::get_security_manager(),
271272
getGapImpl(),
272273
signing_event_monitor
273274
);
@@ -318,7 +319,7 @@ void BLEInstanceBase::stack_handler(wsfEventMask_t event, wsfMsgHdr_t *msg)
318319
}
319320

320321
#if BLE_FEATURE_SECURITY
321-
if (ble::PalSecurityManager::get_security_manager().sm_handler(msg)) {
322+
if (ble::impl::PalSecurityManager::get_security_manager().sm_handler(msg)) {
322323
return;
323324
}
324325
#endif // BLE_FEATURE_SECURITY

0 commit comments

Comments
 (0)