I'm a little confused about the way Intel AES-NI is supported in OpenSSL
HEAD.

This is just a feature of new CPUs, like SSE is. Yet SSE support is
directly included in the normal assembly routines for x86, while AES-NI
is implemented separately as an engine. Why is that?

Are we slowly moving _all_ the 'special' implementations to engines, and
uncluttering the core implementations? Or are we just being
inconsistent? Or is there some distinction between the two (SSE/AESNI)
that I'm missing, which makes it sensible to treat them differently?

For now, let's at least address the major disadvantage of the engine,
which is that it doesn't even get _used_ unless someone registers it.

diff --git a/crypto/engine/eng_aesni.c b/crypto/engine/eng_aesni.c
index 2a997ca..91fb5b8 100644
--- a/crypto/engine/eng_aesni.c
+++ b/crypto/engine/eng_aesni.c
@@ -106,6 +106,7 @@ void ENGINE_load_aesni (void)
                return;
        ENGINE_add (toadd);
        ENGINE_free (toadd);
+       ENGINE_register_complete (toadd);
        ERR_clear_error ();
 #endif
 }

-- 
David Woodhouse                            Open Source Technology Centre
david.woodho...@intel.com                              Intel Corporation

______________________________________________________________________
OpenSSL Project                                 http://www.openssl.org
Development Mailing List                       openssl-dev@openssl.org
Automated List Manager                           majord...@openssl.org

Reply via email to