#include "config.h" #include #include #include #include #include #include #include "logerr.h" #include "random.h" int urandom_bytes(const size_t n, uint8_t (*const addr)[]) { int rc = 0; FILE *f = NULL; f = fopen("/dev/urandom", "r"); if (!f) { logerr("fopen(\"/dev/urandom\", \"r\"): %s\n", strerror(errno)); rc = -1; goto out; } const size_t read_count = fread(addr, 1, n, f); if (ferror(f)) { logerr("fread(addr, 1, n, f): %s\n", strerror(errno)); rc = -1; goto out; } assert(read_count == n); out: if (f) { if (fclose(f)) { logerr("fclose(f): %s\n", strerror(errno)); rc = -1; } } return rc; }