20#include <openssl/provider.h>
28 ValgrindRandomSetup();
31#if TRINITY_PLATFORM == TRINITY_PLATFORM_WINDOWS
32 if (!std::getenv(
"OPENSSL_MODULES"))
33 OSSL_PROVIDER_set_default_search_path(
nullptr, providerModulePath.string().c_str());
34#define OPENSSL_LEGACY_PROVIDER_FILENAME "legacy.dll"
36#define OPENSSL_LEGACY_PROVIDER_FILENAME "legacy.so"
45 OSSL_PROVIDER_set_default_search_path(
nullptr,
nullptr);
49#include <openssl/rand.h>
51RAND_METHOD
const* default_rand;
53static int Valgrind_RAND_seed(
const void* buf,
int num)
55 VALGRIND_DISCARD(VALGRIND_MAKE_MEM_DEFINED(buf, num));
56 return default_rand->seed(buf, num);
59static int Valgrind_RAND_bytes(
unsigned char* buf,
int num)
61 int ret = default_rand->bytes(buf, num);
62 VALGRIND_DISCARD(VALGRIND_MAKE_MEM_DEFINED(buf, num));
66static void Valgrind_RAND_cleanup(
void)
68 default_rand->cleanup();
71static int Valgrind_RAND_add(
const void* buf,
int num,
double randomness)
73 VALGRIND_DISCARD(VALGRIND_MAKE_MEM_DEFINED(buf, num));
74 return default_rand->add(buf, num, randomness);
77static int Valgrind_RAND_pseudorand(
unsigned char* buf,
int num)
79 int ret = default_rand->pseudorand(buf, num);
80 VALGRIND_DISCARD(VALGRIND_MAKE_MEM_DEFINED(buf, num));
84static int Valgrind_RAND_status(
void)
86 return default_rand->status();
89static RAND_METHOD valgrind_rand;
91void ValgrindRandomSetup()
93 memset(&valgrind_rand, 0,
sizeof(RAND_METHOD));
94 default_rand = RAND_get_rand_method();
95 if (default_rand->seed)
96 valgrind_rand.seed = &Valgrind_RAND_seed;
97 if (default_rand->bytes)
98 valgrind_rand.bytes = &Valgrind_RAND_bytes;
99 if (default_rand->cleanup)
100 valgrind_rand.cleanup = &Valgrind_RAND_cleanup;
101 if (default_rand->add)
102 valgrind_rand.add = &Valgrind_RAND_add;
103 if (default_rand->pseudorand)
104 valgrind_rand.pseudorand = &Valgrind_RAND_pseudorand;
105 if (default_rand->status)
106 valgrind_rand.status = &Valgrind_RAND_status;
107 RAND_set_rand_method(&valgrind_rand);
#define WPWarning(cond, msg)
OSSL_PROVIDER * LegacyProvider
#define OPENSSL_LEGACY_PROVIDER_FILENAME
TC_COMMON_API void threadsSetup(boost::filesystem::path const &providerModulePath)
Needs to be called before threads using openssl are spawned.
TC_COMMON_API void threadsCleanup()
Needs to be called after threads using openssl are despawned.