On Thu, 17 Dec 2020 at 23:24, Eric Biggers <ebiggers@xxxxxxxxxx> wrote: > > This patchset adds 32-bit ARM assembly language implementations of > BLAKE2b and BLAKE2s. > > The BLAKE2b implementation is NEON-accelerated, while the BLAKE2s > implementation uses scalar instructions since NEON doesn't work very > well for it. The BLAKE2b implementation is faster and is expected to be > useful as a replacement for SHA-1 in dm-verity, while the BLAKE2s > implementation would be useful for WireGuard which uses BLAKE2s. > > Both implementations are provided via the shash API, while BLAKE2s is > also provided via the library API. > > While adding these, I also reworked the generic implementations of > BLAKE2b and BLAKE2s to provide helper functions that make implementing > other "shash" providers for these algorithms much easier. > > See the individual commits for full details, including benchmarks. > > This patchset was tested on a Raspberry Pi 2 (which uses a Cortex-A7 > processor) with CONFIG_CRYPTO_MANAGER_EXTRA_TESTS=y, plus other tests. > > This patchset applies to mainline commit 0c6c887835b5. > > Changed since v1: > - Added BLAKE2s implementation. > - Adjusted the BLAKE2b helper functions to be consistent with what I > decided to do for BLAKE2s. > - Fixed build error in blake2b-neon-core.S in some configurations. > > Eric Biggers (11): > crypto: blake2b - rename constants for consistency with blake2s > crypto: blake2b - define shash_alg structs using macros > crypto: blake2b - export helpers for optimized implementations > crypto: blake2b - update file comment > crypto: arm/blake2b - add NEON-accelerated BLAKE2b > crypto: blake2s - define shash_alg structs using macros > crypto: x86/blake2s - define shash_alg structs using macros > crypto: blake2s - remove unneeded includes > crypto: blake2s - share the "shash" API boilerplate code > crypto: arm/blake2s - add ARM scalar optimized BLAKE2s > wireguard: Kconfig: select CRYPTO_BLAKE2S_ARM > Very nice! For the series, Acked-by: Ard Biesheuvel <ardb@xxxxxxxxxx> > arch/arm/crypto/Kconfig | 20 ++ > arch/arm/crypto/Makefile | 4 + > arch/arm/crypto/blake2b-neon-core.S | 345 ++++++++++++++++++++++++++++ > arch/arm/crypto/blake2b-neon-glue.c | 105 +++++++++ > arch/arm/crypto/blake2s-core.S | 272 ++++++++++++++++++++++ > arch/arm/crypto/blake2s-glue.c | 78 +++++++ > arch/x86/crypto/blake2s-glue.c | 150 +++--------- > crypto/Kconfig | 5 + > crypto/Makefile | 1 + > crypto/blake2b_generic.c | 200 +++++++--------- > crypto/blake2s_generic.c | 161 +++---------- > crypto/blake2s_helpers.c | 87 +++++++ > drivers/net/Kconfig | 1 + > include/crypto/blake2b.h | 27 +++ > include/crypto/internal/blake2b.h | 33 +++ > include/crypto/internal/blake2s.h | 17 ++ > 16 files changed, 1139 insertions(+), 367 deletions(-) > create mode 100644 arch/arm/crypto/blake2b-neon-core.S > create mode 100644 arch/arm/crypto/blake2b-neon-glue.c > create mode 100644 arch/arm/crypto/blake2s-core.S > create mode 100644 arch/arm/crypto/blake2s-glue.c > create mode 100644 crypto/blake2s_helpers.c > create mode 100644 include/crypto/blake2b.h > create mode 100644 include/crypto/internal/blake2b.h > > > base-commit: 0c6c887835b59c10602add88057c9c06f265effe > -- > 2.29.2 >