- Fix with obtaining random number

- Making optional the argument of f_rng

Signed-off-by: Pol Henarejos <pol.henarejos@cttc.es>
This commit is contained in:
Pol Henarejos
2022-01-24 18:11:20 +01:00
parent d9697003a3
commit 62beedfccc

View File

@@ -54,8 +54,10 @@ random_fini (void)
const uint8_t * const uint8_t *
random_bytes_get (void) random_bytes_get (void)
{ {
static uint32_t return_word[RANDOM_BYTES_LENGTH/sizeof (uint32_t)];
neug_wait_full (); neug_wait_full ();
return (const uint8_t *)random_word; memcpy(return_word, random_word, sizeof(return_word));
return (const uint8_t *)return_word;
} }
/* /*
@@ -91,7 +93,7 @@ int
random_gen (void *arg, unsigned char *out, size_t out_len) random_gen (void *arg, unsigned char *out, size_t out_len)
{ {
uint8_t *index_p = (uint8_t *)arg; uint8_t *index_p = (uint8_t *)arg;
uint8_t index = *index_p; uint8_t index = index_p ? *index_p : 0;
size_t n; size_t n;
while (out_len) while (out_len)
@@ -100,7 +102,7 @@ random_gen (void *arg, unsigned char *out, size_t out_len)
n = RANDOM_BYTES_LENGTH - index; n = RANDOM_BYTES_LENGTH - index;
if (n > out_len) if (n > out_len)
n = out_len; n = out_len;
memcpy (out, ((unsigned char *)random_word) + index, n); memcpy (out, ((unsigned char *)random_word) + index, n);
out += n; out += n;
@@ -114,7 +116,8 @@ random_gen (void *arg, unsigned char *out, size_t out_len)
} }
} }
*index_p = index; if (index_p)
*index_p = index;
return 0; return 0;
} }