diff options
Diffstat (limited to 'arduino/libraries/BLEHomekit/src/crypto/random.c')
-rwxr-xr-x | arduino/libraries/BLEHomekit/src/crypto/random.c | 38 |
1 files changed, 38 insertions, 0 deletions
diff --git a/arduino/libraries/BLEHomekit/src/crypto/random.c b/arduino/libraries/BLEHomekit/src/crypto/random.c new file mode 100755 index 0000000..502717f --- /dev/null +++ b/arduino/libraries/BLEHomekit/src/crypto/random.c @@ -0,0 +1,38 @@ +/* + * random.c + * + * Created on: Jun 10, 2015 + * Author: tim + */ + +//#include <softdevice_handler.h> + +#include "nrf_soc.h" +#include "random.h" + +#define APP_ERROR_CHECK(_err) if (_err != NRF_SUCCESS) return + +void random_create(uint8_t* p_result, uint8_t length) +{ + uint32_t err_code; + + while (length) + { + uint8_t available = 0; + err_code = sd_rand_application_bytes_available_get(&available); + APP_ERROR_CHECK(err_code); + if (available) + { + available = available < length ? available : length; + err_code = sd_rand_application_vector_get(p_result, available); + APP_ERROR_CHECK(err_code); + p_result += available; + length -= available; + } + } +} + +void randombytes(uint8_t* p_result, uint64_t length) +{ + random_create(p_result, (uint8_t)length); +} |