summaryrefslogtreecommitdiff
path: root/kit/secure_random.c
diff options
context:
space:
mode:
authorMitya Selivanov <automainint@guattari.tech>2024-11-17 05:24:04 +0100
committerMitya Selivanov <automainint@guattari.tech>2024-11-17 05:24:04 +0100
commitd5a727a062e4d727491f4e7f047269d60a93a8cf (patch)
tree565aec155ab056f1bef8ddc7dc78d52e65aa76b7 /kit/secure_random.c
parent4ba961dcbf60f7c12f53f46baa261757e15d5931 (diff)
downloadsaw-d5a727a062e4d727491f4e7f047269d60a93a8cf.zip
Remove lots of dependencies
Diffstat (limited to 'kit/secure_random.c')
-rw-r--r--kit/secure_random.c45
1 files changed, 0 insertions, 45 deletions
diff --git a/kit/secure_random.c b/kit/secure_random.c
deleted file mode 100644
index 2565f6f..0000000
--- a/kit/secure_random.c
+++ /dev/null
@@ -1,45 +0,0 @@
-#include "secure_random.h"
-
-#include <assert.h>
-#include <stdio.h>
-#include <stdlib.h>
-
-#if defined(_WIN32) && !defined(__CYGWIN__)
-# ifndef WIN32_LEAN_AND_MEAN
-# define WIN32_LEAN_AND_MEAN 1
-# endif
-# include <windows.h>
-# include <wincrypt.h>
-#else
-# include <unistd.h>
-#endif
-
-s32 kit_secure_random(i64 size, void *data) {
- assert(size >= 0);
- assert(data != NULL);
-
- if (size <= 0 || data == NULL)
- return KIT_ERROR_INVALID_ARGUMENT;
-
-#if defined(_WIN32) && !defined(__CYGWIN__)
- HCRYPTPROV prov = 0;
- if (!CryptAcquireContextW(&prov, NULL, NULL, PROV_RSA_FULL,
- CRYPT_VERIFYCONTEXT | CRYPT_SILENT) ||
- !CryptGenRandom(prov, (DWORD) size, (BYTE *) data) ||
- !CryptReleaseContext(prov, 0))
- return KIT_ERROR_RESOURCE_UNAVAILABLE;
-#else
- FILE *f = fopen("/dev/urandom", "rb");
-
- if (f == NULL)
- return KIT_ERROR_RESOURCE_UNAVAILABLE;
-
- i64 n = (i64) fread(data, 1, size, f);
- fclose(f);
-
- if (n != size)
- return KIT_ERROR_RESOURCE_UNAVAILABLE;
-#endif
-
- return KIT_OK;
-}