Skip to content

Commit 1f81d20

Browse files
Merge pull request ARMmbed#31 from pan-/signing-nordic-fix
BLE: Add stub for signing API in Nordic pal security manager.
2 parents 3aaedf6 + 8643fd5 commit 1f81d20

File tree

3 files changed

+41
-14
lines changed

3 files changed

+41
-14
lines changed

features/FEATURE_BLE/targets/TARGET_NORDIC/TARGET_NRF5/source/nRF5xPalSecurityManager.cpp

Lines changed: 18 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -85,6 +85,7 @@ struct nRF5xSecurityManager::pairing_control_block_t {
8585

8686
nRF5xSecurityManager::nRF5xSecurityManager()
8787
: ::ble::pal::SecurityManager(),
88+
_sign_counter(),
8889
_io_capability(io_capability_t::NO_INPUT_NO_OUTPUT),
8990
_min_encryption_key_size(7),
9091
_max_encryption_key_size(16),
@@ -508,12 +509,24 @@ ble_error_t nRF5xSecurityManager::set_irk(const irk_t& irk)
508509
return convert_sd_error(err);
509510
}
510511

511-
ble_error_t nRF5xSecurityManager::set_csrk(const csrk_t& csrk)
512-
{
512+
ble_error_t nRF5xSecurityManager::set_csrk(
513+
const csrk_t& csrk,
514+
sign_count_t sign_counter
515+
) {
513516
_csrk = csrk;
517+
_sign_counter = sign_counter;
514518
return BLE_ERROR_NONE;
515519
}
516520

521+
ble_error_t nRF5xSecurityManager::set_peer_csrk(
522+
connection_handle_t connection,
523+
const csrk_t &csrk,
524+
bool authenticated,
525+
sign_count_t sign_counter
526+
) {
527+
return BLE_ERROR_NOT_IMPLEMENTED;
528+
}
529+
517530
////////////////////////////////////////////////////////////////////////////
518531
// Authentication
519532
//
@@ -630,23 +643,21 @@ ble_error_t nRF5xSecurityManager::send_keypress_notification(
630643
}
631644

632645

633-
ble_error_t nRF5xSecurityManager::generate_secure_connections_oob(
634-
connection_handle_t connection
635-
) {
646+
ble_error_t nRF5xSecurityManager::generate_secure_connections_oob()
647+
{
636648
ble_gap_lesc_p256_pk_t own_secret;
637649
ble_gap_lesc_oob_data_t oob_data;
638650

639651
memcpy(own_secret.pk, secret.data(), secret.size());
640652

641653
uint32_t err = sd_ble_gap_lesc_oob_data_get(
642-
connection,
654+
BLE_CONN_HANDLE_INVALID,
643655
&own_secret,
644656
&oob_data
645657
);
646658

647659
if (!err) {
648660
get_event_handler()->on_secure_connections_oob_generated(
649-
connection,
650661
oob_data.r,
651662
oob_data.c
652663
);

features/FEATURE_BLE/targets/TARGET_NORDIC/TARGET_NRF5/source/nRF5xPalSecurityManager.h

Lines changed: 14 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -237,7 +237,18 @@ class nRF5xSecurityManager : public ::ble::pal::SecurityManager {
237237
/**
238238
* @see ::ble::pal::SecurityManager::set_csrk
239239
*/
240-
virtual ble_error_t set_csrk(const csrk_t &csrk);
240+
virtual ble_error_t set_csrk(const csrk_t &csrk, sign_count_t sign_counter);
241+
242+
/**
243+
* @see ::ble::pal::SecurityManager::set_peer_csrk
244+
*/
245+
virtual ble_error_t set_peer_csrk(
246+
connection_handle_t connection,
247+
const csrk_t &csrk,
248+
bool authenticated,
249+
sign_count_t sign_counter
250+
);
251+
241252

242253
////////////////////////////////////////////////////////////////////////////
243254
// Authentication
@@ -300,9 +311,7 @@ class nRF5xSecurityManager : public ::ble::pal::SecurityManager {
300311
/**
301312
* @see ::ble::pal::SecurityManager::generate_secure_connections_oob
302313
*/
303-
virtual ble_error_t generate_secure_connections_oob(
304-
connection_handle_t connection
305-
);
314+
virtual ble_error_t generate_secure_connections_oob();
306315

307316
// singleton of nordic Security Manager
308317
static nRF5xSecurityManager& get_security_manager();
@@ -312,6 +321,7 @@ class nRF5xSecurityManager : public ::ble::pal::SecurityManager {
312321

313322
private:
314323
csrk_t _csrk;
324+
sign_count_t _sign_counter;
315325
io_capability_t _io_capability;
316326
uint8_t _min_encryption_key_size;
317327
uint8_t _max_encryption_key_size;

features/FEATURE_BLE/targets/TARGET_NORDIC/TARGET_NRF5/source/nRF5xn.cpp

Lines changed: 9 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -125,7 +125,7 @@ ble_error_t nRF5xn::init(BLE::InstanceID_t instanceID, FunctionPointerWithContex
125125
return BLE_ERROR_ALREADY_INITIALIZED;
126126
}
127127

128-
instanceID = instanceID;
128+
this->instanceID = instanceID;
129129

130130
/* ToDo: Clear memory contents, reset the SD, etc. */
131131
if (btle_init() != ERROR_NONE) {
@@ -209,11 +209,17 @@ SecurityManager& nRF5xn::getSecurityManager()
209209
const SecurityManager& nRF5xn::getSecurityManager() const
210210
{
211211
static ble::pal::MemorySecurityDb m_db;
212-
ble::pal::vendor::nordic::nRF5xSecurityManager &m_pal = ble::pal::vendor::nordic::nRF5xSecurityManager::get_security_manager();
212+
ble::pal::vendor::nordic::nRF5xSecurityManager &m_pal =
213+
ble::pal::vendor::nordic::nRF5xSecurityManager::get_security_manager();
214+
static struct : ble::pal::SigningEventMonitor {
215+
virtual void set_signing_event_handler(EventHandler *signing_event_handler) { }
216+
} dummy_signing_event_monitor;
217+
213218
static ble::generic::GenericSecurityManager m_instance(
214219
m_pal,
215220
m_db,
216-
const_cast<nRF5xGap&>(getGap())
221+
const_cast<nRF5xGap&>(getGap()),
222+
dummy_signing_event_monitor
217223
);
218224

219225
return m_instance;

0 commit comments

Comments
 (0)