<div dir="ltr">Hi!<div><br></div><div>We do welcome a pull request to improve crypto internals. If you want to change the API </div><div>remember that backwards-compatibility is important to us.  So please communicate with us for any API changes,<br></div><div>even additions before putting too much effort into writing test cases, documentation etc.</div><div><br></div><div>Regards Ingela Erlang/OTP team - Ericsson AB  </div><div><br></div><div><div class="gmail_extra"><div class="gmail_quote"><br></div><div class="gmail_quote">2015-02-11 17:11 GMT+01:00 Andreas Schultz <span dir="ltr"><<a href="mailto:aschultz@tpip.net" target="_blank">aschultz@tpip.net</a>></span>:<br><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex"><span><br>
<br>
----- On 11 Feb, 2015, at 16:59, Loïc Hoguin <a href="mailto:essen@ninenines.eu" target="_blank">essen@ninenines.eu</a> wrote:<br>
<br>
> On 02/11/2015 04:29 PM, Andreas Schultz wrote:<br>
>> The cause for this is not the cryptographic library, but Erlang's interface to<br>
>> it.<br>
>> Erlang's crypto application uses a non-optimized OpenSSL API to execute the AES<br>
>> encryption, while enacl seems to uses an highly optimized version.<br>
>><br>
>> Normally when doing AES, you first have to schedule the key, creating an<br>
>> encryption<br>
>> context and then reuse that context for every block. Since the crypto<br>
>> application<br>
>> doesn't have stream_cipher versions of AES, it has to go through the key<br>
>> scheduling<br>
>> on every invocation (every block). Also, OpenSSL can use assembler optimized AES<br>
>> functions on modern CPU's, but those are only available when OpenSSL's EVP<br>
>> interfaces<br>
>> are used. Erlang's crypto does not use those.<br>
><br>
> I have seen some work around EVP in the past few months. Is this not<br>
> what you are talking about?<br>
><br>
> commit 425a34001fdd5de8396c5c9903f4f38a9d49a15c<br>
> Author: Alex Wilson <<a href="mailto:alex@cooperi.net" target="_blank">alex@cooperi.net</a>><br>
> Date:   Thu Oct 9 21:39:29 2014 +1000<br>
><br>
>     crypto: use EVP for AES-CBC<br>
><br>
>     This enables the use of hardware acceleration for AES crypto<br>
>     on newer Intel CPUs (AES-NI), among other platforms.<br>
<br>
</span>That is a good step in the right direction. Still, it has to recreate the<br>
EVP crypto context for every invocation. There was a discussion about<br>
keeping the EVP context between invocations and use the crypto<br>
stream_encrypt/decrypt instead. That would eliminate the overhead of the<br>
context creation between calls.<br>
<span><font color="#888888"><br>
Andreas<br>
</font></span><span><br>
> Cheers.<br>
><br>
> --<br>
> Loïc Hoguin<br>
> <a href="http://ninenines.eu" target="_blank">http://ninenines.eu</a><br>
<br>
</span><span>--<br>
--<br>
Dipl. Inform.<br>
Andreas Schultz<br>
</span><div><div>_______________________________________________<br>
erlang-questions mailing list<br>
<a href="mailto:erlang-questions@erlang.org" target="_blank">erlang-questions@erlang.org</a><br>
<a href="http://erlang.org/mailman/listinfo/erlang-questions" target="_blank">http://erlang.org/mailman/listinfo/erlang-questions</a><br>
</div></div></blockquote></div><br></div></div></div>