diff options
| author | patrick-scho | 2023-11-13 19:58:33 +0100 |
|---|---|---|
| committer | patrick-scho | 2023-11-13 19:58:33 +0100 |
| commit | da776f86b42946715c27edd64f7558b9d5080df1 (patch) | |
| tree | c7e340bb253bd38f73368baeec7f12e914a39955 /ext/olm/lib/ed25519/src/seed.c | |
| parent | 21c6e8484b0bd05c27e5a91f2884d431926adc61 (diff) | |
| download | matrix_esp_thesis-da776f86b42946715c27edd64f7558b9d5080df1.tar.gz matrix_esp_thesis-da776f86b42946715c27edd64f7558b9d5080df1.zip | |
add dependencies to repo
Diffstat (limited to 'ext/olm/lib/ed25519/src/seed.c')
| -rw-r--r-- | ext/olm/lib/ed25519/src/seed.c | 40 |
1 files changed, 40 insertions, 0 deletions
diff --git a/ext/olm/lib/ed25519/src/seed.c b/ext/olm/lib/ed25519/src/seed.c new file mode 100644 index 0000000..25e5182 --- /dev/null +++ b/ext/olm/lib/ed25519/src/seed.c @@ -0,0 +1,40 @@ +#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
\ No newline at end of file |
