<html>
<head>
<meta http-equiv="Content-Type" content="text/html;
charset=windows-1252">
</head>
<body>
There isn't an easy a way to do what you want in 1.1.1.
RAND_set_rand_method replaces the RNG for all of OpenSSL. In theory
your RAND_METHOD could detect which thread it is running in and do
different things for each. I'm not sure this is a good idea
however.<br>
<br>
Why aren't the random number from your first thread good enough for
the second? Good random numbers are just that - random. It should
be impossible to distinguish the two streams.<br>
<br>
In OpenSSL 3.0 there are ways to achieve what you're wanting.<br>
<br>
<br>
Pauli<br>
<br>
<div class="moz-cite-prefix">On 2/4/21 4:24 pm, Vishwanath
Mahajanshetty wrote:<br>
</div>
<blockquote type="cite"
cite="mid:DM6PR02MB522551D032F8D483A1354D38BB7A9@DM6PR02MB5225.namprd02.prod.outlook.com">
<meta http-equiv="Content-Type" content="text/html;
charset=windows-1252">
<meta name="Generator" content="Microsoft Word 15 (filtered
medium)">
<style>@font-face
{font-family:"Cambria Math";
panose-1:2 4 5 3 5 4 6 3 2 4;}@font-face
{font-family:Calibri;
panose-1:2 15 5 2 2 2 4 3 2 4;}p.MsoNormal, li.MsoNormal, div.MsoNormal
{margin:0cm;
font-size:11.0pt;
font-family:"Calibri",sans-serif;}.MsoChpDefault
{mso-style-type:export-only;}div.WordSection1
{page:WordSection1;}</style>
<div class="WordSection1">
<p class="MsoNormal"><span lang="EN-US">Hi,<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US"><o:p> </o:p></span></p>
<p class="MsoNormal"><span lang="EN-US">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:<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US"><o:p> </o:p></span></p>
<p class="MsoNormal"><span lang="EN-US">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().<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US"><o:p> </o:p></span></p>
<p class="MsoNormal"><span lang="EN-US">Essentially RAND_METHOD
function set by thread T1 are getting called by thread T2.<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US"><o:p> </o:p></span></p>
<p class="MsoNormal"><b><span lang="EN-US">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.<o:p></o:p></span></b></p>
<p class="MsoNormal"><b><span lang="EN-US"><o:p> </o:p></span></b></p>
<p class="MsoNormal"><span lang="EN-US">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?<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US"><o:p> </o:p></span></p>
<p class="MsoNormal"><span lang="EN-US">Thank you,<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US">Vishwanath M</span></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
</blockquote>
<br>
</body>
</html>