Codebase list massdns / dc7733bf-bb3b-44a2-8e71-623abb905bd8/main random.h
dc7733bf-bb3b-44a2-8e71-623abb905bd8/main

Tree @dc7733bf-bb3b-44a2-8e71-623abb905bd8/main (Download .tar.gz)

random.h @dc7733bf-bb3b-44a2-8e71-623abb905bd8/mainraw · history · blame

#ifndef MASSRESOLVER_RANDOM_H
#define MASSRESOLVER_RANDOM_H

#include <stdio.h>
#include <stdbool.h>

static FILE *randomness;

bool urandom_init()
{
    randomness = fopen("/dev/urandom", "r");
    return randomness != NULL;
}

void urandom_get(void *dst, size_t len)
{
    size_t read = 0;
    while(read < len)
    {
        read += fread(dst, len - read, 1, randomness);
    }
}

size_t urandom_size_t()
{
    size_t result;
    urandom_get(&result, sizeof(result));
    return result;
}

int urandom_close()
{
    if(!randomness)
    {
        return 0;
    }
    return fclose(randomness);
}

#endif //MASSRESOLVER_RANDOM_H