1234567891011121314151617181920212223242526272829303132333435363738394041 |
- #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
|