#include "ed25519.h" #ifndef ED25519_NO_SEED #ifdef _WIN32 #include <Windows.h> #include <Wincrypt.h> #else #include <stdio.h> #endif int ed25519_create_seed(unsigned char *seed) { #ifdef _WIN32 HCRYPTPROV prov; if (!CryptAcquireContext(&prov, NULL, NULL, PROV_RSA_FULL, CRYPT_VERIFYCONTEXT)) { return 1; } if (!CryptGenRandom(prov, 32, seed)) { CryptReleaseContext(prov, 0); return 1; } CryptReleaseContext(prov, 0); #else FILE *f = fopen("/dev/urandom", "rb"); if (f == NULL) { return 1; } fread(seed, 1, 32, f); fclose(f); #endif return 0; } #endif