mirror of https://github.com/ARMmbed/mbed-os.git
all_zeros now free functions
parent
ba5b0f30d2
commit
0a494a0bbc
|
@ -261,6 +261,27 @@ private:
|
||||||
uint8_t ascii[PASSKEY_LEN];
|
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>
|
template <size_t array_size>
|
||||||
struct byte_array_t {
|
struct byte_array_t {
|
||||||
/**
|
/**
|
||||||
|
@ -324,25 +345,6 @@ struct byte_array_t {
|
||||||
return _value;
|
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.
|
* Size in byte of a data.
|
||||||
*/
|
*/
|
||||||
|
|
|
@ -525,14 +525,14 @@ ble_error_t GenericSecurityManager::generateOOB(
|
||||||
|
|
||||||
/* Secure connections. Avoid generating if we're already waiting for it.
|
/* 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 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();
|
status = _pal.generate_secure_connections_oob();
|
||||||
|
|
||||||
if (status == BLE_ERROR_NONE) {
|
if (status == BLE_ERROR_NONE) {
|
||||||
_oob_local_address = *address;
|
_oob_local_address = *address;
|
||||||
/* this will be updated when calculation completes,
|
/* this will be updated when calculation completes,
|
||||||
* a value of all zeros is an invalid random value */
|
* 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) {
|
} else if (status != BLE_ERROR_NOT_IMPLEMENTED) {
|
||||||
return status;
|
return status;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue