From 287123842732ff588248714ec682bcdfda0834d0 Mon Sep 17 00:00:00 2001 From: icex2 Date: Sun, 17 Jan 2021 00:51:22 +0100 Subject: [PATCH] util/rand: Extend, add functions to init with seed, rand u8, u16, array --- src/main/util/rand.c | 35 ++++++++++++++++++++++++++++++++++- src/main/util/rand.h | 16 ++++++++++++++++ 2 files changed, 50 insertions(+), 1 deletion(-) diff --git a/src/main/util/rand.c b/src/main/util/rand.c index cbd365d..779fbf0 100644 --- a/src/main/util/rand.c +++ b/src/main/util/rand.c @@ -1,7 +1,8 @@ #include #include -#include "rand.h" +#include "util/log.h" +#include "util/rand.h" static int _util_rand_init = 0; @@ -13,6 +14,22 @@ static void _util_rand_initialize() } } +void util_rand_init(uint32_t seed) +{ + _util_rand_init = 1; + srand(seed); +} + +uint8_t util_rand_gen_8() +{ + return (uint8_t) util_rand_gen_32(); +} + +uint16_t util_rand_gen_16() +{ + return (uint16_t) util_rand_gen_32(); +} + uint32_t util_rand_gen_32() { _util_rand_initialize(); @@ -20,6 +37,11 @@ uint32_t util_rand_gen_32() return (uint32_t) rand(); } +uint32_t util_rand_gen_range_32(uint32_t max) +{ + return util_rand_gen_32() % max; +} + uint64_t util_rand_gen_64() { uint64_t value; @@ -31,4 +53,15 @@ uint64_t util_rand_gen_64() value |= ((uint64_t) rand()); return value; +} + +void util_rand_gen_bytes(uint8_t* buffer, size_t len) +{ + log_assert(buffer); + + _util_rand_initialize(); + + for (size_t i = 0; i < len; i++) { + buffer[i] = (uint8_t) rand(); + } } \ No newline at end of file diff --git a/src/main/util/rand.h b/src/main/util/rand.h index cc79f0b..2dc74b6 100644 --- a/src/main/util/rand.h +++ b/src/main/util/rand.h @@ -3,8 +3,24 @@ #include +/** + * General note for this module: The implementations provided are supposed to + * be used for non-security related randomness, e.g. generate some random data + * for testing something. + */ + +void util_rand_init(uint32_t seed); + +uint8_t util_rand_gen_8(); + +uint16_t util_rand_gen_16(); + uint32_t util_rand_gen_32(); +uint32_t util_rand_gen_range_32(uint32_t max); + uint64_t util_rand_gen_64(); +void util_rand_gen_bytes(uint8_t* buffer, size_t len); + #endif