diff --git a/features/FEATURE_BLE/ble/generic/GenericSecurityDb.h b/features/FEATURE_BLE/ble/generic/GenericSecurityDb.h index 54a9993645..57fe61acf1 100644 --- a/features/FEATURE_BLE/ble/generic/GenericSecurityDb.h +++ b/features/FEATURE_BLE/ble/generic/GenericSecurityDb.h @@ -331,17 +331,26 @@ public: /** * Return local public key. * - * @return pointer to x and y component of public key + * @return ref to x component of public key */ - virtual const public_key_pair_t* get_public_key() = 0; + virtual const public_key_t& get_public_key_x() = 0; + + /** + * Return local public key. + * + * @return ref to y component of public key + */ + virtual const public_key_t& get_public_key_y() = 0; /** * Set local public key. * - * @param[in] public_key new public key value + * @param[in] public_key_x new public key value of the x coordinate + * @param[in] public_key_y new public key value of the y coordinate */ virtual void set_public_key( - const public_key_pair_t* public_key + const public_key_t& public_key_x, + const public_key_t& public_key_y ) = 0; /* list management */ @@ -676,14 +685,20 @@ public: /* public key */ - virtual const public_key_pair_t* get_public_key() { - return &_public_key; + virtual const public_key_t& get_public_key_x() { + return _public_key_x; + } + + virtual const public_key_t& get_public_key_y() { + return _public_key_y; } virtual void set_public_key( - const public_key_pair_t* public_key + const public_key_t& public_key_x, + const public_key_t& public_key_y ) { - _public_key = *public_key; + _public_key_x = public_key_x; + _public_key_y = public_key_y; } /* list management */ @@ -787,7 +802,8 @@ private: SecurityEntryIdentity_t _identities[MAX_ENTRIES]; SecurityEntryIdentity_t _local_identity; csrk_t _local_csrk; - public_key_pair_t _public_key; + public_key_t _public_key_x; + public_key_t _public_key_y; }; } /* namespace generic */ diff --git a/features/FEATURE_BLE/ble/pal/PalSecurityManager.h b/features/FEATURE_BLE/ble/pal/PalSecurityManager.h index 771c1c4323..d16e64cd23 100644 --- a/features/FEATURE_BLE/ble/pal/PalSecurityManager.h +++ b/features/FEATURE_BLE/ble/pal/PalSecurityManager.h @@ -362,17 +362,6 @@ public: connection_handle_t connection ) = 0; - /** - * Provide the local public key. - * - * @param[in] public_key_x newly generated public key (x coordinate) - * @param[in] public_key_y newly generated public key (y coordinate) - */ - virtual void on_public_key_generated( - const public_key_t &public_key_x, - const public_key_t &public_key_y - ) = 0; - /** * Request OOB data to be verified against received public keys. * @@ -389,6 +378,17 @@ public: // Keys // + /** + * Provide the local public key. + * + * @param[in] public_key_x newly generated public key (x coordinate) + * @param[in] public_key_y newly generated public key (y coordinate) + */ + virtual void on_public_key_generated( + const public_key_t &public_key_x, + const public_key_t &public_key_y + ) = 0; + /** * Store the results of key generation of the stage 2 of secure connections pairing * @see BLUETOOTH SPECIFICATION Version 5.0 | Vol 3, Part H - 2.3.5.6.5 diff --git a/features/FEATURE_BLE/source/generic/GenericSecurityManager.cpp b/features/FEATURE_BLE/source/generic/GenericSecurityManager.cpp index 05cdd569fc..c9af329318 100644 --- a/features/FEATURE_BLE/source/generic/GenericSecurityManager.cpp +++ b/features/FEATURE_BLE/source/generic/GenericSecurityManager.cpp @@ -842,7 +842,7 @@ void GenericSecurityManager::on_public_key_generated( const public_key_t &public_key_x, const public_key_t &public_key_y ) { - + _db.set_public_key(public_key_x, public_key_y); } void GenericSecurityManager::on_secure_connections_ltk_generated(