On Mit, 2017-03-08 at 09:09 +0100, Kaspar Schleiser wrote:
> Hey,
> 
> On 03/08/2017 12:18 AM, Cenk Gündoğan wrote:
> > 
> > we rather
> > should opt to allow local states for each thread (not excluding a global
> > state).
> Interesting. Up to now our trouble with RNGs was mostly on how to make
> them more random. Now we're trying to make them predictable. What's your
> use case for that?

Using the random numbers for a stream cipher, for instance.

> How about an interface a la
> 
> rand_init_<RNGname>(rnd_<RNGname>_t *rnd);
> rand_seed32(rnd_t *rnd, uint32_t);
> rand_seed(rnd_t *rnd, const uint8_t *in, size_t len);
> rand_get(rnd_t *rnd, uint8_t *out, size_t n);
> rand_get32(rnd_t *rnd);
> 
> typedef struct {
>       <seed, get function pointer>
> } rnd_t;
> 
> typedef struct {
>       rnd_t rnd;
>       <tinymt32-state>;
> } rnd_tinymt32_t;
> 
> That way we'd have:
> 
> - user controlled state
> - the ability to overload (e.g., combine hwrng, collected entropy, prng
> but with the same interface)
> 

Look good, imo.

cheers
Mathias



_______________________________________________
devel mailing list
devel@riot-os.org
https://lists.riot-os.org/mailman/listinfo/devel

Reply via email to