summaryrefslogtreecommitdiff
path: root/src/lib/libcrypto/engine/eng_aesni.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/lib/libcrypto/engine/eng_aesni.c')
-rw-r--r--src/lib/libcrypto/engine/eng_aesni.c16
1 files changed, 5 insertions, 11 deletions
diff --git a/src/lib/libcrypto/engine/eng_aesni.c b/src/lib/libcrypto/engine/eng_aesni.c
index 5f9a36236a..92794f6086 100644
--- a/src/lib/libcrypto/engine/eng_aesni.c
+++ b/src/lib/libcrypto/engine/eng_aesni.c
@@ -1,4 +1,4 @@
1/* $OpenBSD: eng_aesni.c,v 1.8 2015/02/10 09:46:30 miod Exp $ */ 1/* $OpenBSD: eng_aesni.c,v 1.9 2016/11/04 17:30:30 miod Exp $ */
2/* 2/*
3 * Support for Intel AES-NI intruction set 3 * Support for Intel AES-NI intruction set
4 * Author: Huang Ying <ying.huang@intel.com> 4 * Author: Huang Ying <ying.huang@intel.com>
@@ -93,10 +93,11 @@
93 defined(_M_AMD64) || defined(_M_X64) || \ 93 defined(_M_AMD64) || defined(_M_X64) || \
94 defined(OPENSSL_IA32_SSE2)) && !defined(OPENSSL_NO_ASM) && !defined(__i386__) 94 defined(OPENSSL_IA32_SSE2)) && !defined(OPENSSL_NO_ASM) && !defined(__i386__)
95#define COMPILE_HW_AESNI 95#define COMPILE_HW_AESNI
96#include "x86_arch.h"
96#endif 97#endif
97static ENGINE *ENGINE_aesni (void); 98static ENGINE *ENGINE_aesni(void);
98 99
99void ENGINE_load_aesni (void) 100void ENGINE_load_aesni(void)
100{ 101{
101/* On non-x86 CPUs it just returns. */ 102/* On non-x86 CPUs it just returns. */
102#ifdef COMPILE_HW_AESNI 103#ifdef COMPILE_HW_AESNI
@@ -302,20 +303,13 @@ aesni_ofb128_encrypt(const unsigned char *in, unsigned char *out,
302} 303}
303/* ===== Engine "management" functions ===== */ 304/* ===== Engine "management" functions ===== */
304 305
305typedef unsigned long long IA32CAP;
306
307/* Prepare the ENGINE structure for registration */ 306/* Prepare the ENGINE structure for registration */
308static int 307static int
309aesni_bind_helper(ENGINE *e) 308aesni_bind_helper(ENGINE *e)
310{ 309{
311 int engage; 310 int engage;
312 311
313 if (sizeof(OPENSSL_ia32cap_P) > 4) { 312 engage = (OPENSSL_cpu_caps() & CPUCAP_MASK_AESNI) != 0;
314 engage = ((IA32CAP)OPENSSL_ia32cap_P >> 57) & 1;
315 } else {
316 IA32CAP OPENSSL_ia32_cpuid(void);
317 engage = (OPENSSL_ia32_cpuid() >> 57) & 1;
318 }
319 313
320 /* Register everything or return with an error */ 314 /* Register everything or return with an error */
321 if (!ENGINE_set_id(e, aesni_id) || 315 if (!ENGINE_set_id(e, aesni_id) ||