Codebase list massdns / 88b950b8-3d2e-4742-86ed-5c60ae9420e9/main random.h
88b950b8-3d2e-4742-86ed-5c60ae9420e9/main

Tree @88b950b8-3d2e-4742-86ed-5c60ae9420e9/main (Download .tar.gz)

random.h @88b950b8-3d2e-4742-86ed-5c60ae9420e9/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