sign counter kept track by the class using it

pull/6932/head
paul-szczepanek-arm 2018-04-09 17:49:54 +01:00
parent deeb0ea7e0
commit 4fff20583d
3 changed files with 18 additions and 4 deletions

View File

@ -216,13 +216,26 @@ public:
AttcSignedWriteCmd(
connection_handle,
attribute_handle,
/*TODO: get sign counter from cordio sm */0,
_local_sign_counter,
value.size(),
const_cast<uint8_t*>(value.data())
);
_local_sign_counter++;
return BLE_ERROR_NONE;
}
/**
* Initialises the counter used to sign messages. Counter will be incremented every
* time a message is signed.
*
* @param sign_counter initialise the signing counter to this value
*/
virtual void set_sign_counter(
sign_count_t sign_counter
) {
_local_sign_counter = sign_counter;
}
/**
* @see ble::pal::AttClient::prepare_write_request
*/
@ -612,6 +625,8 @@ private:
);
}
};
private:
sign_count_t _local_sign_counter;
};
} // cordio

View File

@ -324,7 +324,6 @@ public:
private:
bool _use_default_passkey;
passkey_num_t _default_passkey;
sign_count_t _local_sign_counter;
bool _lesc_keys_generated;
uint8_t _public_key_x[SEC_ECC_KEY_LEN];
};

View File

@ -17,6 +17,7 @@
#include <string.h>
#include "CordioPalSecurityManager.h"
#include "CordioBLE.h"
#include "dm_api.h"
#include "att_api.h"
#include "smp_api.h"
@ -31,7 +32,6 @@ CordioSecurityManager::CordioSecurityManager() :
::ble::pal::SecurityManager(),
_use_default_passkey(false),
_default_passkey(0),
_local_sign_counter(0),
_lesc_keys_generated(false),
_public_key_x()
{
@ -272,7 +272,7 @@ ble_error_t CordioSecurityManager::set_csrk(
const csrk_t& csrk,
sign_count_t sign_counter
) {
_local_sign_counter = sign_counter;
CordioAttClient::get_client().set_sign_counter(sign_counter);
DmSecSetLocalCsrk(const_cast<uint8_t*>(csrk.data()));
return BLE_ERROR_NONE;
}