#include "random.h" #include "ed25519.h" #ifndef ED25519_NO_SEED #ifdef _WIN32 #include #include #else #include #endif int random_bytes(unsigned char* dest, size_t size) { #ifdef _WIN32 HCRYPTPROV prov; if (!CryptAcquireContext(&prov, NULL, NULL, PROV_RSA_FULL, CRYPT_VERIFYCONTEXT)) { return 1; } if (!CryptGenRandom(prov, size, dest)) { CryptReleaseContext(prov, 0); return 1; } CryptReleaseContext(prov, 0); #else FILE *f = fopen("/dev/urandom", "rb"); if (f == NULL) { return 1; } fread(dest, 1, size, f); fclose(f); #endif return 0; } #endif