Browse Source

fix issue of SystemFunction036 not found at advapi32 when build libsodium .

pull/196/merge
Sui 10 years ago
committed by Max Lv
parent
commit
8b472324e4
2 changed files with 16 additions and 0 deletions
  1. 8
      libsodium/src/libsodium/randombytes/salsa20/randombytes_salsa20_random.c
  2. 8
      libsodium/src/libsodium/randombytes/sysrandom/randombytes_sysrandom.c

8
libsodium/src/libsodium/randombytes/salsa20/randombytes_salsa20_random.c

@ -30,9 +30,13 @@
# if defined(__cplusplus)
extern "C"
# endif
#if defined(__MINGW32__)
BOOLEAN (APIENTRY *RtlGenRandom)(PVOID, ULONG);
#else
BOOLEAN NTAPI RtlGenRandom(PVOID RandomBuffer, ULONG RandomBufferLength);
# pragma comment(lib, "advapi32.lib")
#endif
#endif
#define SALSA20_RANDOM_BLOCK_SIZE crypto_core_salsa20_OUTPUTBYTES
#define SHA512_BLOCK_SIZE 128U
@ -189,6 +193,10 @@ randombytes_salsa20_random_stir(void)
abort(); /* LCOV_EXCL_LINE */
}
#else /* _WIN32 */
#if defined (__MINGW32__)
HMODULE lib = LoadLibraryW (L"advapi32.dll");
RtlGenRandom = (BOOLEAN(APIENTRY*)(PVOID,ULONG))GetProcAddress (lib,"SystemFunction036");
#endif
if (! RtlGenRandom((PVOID) m0, (ULONG) sizeof m0)) {
abort(); /* LCOV_EXCL_LINE */
}

8
libsodium/src/libsodium/randombytes/sysrandom/randombytes_sysrandom.c

@ -26,9 +26,13 @@
# if defined(__cplusplus)
extern "C"
# endif
#if defined(__MINGW32__)
BOOLEAN (APIENTRY *RtlGenRandom)(PVOID, ULONG);
#else
BOOLEAN NTAPI RtlGenRandom(PVOID RandomBuffer, ULONG RandomBufferLength);
# pragma comment(lib, "advapi32.lib")
#endif
#endif
#ifdef __OpenBSD__
@ -211,6 +215,10 @@ randombytes_sysrandom_buf(void * const buf, const size_t size)
if (size > (size_t) 0xffffffff) {
abort(); /* LCOV_EXCL_LINE */
}
#if defined (__MINGW32__)
HMODULE lib = LoadLibraryW (L"advapi32.dll");
RtlGenRandom = (BOOLEAN(APIENTRY*)(PVOID,ULONG))GetProcAddress (lib,"SystemFunction036");
#endif
if (! RtlGenRandom((PVOID) buf, (ULONG) size)) {
abort(); /* LCOV_EXCL_LINE */
}

Loading…
Cancel
Save