linux/lib/crypto
Eric Biggers b3b6e8f9b3 lib/crypto: gf128hash: Support GF128HASH_ARCH without all POLYVAL functions
Currently, some architectures (arm64 and x86) have optimized code for
both GHASH and POLYVAL.  Others (arm, powerpc, riscv, and s390) have
optimized code only for GHASH.  While POLYVAL support could be
implemented on these other architectures, until then we need to support
the case where arch-optimized functions are present only for GHASH.

Therefore, update the support for arch-optimized POLYVAL functions to
allow architectures to opt into supporting these functions individually.

The new meaning of CONFIG_CRYPTO_LIB_GF128HASH_ARCH is that some level
of GHASH and/or POLYVAL acceleration is provided.

Also provide an implementation of polyval_mul() based on
polyval_blocks_arch(), for when polyval_mul_arch() isn't implemented.

Acked-by: Ard Biesheuvel <ardb@kernel.org>
Link: https://lore.kernel.org/r/20260319061723.1140720-3-ebiggers@kernel.org
Signed-off-by: Eric Biggers <ebiggers@kernel.org>
2026-03-23 13:15:13 -07:00
..
arm lib/crypto: arm/aes: Migrate optimized code into library 2026-01-12 11:39:58 -08:00
arm64 lib/crypto: gf128hash: Support GF128HASH_ARCH without all POLYVAL functions 2026-03-23 13:15:13 -07:00
mips lib/crypto: chacha: Consolidate into single module 2025-08-29 09:50:19 -07:00
mpi Convert 'alloc_obj' family to use the new default GFP_KERNEL argument 2026-02-21 17:09:51 -08:00
powerpc lib/crypto: powerpc/aes: Fix rndkey_from_vsx() on big endian CPUs 2026-02-18 13:38:14 -08:00
riscv lib/crypto: riscv/aes: Migrate optimized code into library 2026-01-12 11:39:58 -08:00
s390 lib/crypto: s390/aes: Migrate optimized code into library 2026-01-15 14:08:55 -08:00
sparc lib/crypto: sparc/aes: Migrate optimized code into library 2026-01-15 14:09:07 -08:00
tests lib/crypto: gf128hash: Rename polyval module to gf128hash 2026-03-23 13:15:13 -07:00
x86 lib/crypto: gf128hash: Support GF128HASH_ARCH without all POLYVAL functions 2026-03-23 13:15:13 -07:00
.kunitconfig lib/crypto: tests: Introduce CRYPTO_LIB_ENABLE_ALL_FOR_KUNIT 2026-03-19 10:10:30 -07:00
aes.c lib/crypto: aes: Add FIPS self-test for CMAC 2026-03-09 13:27:20 -07:00
aescfb.c lib/crypto: aescfb: Use new AES library API 2026-01-15 14:09:08 -08:00
aesgcm.c lib/crypto: aesgcm: Use new AES library API 2026-01-15 14:09:09 -08:00
arc4.c lib/crypto: Explicitly include <linux/export.h> 2025-06-30 09:26:19 -07:00
blake2b.c lib/crypto: blake2b: Roll up BLAKE2b round loop on 32-bit 2025-12-09 15:10:21 -08:00
blake2s.c lib/crypto: blake2s: Replace manual unrolling with unrolled_full 2025-12-09 15:10:21 -08:00
chacha-block-generic.c lib/crypto: chacha: Rename chacha.c to chacha-block-generic.c 2025-08-29 09:50:19 -07:00
chacha.c lib/crypto: chacha: Consolidate into single module 2025-08-29 09:50:19 -07:00
chacha20poly1305-selftest.c crypto: lib/chacha - strongly type the ChaCha state 2025-05-12 13:32:53 +08:00
chacha20poly1305.c lib/crypto: chacha20poly1305: Statically check fixed array lengths 2025-11-23 12:19:21 -08:00
curve25519-fiat32.c move asm/unaligned.h to linux/unaligned.h 2024-10-02 17:23:23 -04:00
curve25519-hacl64.c move asm/unaligned.h to linux/unaligned.h 2024-10-02 17:23:23 -04:00
curve25519.c lib/crypto: curve25519: Consolidate into single module 2025-09-06 16:32:43 -07:00
des.c lib/crypto: Explicitly include <linux/export.h> 2025-06-30 09:26:19 -07:00
fips-mldsa.h lib/crypto: mldsa: Add FIPS cryptographic algorithm self-test 2026-01-12 11:07:50 -08:00
fips.h lib/crypto: aes: Add FIPS self-test for CMAC 2026-03-09 13:27:20 -07:00
gf128hash.c lib/crypto: gf128hash: Support GF128HASH_ARCH without all POLYVAL functions 2026-03-23 13:15:13 -07:00
gf128mul.c Convert 'alloc_obj' family to use the new default GFP_KERNEL argument 2026-02-21 17:09:51 -08:00
hash_info.c lib/crypto: hash_info: Move hash_info.c into lib/crypto/ 2025-07-08 12:03:44 -07:00
Kconfig lib/crypto: gf128hash: Rename polyval module to gf128hash 2026-03-23 13:15:13 -07:00
Makefile lib/crypto: gf128hash: Rename polyval module to gf128hash 2026-03-23 13:15:13 -07:00
md5.c lib/crypto: md5: Use rol32() instead of open-coding it 2026-01-12 11:07:50 -08:00
memneq.c lib/crypto: Explicitly include <linux/export.h> 2025-06-30 09:26:19 -07:00
mldsa.c lib/crypto: mldsa: Clarify the documentation for mldsa_verify() slightly 2026-02-03 19:28:51 -08:00
nh.c lib/crypto: nh: Add NH library 2026-01-12 11:07:49 -08:00
poly1305-donna32.c lib/crypto: Explicitly include <linux/export.h> 2025-06-30 09:26:19 -07:00
poly1305-donna64.c lib/crypto: Explicitly include <linux/export.h> 2025-06-30 09:26:19 -07:00
poly1305.c lib/crypto: poly1305: Consolidate into single module 2025-08-29 09:49:18 -07:00
sha1.c lib/crypto: sha1: Remove low-level functions from API 2026-01-27 15:47:41 -08:00
sha3.c lib/crypto: sha3: Support arch overrides of one-shot digest functions 2025-11-05 20:02:35 -08:00
sha256.c lib/crypto: Add FIPS self-tests for SHA-1 and SHA-2 2025-10-29 22:04:24 -07:00
sha512.c lib/crypto: Add FIPS self-tests for SHA-1 and SHA-2 2025-10-29 22:04:24 -07:00
simd.c crypto: api - move crypto_simd_disabled_for_test to lib 2024-10-28 18:33:11 +08:00
sm3.c lib/crypto: Explicitly include <linux/export.h> 2025-06-30 09:26:19 -07:00
utils.c lib/crypto: Explicitly include <linux/export.h> 2025-06-30 09:26:19 -07:00