Веб-сайт самохостера Lotigara

summaryrefslogtreecommitdiff
path: root/source/core/StarSecureRandom_windows.cpp
diff options
context:
space:
mode:
authorKae <80987908+Novaenia@users.noreply.github.com>2023-06-20 14:33:09 +1000
committerKae <80987908+Novaenia@users.noreply.github.com>2023-06-20 14:33:09 +1000
commit6352e8e3196f78388b6c771073f9e03eaa612673 (patch)
treee23772f79a7fbc41bc9108951e9e136857484bf4 /source/core/StarSecureRandom_windows.cpp
parent6741a057e5639280d85d0f88ba26f000baa58f61 (diff)
everything everywhere
all at once
Diffstat (limited to 'source/core/StarSecureRandom_windows.cpp')
-rw-r--r--source/core/StarSecureRandom_windows.cpp21
1 files changed, 21 insertions, 0 deletions
diff --git a/source/core/StarSecureRandom_windows.cpp b/source/core/StarSecureRandom_windows.cpp
new file mode 100644
index 0000000..e118991
--- /dev/null
+++ b/source/core/StarSecureRandom_windows.cpp
@@ -0,0 +1,21 @@
+#include "StarSecureRandom.hpp"
+#include <windows.h>
+#include <wincrypt.h>
+
+namespace Star {
+
+ByteArray secureRandomBytes(size_t size) {
+ HCRYPTPROV context = 0;
+ auto res = ByteArray(size, '\0');
+
+ CryptAcquireContext(&context, 0, MS_DEF_PROV, PROV_RSA_FULL, CRYPT_VERIFYCONTEXT);
+ auto success = CryptGenRandom(context, size, (PBYTE)res.ptr());
+ CryptReleaseContext(context, 0);
+
+ if (!success)
+ throw StarException("Could not read random bytes from source.");
+
+ return res;
+}
+
+}