boringssl/crypto/fipsmodule/aes/asm
David Benjamin 3c19830f6f Avoid double-dispatch with AES_* vs aes_nohw_*.
In particular, consistently pair bsaes with aes_nohw.

Ideally the aes_nohw_* calls in bsaes-*.pl would be patched out and
bsaes grows its own constant-time key setup
(https://crbug.com/boringssl/256), but I'll sort that out separately. In
the meantime, avoid going through AES_* which now dispatch. This avoids
several nuisances:

1. If we were to add, say, a vpaes-armv7.pl the ABI tests would break.
   Fundamentally, we cannot assume that an AES_KEY has one and only one
   representation and must keep everything matching up.

2. AES_* functions should enable vpaes. This makes AES_* faster and
   constant-time for vector-capable CPUs
   (https://crbug.com/boringssl/263), relevant for QUIC packet number
   encryption, allowing us to add vpaes-armv8.pl
   (https://crbug.com/boringssl/246) without carrying a (likely) mostly
   unused AES implementation.

3. It's silly to double-dispatch when the EVP layer has already
   dispatched.

4. We should avoid asm calling into C. Otherwise, we need to test asm
   for ABI compliance as both caller and callee. Currently we only test
   it for callee compliance. When asm calls into asm, it *should* comply
   with the ABI as caller too, but mistakes don't matter as long as the
   called function triggers it. If the function is asm, this is fixed.
   If it is C, we must care about arbitrary C compiler output.

Bug: 263
Change-Id: Ic85af5c765fd57cbffeaf301c3872bad6c5bbf78
Reviewed-on: https://boringssl-review.googlesource.com/c/34874
Commit-Queue: Adam Langley <agl@google.com>
Reviewed-by: Adam Langley <agl@google.com>
2019-02-22 22:51:51 +00:00
..
aes-586.pl Rename |asm_AES_*| to |aes_nohw_*|. 2018-05-15 23:02:52 +00:00
aes-armv4.pl Rename |asm_AES_*| to |aes_nohw_*|. 2018-05-15 23:02:52 +00:00
aes-x86_64.pl Add AES ABI tests. 2019-01-09 03:54:55 +00:00
aesni-x86_64.pl Patch out unused aesni-x86_64 functions. 2019-02-11 20:25:22 +00:00
aesni-x86.pl Add test of assembly code dispatch. 2019-01-22 20:22:53 +00:00
aesp8-ppc.pl Change ppc64le AES code for FIPS. 2017-05-25 22:02:22 +00:00
aesv8-armx.pl Support execute-only memory for AArch64 assembly. 2018-11-19 19:58:15 +00:00
bsaes-armv7.pl Avoid double-dispatch with AES_* vs aes_nohw_*. 2019-02-22 22:51:51 +00:00
bsaes-x86_64.pl Add test of assembly code dispatch. 2019-01-22 20:22:53 +00:00
vpaes-x86_64.pl Add AES ABI tests. 2019-01-09 03:54:55 +00:00
vpaes-x86.pl Add test of assembly code dispatch. 2019-01-22 20:22:53 +00:00