hardened_malloc/random.h

25 lines
593 B
C
Raw Normal View History

2018-08-22 00:53:22 +05:30
#ifndef RANDOM_H
#define RANDOM_H
2018-08-24 02:00:44 +05:30
#include <stdint.h>
2018-08-26 08:30:00 +05:30
#include "chacha.h"
#define RANDOM_CACHE_SIZE 256ULL
#define RANDOM_RESEED_SIZE 256ULL * 1024
2018-08-24 02:00:44 +05:30
2018-08-22 00:53:22 +05:30
struct random_state {
2018-08-24 02:00:44 +05:30
size_t index;
2018-08-26 08:30:00 +05:30
size_t reseed;
chacha_ctx ctx;
2018-08-24 02:00:44 +05:30
uint8_t cache[RANDOM_CACHE_SIZE];
2018-08-22 00:53:22 +05:30
};
void random_state_init(struct random_state *state);
uint16_t get_random_u16(struct random_state *state);
uint16_t get_random_u16_uniform(struct random_state *state, uint16_t bound);
uint64_t get_random_u64(struct random_state *state);
uint64_t get_random_u64_uniform(struct random_state *state, uint64_t bound);
2018-08-22 00:53:22 +05:30
#endif