<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<style type="text/css" style="display:none;"><!-- P {margin-top:0;margin-bottom:0;} --></style>
</head>
<body dir="ltr">
<div id="divtagdefaultwrapper" style="font-size:12pt;color:#000000;font-family:Calibri,Helvetica,sans-serif;" dir="ltr">
<div id="divtagdefaultwrapper" style="font-size: 12pt; color: rgb(0, 0, 0); font-family: Calibri, Helvetica, sans-serif, "EmojiFont", "Apple Color Emoji", "Segoe UI Emoji", NotoColorEmoji, "Segoe UI Symbol", "Android Emoji", EmojiSymbols;" dir="ltr">
<p>Hi,</p>
<p><font face="monospace, monospace"><b>crypto:engine_list()</b></font> returns what engine is loaded for OTP ssl (<span>OTP just uses crypto lib and not openssl</span> ) and not what is available
<br>
</p>
<p>(it loops too get all engines by using <span>ENGINE_get_first()</span> and <span>
ENGINE_get_next(</span>) from crypto lib). OTP just uses crypto lib and not openssl.</p>
<p><br>
</p>
<p>So after you executed <font face="monospace, monospace">{ok, Engine} = crypto:engine_load(<<"gost">>, [], []).</font> you should see gost in the list.</p>
<p><br>
</p>
<p>Interesting with dstu, where is that engine located. Same place as gost ?</p>
<p>Normally if you just use the id, the engine must be located in the OpenSSL/LibreSSL installation
<span class="code">"engines</span>" directory for crypto lib to find it. <br>
</p>
<p>See crypto users guide for loading from other directory.</p>
<p>Perhaps openssl has some other config where to find engines that not affects cryptolib.</p>
<p><br>
</p>
<p>BR Lars Thorsén</p>
<p>OTP Team<br>
</p>
<div><br>
</div>
<p></p>
<p><br>
</p>
<p><br>
</p>
</div>
<hr style="display:inline-block;width:98%" tabindex="-1">
<div id="divRplyFwdMsg" dir="ltr"><font style="font-size:11pt" color="#000000" face="Calibri, sans-serif"><b>From:</b> erlang-questions-bounces@erlang.org <erlang-questions-bounces@erlang.org> on behalf of Eugene Pirogov <iamexile@gmail.com><br>
<b>Sent:</b> Thursday, January 18, 2018 5:43:05 PM<br>
<b>To:</b> erlang-questions@erlang.org<br>
<b>Subject:</b> [erlang-questions] crypto:engine_list() returns empty list</font>
<div> </div>
</div>
<div>
<div dir="ltr">Hi,
<div><br>
</div>
<div>I'm running <font face="monospace, monospace"><b>crypto:engine_list()</b></font>, but it won't list any OpenSSL engines I have installed. What can be the reason?</div>
<div><br>
</div>
<div>I can see the engine in the system by running the following:</div>
<div><br>
</div>
<blockquote style="margin:0px 0px 0px 40px; border:none; padding:0px">
<div>
<div><font face="monospace, monospace"># openssl engine -t gost</font></div>
</div>
<div>
<div><font face="monospace, monospace">(gost) Reference implementation of GOST engine</font></div>
</div>
<div>
<div><font face="monospace, monospace">     [ available ]</font></div>
</div>
<div><font face="monospace, monospace"><br>
</font></div>
<div>
<div><font face="monospace, monospace"># openssl engine -t dstu</font></div>
</div>
<div>
<div><font face="monospace, monospace">(dstu) Reference implementation of DSTU engine</font></div>
</div>
<div>
<div><font face="monospace, monospace">     [ available ]</font></div>
</div>
</blockquote>
<div><br>
</div>
<div>However when running from erl repl, I get this:</div>
<div><br>
</div>
<blockquote style="margin:0px 0px 0px 40px; border:none; padding:0px">
<div>
<div><font face="monospace, monospace"># erl</font></div>
</div>
<div>
<div><font face="monospace, monospace">Erlang/OTP 20 [erts-9.2] [source] [64-bit] [smp:4:4] [ds:4:4:10] [async-threads:10] [hipe] [kernel-poll:false]</font></div>
</div>
<div>
<div><font face="monospace, monospace"><br>
</font></div>
</div>
<div>
<div><font face="monospace, monospace">Eshell V9.2  (abort with ^G)</font></div>
</div>
<div>
<div><font face="monospace, monospace">1> crypto:engine_list().</font></div>
</div>
<div>
<div><font face="monospace, monospace">[]</font></div>
</div>
</blockquote>
<div>
<div><br>
</div>
<div>What's weird is that if I try to forcefully load the engine, it <i>works sometimes.</i></div>
<div>
<ul>
<li>it works with gost engine:<br>
<br>
<div><font face="monospace, monospace"># erl</font></div>
<div><font face="monospace, monospace">Erlang/OTP 20 [erts-9.2] [source] [64-bit] [smp:4:4] [ds:4:4:10] [async-threads:10] [hipe] [kernel-poll:false]</font></div>
<div><font face="monospace, monospace"><br>
</font></div>
<div><font face="monospace, monospace">Eshell V9.2  (abort with ^G)</font></div>
<div><font face="monospace, monospace">1> {ok, Engine} = crypto:engine_load(<<"gost">>, [], []).</font></div>
<div><font face="monospace, monospace">{ok,#Ref<0.950608548.<wbr>1984823298.71941>}<br>
<br>
</font></div>
</li><li>it does not work with dstu engine:<br>
<div>
<div><br class="x_m_-6293851380270026687gmail-Apple-interchange-newline">
<font face="monospace, monospace"># erl</font></div>
<div><font face="monospace, monospace">Erlang/OTP 20 [erts-9.2] [source] [64-bit] [smp:4:4] [ds:4:4:10] [async-threads:10] [hipe] [kernel-poll:false]</font></div>
<div><font face="monospace, monospace"><br>
</font></div>
<div><font face="monospace, monospace">Eshell V9.2  (abort with ^G)</font></div>
<div><font face="monospace, monospace">1> {ok, Engine} = crypto:engine_load(<<"dstu">>, [], []).</font></div>
<div><font face="monospace, monospace">** exception error: no match of right hand side value {error,bad_engine_id}</font></div>
</div>
</li></ul>
</div>
</div>
<div>
<div>What am I missing? How can I get to load <a href="https://github.com/dstucrypt/openssl-dstu/commits/dstu-1_0_1h">
dstu engine</a> in my case?</div>
<div><br>
</div>
-- <br>
<div class="x_m_-6293851380270026687gmail-m_8885458731413169712gmail_signature">
<div dir="ltr"><a href="http://www.gmile.me" target="_blank">http://www.gmile.me</a><br>
</div>
</div>
</div>
</div>
</div>
</div>
</body>
</html>