diff options
author | Kae <80987908+Novaenia@users.noreply.github.com> | 2023-06-20 14:33:09 +1000 |
---|---|---|
committer | Kae <80987908+Novaenia@users.noreply.github.com> | 2023-06-20 14:33:09 +1000 |
commit | 6352e8e3196f78388b6c771073f9e03eaa612673 (patch) | |
tree | e23772f79a7fbc41bc9108951e9e136857484bf4 /source/core/StarSecureRandom_windows.cpp | |
parent | 6741a057e5639280d85d0f88ba26f000baa58f61 (diff) |
everything everywhere
all at once
Diffstat (limited to 'source/core/StarSecureRandom_windows.cpp')
-rw-r--r-- | source/core/StarSecureRandom_windows.cpp | 21 |
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; +} + +} |