mirror of https://github.com/ARMmbed/mbed-os.git
Merge pull request #31 from pan-/signing-nordic-fix
BLE: Add stub for signing API in Nordic pal security manager.pull/6932/head
commit
1f81d20914
|
@ -85,6 +85,7 @@ struct nRF5xSecurityManager::pairing_control_block_t {
|
|||
|
||||
nRF5xSecurityManager::nRF5xSecurityManager()
|
||||
: ::ble::pal::SecurityManager(),
|
||||
_sign_counter(),
|
||||
_io_capability(io_capability_t::NO_INPUT_NO_OUTPUT),
|
||||
_min_encryption_key_size(7),
|
||||
_max_encryption_key_size(16),
|
||||
|
@ -508,12 +509,24 @@ ble_error_t nRF5xSecurityManager::set_irk(const irk_t& irk)
|
|||
return convert_sd_error(err);
|
||||
}
|
||||
|
||||
ble_error_t nRF5xSecurityManager::set_csrk(const csrk_t& csrk)
|
||||
{
|
||||
ble_error_t nRF5xSecurityManager::set_csrk(
|
||||
const csrk_t& csrk,
|
||||
sign_count_t sign_counter
|
||||
) {
|
||||
_csrk = csrk;
|
||||
_sign_counter = sign_counter;
|
||||
return BLE_ERROR_NONE;
|
||||
}
|
||||
|
||||
ble_error_t nRF5xSecurityManager::set_peer_csrk(
|
||||
connection_handle_t connection,
|
||||
const csrk_t &csrk,
|
||||
bool authenticated,
|
||||
sign_count_t sign_counter
|
||||
) {
|
||||
return BLE_ERROR_NOT_IMPLEMENTED;
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////
|
||||
// Authentication
|
||||
//
|
||||
|
@ -630,23 +643,21 @@ ble_error_t nRF5xSecurityManager::send_keypress_notification(
|
|||
}
|
||||
|
||||
|
||||
ble_error_t nRF5xSecurityManager::generate_secure_connections_oob(
|
||||
connection_handle_t connection
|
||||
) {
|
||||
ble_error_t nRF5xSecurityManager::generate_secure_connections_oob()
|
||||
{
|
||||
ble_gap_lesc_p256_pk_t own_secret;
|
||||
ble_gap_lesc_oob_data_t oob_data;
|
||||
|
||||
memcpy(own_secret.pk, secret.data(), secret.size());
|
||||
|
||||
uint32_t err = sd_ble_gap_lesc_oob_data_get(
|
||||
connection,
|
||||
BLE_CONN_HANDLE_INVALID,
|
||||
&own_secret,
|
||||
&oob_data
|
||||
);
|
||||
|
||||
if (!err) {
|
||||
get_event_handler()->on_secure_connections_oob_generated(
|
||||
connection,
|
||||
oob_data.r,
|
||||
oob_data.c
|
||||
);
|
||||
|
|
|
@ -237,7 +237,18 @@ public:
|
|||
/**
|
||||
* @see ::ble::pal::SecurityManager::set_csrk
|
||||
*/
|
||||
virtual ble_error_t set_csrk(const csrk_t &csrk);
|
||||
virtual ble_error_t set_csrk(const csrk_t &csrk, sign_count_t sign_counter);
|
||||
|
||||
/**
|
||||
* @see ::ble::pal::SecurityManager::set_peer_csrk
|
||||
*/
|
||||
virtual ble_error_t set_peer_csrk(
|
||||
connection_handle_t connection,
|
||||
const csrk_t &csrk,
|
||||
bool authenticated,
|
||||
sign_count_t sign_counter
|
||||
);
|
||||
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////
|
||||
// Authentication
|
||||
|
@ -300,9 +311,7 @@ public:
|
|||
/**
|
||||
* @see ::ble::pal::SecurityManager::generate_secure_connections_oob
|
||||
*/
|
||||
virtual ble_error_t generate_secure_connections_oob(
|
||||
connection_handle_t connection
|
||||
);
|
||||
virtual ble_error_t generate_secure_connections_oob();
|
||||
|
||||
// singleton of nordic Security Manager
|
||||
static nRF5xSecurityManager& get_security_manager();
|
||||
|
@ -312,6 +321,7 @@ public:
|
|||
|
||||
private:
|
||||
csrk_t _csrk;
|
||||
sign_count_t _sign_counter;
|
||||
io_capability_t _io_capability;
|
||||
uint8_t _min_encryption_key_size;
|
||||
uint8_t _max_encryption_key_size;
|
||||
|
|
|
@ -125,7 +125,7 @@ ble_error_t nRF5xn::init(BLE::InstanceID_t instanceID, FunctionPointerWithContex
|
|||
return BLE_ERROR_ALREADY_INITIALIZED;
|
||||
}
|
||||
|
||||
instanceID = instanceID;
|
||||
this->instanceID = instanceID;
|
||||
|
||||
/* ToDo: Clear memory contents, reset the SD, etc. */
|
||||
if (btle_init() != ERROR_NONE) {
|
||||
|
@ -209,11 +209,17 @@ SecurityManager& nRF5xn::getSecurityManager()
|
|||
const SecurityManager& nRF5xn::getSecurityManager() const
|
||||
{
|
||||
static ble::pal::MemorySecurityDb m_db;
|
||||
ble::pal::vendor::nordic::nRF5xSecurityManager &m_pal = ble::pal::vendor::nordic::nRF5xSecurityManager::get_security_manager();
|
||||
ble::pal::vendor::nordic::nRF5xSecurityManager &m_pal =
|
||||
ble::pal::vendor::nordic::nRF5xSecurityManager::get_security_manager();
|
||||
static struct : ble::pal::SigningEventMonitor {
|
||||
virtual void set_signing_event_handler(EventHandler *signing_event_handler) { }
|
||||
} dummy_signing_event_monitor;
|
||||
|
||||
static ble::generic::GenericSecurityManager m_instance(
|
||||
m_pal,
|
||||
m_db,
|
||||
const_cast<nRF5xGap&>(getGap())
|
||||
const_cast<nRF5xGap&>(getGap()),
|
||||
dummy_signing_event_monitor
|
||||
);
|
||||
|
||||
return m_instance;
|
||||
|
|
Loading…
Reference in New Issue