|
|
@@ -106,7 +106,11 @@ int get_file(const char *filename, uint8_t **buf)
|
|
|
*/
|
|
|
EXP_FUNC void STDCALL RNG_initialize()
|
|
|
{
|
|
|
- if(rng_started) return;
|
|
|
+ if(rng_started)
|
|
|
+ {
|
|
|
+ ++rng_started;
|
|
|
+ return;
|
|
|
+ }
|
|
|
#if !defined(WIN32) && defined(CONFIG_USE_DEV_URANDOM)
|
|
|
rng_fd = ax_open("/dev/urandom", O_RDONLY);
|
|
|
#elif defined(WIN32) && defined(CONFIG_WIN32_USE_CRYPTO_LIB)
|
|
|
@@ -155,13 +159,13 @@ EXP_FUNC void STDCALL RNG_custom_init(const uint8_t *seed_buf, int size)
|
|
|
*/
|
|
|
EXP_FUNC void STDCALL RNG_terminate(void)
|
|
|
{
|
|
|
- if(!rng_started) return;
|
|
|
+ if(rng_started == 0) return;
|
|
|
+ if(--rng_started) return;
|
|
|
#ifndef WIN32
|
|
|
close(rng_fd);
|
|
|
#elif defined(CONFIG_WIN32_USE_CRYPTO_LIB)
|
|
|
CryptReleaseContext(gCryptProv, 0);
|
|
|
#endif
|
|
|
- rng_started = 0;
|
|
|
}
|
|
|
|
|
|
/**
|