linux/arch/arm64/crypto
Ard Biesheuvel 1abee99eaf crypto: arm64/aes - reimplement bit-sliced ARM/NEON implementation for arm64
This is a reimplementation of the NEON version of the bit-sliced AES
algorithm. This code is heavily based on Andy Polyakov's OpenSSL version
for ARM, which is also available in the kernel. This is an alternative for
the existing NEON implementation for arm64 authored by me, which suffers
from poor performance due to its reliance on the pathologically slow four
register variant of the tbl/tbx NEON instruction.

This version is about ~30% (*) faster than the generic C code, but only in
cases where the input can be 8x interleaved (this is a fundamental property
of bit slicing). For this reason, only the chaining modes ECB, XTS and CTR
are implemented. (The significance of ECB is that it could potentially be
used by other chaining modes)

* Measured on Cortex-A57. Note that this is still an order of magnitude
  slower than the implementations that use the dedicated AES instructions
  introduced in ARMv8, but those are part of an optional extension, and so
  it is good to have a fallback.

Signed-off-by: Ard Biesheuvel <ard.biesheuvel@linaro.org>
Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
2017-01-13 00:26:51 +08:00
..
.gitignore crypto: arm64/sha2 - add generated .S files to .gitignore 2016-11-29 16:06:56 +08:00
aes-ce-ccm-core.S crypto: arm64/aes-ccm-ce: fix for big endian 2016-10-21 11:03:43 +08:00
aes-ce-ccm-glue.c crypto: arm64/aes-ce-ccm - Fix AEAD decryption length 2016-12-01 21:06:37 +08:00
aes-ce-cipher.c crypto: arm64/aes-ce - fix for big endian 2016-10-21 11:03:42 +08:00
aes-ce-setkey.h arm64/crypto: use crypto instructions to generate AES key schedule 2014-11-06 17:25:28 +00:00
aes-ce.S crypto: arm64/aes-xts-ce: fix for big endian 2016-10-21 11:03:45 +08:00
aes-cipher-core.S crypto: arm64/aes - add scalar implementation 2017-01-13 00:26:49 +08:00
aes-cipher-glue.c crypto: arm64/aes - add scalar implementation 2017-01-13 00:26:49 +08:00
aes-glue.c crypto: arm64/aes-blk - expose AES-CTR as synchronous cipher as well 2017-01-13 00:26:49 +08:00
aes-modes.S crypto: arm64/aes-xts-ce: fix for big endian 2016-10-21 11:03:45 +08:00
aes-neon.S crypto: arm64/aes-neon - fix for big endian 2016-10-21 11:03:45 +08:00
aes-neonbs-core.S crypto: arm64/aes - reimplement bit-sliced ARM/NEON implementation for arm64 2017-01-13 00:26:51 +08:00
aes-neonbs-glue.c crypto: arm64/aes - reimplement bit-sliced ARM/NEON implementation for arm64 2017-01-13 00:26:51 +08:00
chacha20-neon-core.S crypto: arm64/chacha20 - implement NEON version based on SSE3 code 2017-01-13 00:26:48 +08:00
chacha20-neon-glue.c crypto: arm64/chacha20 - implement NEON version based on SSE3 code 2017-01-13 00:26:48 +08:00
crc32-arm64.c crypto: arm64/crc32 - bring in line with generic CRC32 2015-05-07 11:16:24 +08:00
crc32-ce-core.S crypto: arm64/crc32 - accelerated support based on x86 SSE implementation 2016-12-07 20:01:22 +08:00
crc32-ce-glue.c crypto: arm64/crc32 - accelerated support based on x86 SSE implementation 2016-12-07 20:01:22 +08:00
crct10dif-ce-core.S crypto: arm64/crct10dif - port x86 SSE implementation to arm64 2016-12-07 20:01:17 +08:00
crct10dif-ce-glue.c crypto: arm64/crct10dif - port x86 SSE implementation to arm64 2016-12-07 20:01:17 +08:00
ghash-ce-core.S crypto: arm64/ghash-ce - fix for big endian 2016-10-21 11:03:43 +08:00
ghash-ce-glue.c arm64/crypto: improve performance of GHASH algorithm 2014-06-18 12:40:54 +01:00
Kconfig crypto: arm64/aes - reimplement bit-sliced ARM/NEON implementation for arm64 2017-01-13 00:26:51 +08:00
Makefile crypto: arm64/aes - reimplement bit-sliced ARM/NEON implementation for arm64 2017-01-13 00:26:51 +08:00
sha1-ce-core.S crypto: arm64/sha1-ce - fix for big endian 2016-10-21 11:03:43 +08:00
sha1-ce-glue.c crypto: arm64/sha1-ce - prevent asm code finalization in final() path 2015-05-07 11:16:25 +08:00
sha2-ce-core.S crypto: arm64/sha2-ce - fix for big endian 2016-10-21 11:03:43 +08:00
sha2-ce-glue.c crypto: arm64/sha2-ce - prevent asm code finalization in final() path 2015-05-07 11:16:26 +08:00
sha256-core.S_shipped crypto: arm64/sha2 - integrate OpenSSL implementations of SHA256/SHA512 2016-11-28 19:58:05 +08:00
sha256-glue.c crypto: arm64/sha2 - integrate OpenSSL implementations of SHA256/SHA512 2016-11-28 19:58:05 +08:00
sha512-armv8.pl crypto: arm64/sha2 - integrate OpenSSL implementations of SHA256/SHA512 2016-11-28 19:58:05 +08:00
sha512-core.S_shipped crypto: arm64/sha2 - integrate OpenSSL implementations of SHA256/SHA512 2016-11-28 19:58:05 +08:00
sha512-glue.c crypto: arm64/sha2 - integrate OpenSSL implementations of SHA256/SHA512 2016-11-28 19:58:05 +08:00