all_zeros now free functions

pull/6932/head
paul-szczepanek-arm 2018-04-03 14:47:27 +01:00
parent ba5b0f30d2
commit 0a494a0bbc
2 changed files with 23 additions and 21 deletions

View File

@ -261,6 +261,27 @@ private:
uint8_t ascii[PASSKEY_LEN];
};
/**
* Returns true if every byte is equal to zero
*/
template <class byte_array_class>
bool is_all_zeros(byte_array_class &byte_array) {
for (size_t i = 0; i < byte_array.size(); i++) {
if (byte_array[i] != 0) {
return false;
}
}
return true;
}
/**
* Zero out all bytes
*/
template <class byte_array_class>
void set_all_zeros(byte_array_class &byte_array) {
memset(&byte_array[0], 0x00, byte_array.size());
}
template <size_t array_size>
struct byte_array_t {
/**
@ -324,25 +345,6 @@ struct byte_array_t {
return _value;
}
/**
* Returns true if every byte is equal to zero
*/
bool is_all_zeros() {
for (size_t i = 0; i < array_size; i++) {
if (_value[i] != 0) {
return false;
}
}
return true;
}
/**
* Zero out all bytes
*/
void set_all_zeros() {
memset(_value, 0x00, array_size);
}
/**
* Size in byte of a data.
*/

View File

@ -525,14 +525,14 @@ ble_error_t GenericSecurityManager::generateOOB(
/* Secure connections. Avoid generating if we're already waiting for it.
* If a local random is set to 0 it means we're already calculating. */
if (!_oob_local_random.is_all_zeros()) {
if (!is_all_zeros(_oob_local_random)) {
status = _pal.generate_secure_connections_oob();
if (status == BLE_ERROR_NONE) {
_oob_local_address = *address;
/* this will be updated when calculation completes,
* a value of all zeros is an invalid random value */
_oob_local_random.set_all_zeros();
set_all_zeros(_oob_local_random);
} else if (status != BLE_ERROR_NOT_IMPLEMENTED) {
return status;
}