diff options
Diffstat (limited to '3rdparty/lzma/CPP/7zip/Crypto/RandGen.h')
-rw-r--r-- | 3rdparty/lzma/CPP/7zip/Crypto/RandGen.h | 26 |
1 files changed, 23 insertions, 3 deletions
diff --git a/3rdparty/lzma/CPP/7zip/Crypto/RandGen.h b/3rdparty/lzma/CPP/7zip/Crypto/RandGen.h index cfdcd60d012..3bd69ec2d16 100644 --- a/3rdparty/lzma/CPP/7zip/Crypto/RandGen.h +++ b/3rdparty/lzma/CPP/7zip/Crypto/RandGen.h @@ -1,10 +1,25 @@ // RandGen.h -#ifndef __CRYPTO_RAND_GEN_H -#define __CRYPTO_RAND_GEN_H +#ifndef ZIP7_INC_CRYPTO_RAND_GEN_H +#define ZIP7_INC_CRYPTO_RAND_GEN_H #include "../../../C/Sha256.h" +#ifdef _WIN64 +// #define USE_STATIC_SYSTEM_RAND +#endif + +#ifdef USE_STATIC_SYSTEM_RAND + +#ifdef _WIN32 +#include <ntsecapi.h> +#define MY_RAND_GEN(data, size) RtlGenRandom(data, size) +#else +#define MY_RAND_GEN(data, size) getrandom(data, size, 0) +#endif + +#else + class CRandomGenerator { Byte _buff[SHA256_DIGEST_SIZE]; @@ -12,10 +27,15 @@ class CRandomGenerator void Init(); public: - CRandomGenerator(): _needInit(true) {}; + CRandomGenerator(): _needInit(true) {} void Generate(Byte *data, unsigned size); }; +MY_ALIGN (16) extern CRandomGenerator g_RandomGenerator; +#define MY_RAND_GEN(data, size) g_RandomGenerator.Generate(data, size) + +#endif + #endif |