diff --git a/features/FEATURE_BLE/ble/BLETypes.h b/features/FEATURE_BLE/ble/BLETypes.h index 8095345657..871e6bea35 100644 --- a/features/FEATURE_BLE/ble/BLETypes.h +++ b/features/FEATURE_BLE/ble/BLETypes.h @@ -379,6 +379,9 @@ typedef byte_array_t<32> public_key_coord_t; /** Diffie-Hellman key */ typedef byte_array_t<32> dhkey_t; +/* counter for signed data writes done by GattClient */ +typedef uint32_t sign_count_t; + /** * MAC address data type. */ diff --git a/features/FEATURE_BLE/ble/generic/GenericSecurityManager.h b/features/FEATURE_BLE/ble/generic/GenericSecurityManager.h index 315627afdc..4f26909645 100644 --- a/features/FEATURE_BLE/ble/generic/GenericSecurityManager.h +++ b/features/FEATURE_BLE/ble/generic/GenericSecurityManager.h @@ -255,7 +255,7 @@ public: _oob_local_random[0] = 1; } - uint32_t get_next_sign_counter() { + sign_count_t get_next_sign_counter() { return _local_sign_counter++; } @@ -335,7 +335,7 @@ private: void return_csrk_cb( pal::SecurityDb::entry_handle_t connection, const csrk_t *csrk, - uint32_t sign_counter + sign_count_t sign_counter ); /** @@ -347,7 +347,7 @@ private: void set_peer_csrk_cb( pal::SecurityDb::entry_handle_t connection, const csrk_t *csrk, - uint32_t sign_counter + sign_count_t sign_counter ); /** @@ -482,7 +482,7 @@ private: address_t _oob_temporary_key_creator_address; /**< device which generated and sent the TK */ oob_tk_t _oob_temporary_key; /**< used for legacy pairing */ - uint32_t _local_sign_counter; + sign_count_t _local_sign_counter; pal::AuthenticationMask _default_authentication; pal::KeyDistribution _default_key_distribution; diff --git a/features/FEATURE_BLE/ble/pal/MemorySecurityDB.h b/features/FEATURE_BLE/ble/pal/MemorySecurityDB.h index 80d68353cb..eb28867734 100644 --- a/features/FEATURE_BLE/ble/pal/MemorySecurityDB.h +++ b/features/FEATURE_BLE/ble/pal/MemorySecurityDB.h @@ -38,7 +38,7 @@ private: SecurityEntryKeys_t local_keys; SecurityEntryIdentity_t peer_identity; csrk_t csrk; - uint32_t sign_counter; + sign_count_t sign_counter; state_t state; }; static const size_t MAX_ENTRIES = 5; @@ -152,7 +152,7 @@ public: entry_handle_t entry_handle ) { csrk_t csrk; - uint32_t sign_counter = 0; + sign_count_t sign_counter = 0; entry_t *entry = as_entry(entry_handle); if (entry) { csrk = entry->csrk; @@ -235,7 +235,7 @@ public: virtual void set_entry_peer_sign_counter( entry_handle_t entry_handle, - uint32_t sign_counter + sign_count_t sign_counter ) { entry_t *entry = as_entry(entry_handle); if (entry) { @@ -254,12 +254,12 @@ public: _local_csrk = csrk; } - virtual uint32_t get_local_sign_counter() { + virtual sign_count_t get_local_sign_counter() { return _local_sign_counter; } virtual void set_local_sign_counter( - uint32_t sign_counter + sign_count_t sign_counter ) { _local_sign_counter = sign_counter; } @@ -368,7 +368,7 @@ private: entry_t _entries[MAX_ENTRIES]; SecurityEntryIdentity_t _local_identity; csrk_t _local_csrk; - uint32_t _local_sign_counter; + sign_count_t _local_sign_counter; }; } /* namespace pal */ diff --git a/features/FEATURE_BLE/ble/pal/PalSecurityManager.h b/features/FEATURE_BLE/ble/pal/PalSecurityManager.h index fe942a0aa8..4f100a0588 100644 --- a/features/FEATURE_BLE/ble/pal/PalSecurityManager.h +++ b/features/FEATURE_BLE/ble/pal/PalSecurityManager.h @@ -864,7 +864,7 @@ public: */ virtual ble_error_t set_csrk( const csrk_t &csrk, - uint32_t sign_counter + sign_count_t sign_counter ) = 0; /** @@ -880,7 +880,7 @@ public: connection_handle_t connection, const csrk_t &csrk, bool authenticated, - uint32_t sign_counter + sign_count_t sign_counter ) = 0; //////////////////////////////////////////////////////////////////////////// diff --git a/features/FEATURE_BLE/ble/pal/SecurityDb.h b/features/FEATURE_BLE/ble/pal/SecurityDb.h index 5b7c656eef..62f67fb95b 100644 --- a/features/FEATURE_BLE/ble/pal/SecurityDb.h +++ b/features/FEATURE_BLE/ble/pal/SecurityDb.h @@ -278,7 +278,7 @@ public: */ virtual void set_entry_peer_sign_counter( entry_handle_t db_entry, - uint32_t sign_counter + sign_count_t sign_counter ) = 0; /* local csrk */ @@ -295,7 +295,7 @@ public: * * @return signing counter */ - virtual uint32_t get_local_sign_counter() = 0; + virtual sign_count_t get_local_sign_counter() = 0; /** * Update local signing key. @@ -312,7 +312,7 @@ public: * @param[in] sign_counter new signing counter value */ virtual void set_local_sign_counter( - uint32_t sign_counter + sign_count_t sign_counter ) = 0; /* list management */ diff --git a/features/FEATURE_BLE/source/generic/GenericSecurityManager.cpp b/features/FEATURE_BLE/source/generic/GenericSecurityManager.cpp index dd37331504..118ce77868 100644 --- a/features/FEATURE_BLE/source/generic/GenericSecurityManager.cpp +++ b/features/FEATURE_BLE/source/generic/GenericSecurityManager.cpp @@ -641,7 +641,7 @@ ble_error_t GenericSecurityManager::oobReceived( ble_error_t GenericSecurityManager::init_signing() { const csrk_t *pcsrk = _db.get_local_csrk(); - uint32_t local_sign_counter = _db.get_local_sign_counter(); + sign_count_t local_sign_counter = _db.get_local_sign_counter(); if (!pcsrk) { csrk_t csrk; @@ -741,7 +741,7 @@ void GenericSecurityManager::set_ltk_cb( void GenericSecurityManager::set_peer_csrk_cb( pal::SecurityDb::entry_handle_t db_entry, const csrk_t *csrk, - uint32_t sign_counter + sign_count_t sign_counter ) { ControlBlock_t *cb = get_control_block(db_entry); if (!cb) { @@ -759,7 +759,7 @@ void GenericSecurityManager::set_peer_csrk_cb( void GenericSecurityManager::return_csrk_cb( pal::SecurityDb::entry_handle_t db_entry, const csrk_t *csrk, - uint32_t sign_counter + sign_count_t sign_counter ) { ControlBlock_t *cb = get_control_block(db_entry); if (!cb) { @@ -953,7 +953,7 @@ void GenericSecurityManager::on_valid_mic_timeout(connection_handle_t connection void GenericSecurityManager::on_signed_write_received( connection_handle_t connection, - uint32_t sign_counter + sign_count_t sign_counter ) { ControlBlock_t *cb = get_control_block(connection); if (!cb) { diff --git a/features/FEATURE_BLE/targets/TARGET_CORDIO/CordioPalSecurityManager.h b/features/FEATURE_BLE/targets/TARGET_CORDIO/CordioPalSecurityManager.h index c9bc5bc779..9a6cb9ffe1 100644 --- a/features/FEATURE_BLE/targets/TARGET_CORDIO/CordioPalSecurityManager.h +++ b/features/FEATURE_BLE/targets/TARGET_CORDIO/CordioPalSecurityManager.h @@ -239,7 +239,7 @@ public: */ virtual ble_error_t set_csrk( const csrk_t &csrk, - uint32_t sign_counter + sign_count_t sign_counter ); /** @@ -249,7 +249,7 @@ public: connection_handle_t connection, const csrk_t &csrk, bool authenticated, - uint32_t sign_counter + sign_count_t sign_counter ); //////////////////////////////////////////////////////////////////////////// @@ -324,7 +324,7 @@ public: private: bool _use_default_passkey; passkey_num_t _default_passkey; - uint32_t _local_sign_counter; + sign_count_t _local_sign_counter; bool _lesc_keys_generated; uint8_t _public_key_x[SEC_ECC_KEY_LEN]; }; diff --git a/features/FEATURE_BLE/targets/TARGET_CORDIO/source/CordioPalSecurityManager.cpp b/features/FEATURE_BLE/targets/TARGET_CORDIO/source/CordioPalSecurityManager.cpp index 6bf678c5d5..eb2ac8da37 100644 --- a/features/FEATURE_BLE/targets/TARGET_CORDIO/source/CordioPalSecurityManager.cpp +++ b/features/FEATURE_BLE/targets/TARGET_CORDIO/source/CordioPalSecurityManager.cpp @@ -270,7 +270,7 @@ ble_error_t CordioSecurityManager::set_irk(const irk_t& irk) ble_error_t CordioSecurityManager::set_csrk( const csrk_t& csrk, - uint32_t sign_counter + sign_count_t sign_counter ) { _local_sign_counter = sign_counter; DmSecSetLocalCsrk(const_cast(csrk.data())); @@ -281,7 +281,7 @@ ble_error_t CordioSecurityManager::set_peer_csrk( connection_handle_t connection, const csrk_t &csrk, bool authenticated, - uint32_t sign_counter + sign_count_t sign_counter ) { AttsSetCsrk(connection, const_cast(csrk.data())); AttsSetSignCounter(connection, sign_counter);