Hi,

I have some doubts/questions on how to use methods (for ex: 
RAND_set_rand_method) in multi threaded application which use OpenSSL. In my 
application (running on OpenSSL 1.1.1d) there are two threads which use 
OpenSSL, both threads perform very different operations. The issue I am facing 
is as below:

Thread T1 calls RAND_set_rand_method() and sets RAND_METHOD structure. This is 
very specific to T1s use case. When thread T2 wants to create SSL_CTX it calls 
SSL_CTX_new() which then calls RAND_priv_bytes(). I am observing that the 
function RAND_priv_bytes() is calling the function set by T1 by RAND_METHOD in 
RAND_set_rand_method().

Essentially RAND_METHOD function set by thread T1 are getting called by thread 
T2.

Q1: I want to know is there any way to avoid this problem? I want thread T2 to 
call default RAND methods and avoid calling methods set by thread T1. This is 
not only for RAND methods, but for any other methods.

Q2: Also, is it possible to run OpenSSL as separate instance per thread (where 
each thread can do its own OpenSSL initialization) so that they can avoid above 
mentioned problem?

Thank you,
Vishwanath M


Reply via email to