From 9cf9638fdc20d05cdab3b3692bf33cde9fff6c6c Mon Sep 17 00:00:00 2001 From: LP-HAW Date: Fri, 31 May 2024 22:02:30 +0200 Subject: [PATCH] sys/random: fix SHAxPRNG init_by_array --- sys/include/random.h | 2 +- sys/random/shaxprng.c | 4 ++-- tests/sys/prng_sha1prng/main.c | 2 +- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/sys/include/random.h b/sys/include/random.h index 56baa9f7a6..d762149383 100644 --- a/sys/include/random.h +++ b/sys/include/random.h @@ -78,7 +78,7 @@ void random_init(uint32_t s); * slight change for C++, 2004/2/26 * * @param init_key array of keys (seeds) to initialize the PRNG - * @param key_length number of lements in init_key + * @param key_length number of elements in init_key */ void random_init_by_array(uint32_t init_key[], int key_length); diff --git a/sys/random/shaxprng.c b/sys/random/shaxprng.c index dfbe01e2f9..f57c73c080 100644 --- a/sys/random/shaxprng.c +++ b/sys/random/shaxprng.c @@ -149,7 +149,7 @@ void _random_bytes(uint8_t *bytes, size_t size) void random_init_by_array(uint32_t init_key[], int key_length) { _shax_init(&ctx); - _shax_update(&ctx, init_key, key_length); + _shax_update(&ctx, init_key, key_length * sizeof(uint32_t)); _shax_final(&ctx, digestdata); /* copy SHA digestdata to PRNG state */ @@ -161,7 +161,7 @@ void random_init_by_array(uint32_t init_key[], int key_length) void random_init(uint32_t seed) { - random_init_by_array((uint32_t *)&seed, sizeof(seed)); + random_init_by_array((uint32_t *)&seed, 1); } uint32_t random_uint32(void) diff --git a/tests/sys/prng_sha1prng/main.c b/tests/sys/prng_sha1prng/main.c index 8bd4828f4d..22388668f9 100644 --- a/tests/sys/prng_sha1prng/main.c +++ b/tests/sys/prng_sha1prng/main.c @@ -57,7 +57,7 @@ static void test_prng_sha1prng_java_u32(void) /* seed the generator with 8 bytes similar to the java reference * implementation */ - random_init_by_array(seed, sizeof(seed)); + random_init_by_array(seed, ARRAY_SIZE(seed)); /* request random samples */ for (unsigned i = 0; i < ARRAY_SIZE(seq_seed1); i++) {