Reenable AES-NI in libcrypto
authortb <tb@openbsd.org>
Fri, 6 Sep 2024 09:57:32 +0000 (09:57 +0000)
committertb <tb@openbsd.org>
Fri, 6 Sep 2024 09:57:32 +0000 (09:57 +0000)
commit4ffa82dac1f19f337cd5dd8b2ae033f1374a999c
treef1701bb21c2fd612966f5938abf0a836708d7ba2
parent9d5d5c61129fd7f41b5579a9907d359296c486a2
Reenable AES-NI in libcrypto

The OPENSSL_cpu_caps() change after the last bump missed a crucial bit:
there is more MD mess in the MI code than anticipated, with the result
that AES is now used without AES-NI on amd64 and i386, hurting machines
that previously greatly benefitted from it.

Temporarily add an internal crypto_cpu_caps_ia32() API that returns the
OPENSSL_ia32cap_P or 0 like OPENSSL_cpu_caps() previously did. This can
be improved after the release.

Regression reported and fix tested by Mark Patruck.
No impact on public ABI or API.

with/ok jsing

PS: Next time my pkg_add feels very slow, I should perhaps not mechanically
blame IEEE 802.11...
lib/libcrypto/cryptlib.c
lib/libcrypto/crypto_internal.h
lib/libcrypto/evp/e_aes.c
lib/libcrypto/modes/gcm128.c