mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/netfilter/nf.git
synced 2026-04-18 06:34:27 -04:00
Implement aes_preparekey_arch(), aes_encrypt_arch(), and aes_decrypt_arch() using the CPACF AES instructions. Then, remove the superseded "aes-s390" crypto_cipher. The result is that both the AES library and crypto_cipher APIs use the CPACF AES instructions, whereas previously only crypto_cipher did (and it wasn't enabled by default, which this commit fixes as well). Note that this preserves the optimization where the AES key is stored in raw form rather than expanded form. CPACF just takes the raw key. Acked-by: Ard Biesheuvel <ardb@kernel.org> Tested-by: Holger Dengler <dengler@linux.ibm.com> Reviewed-by: Holger Dengler <dengler@linux.ibm.com> Link: https://lore.kernel.org/r/20260112192035.10427-16-ebiggers@kernel.org Signed-off-by: Eric Biggers <ebiggers@kernel.org>
262 lines
6.5 KiB
Plaintext
262 lines
6.5 KiB
Plaintext
# SPDX-License-Identifier: GPL-2.0
|
|
|
|
menu "Crypto library routines"
|
|
|
|
config CRYPTO_HASH_INFO
|
|
bool
|
|
|
|
config CRYPTO_LIB_UTILS
|
|
tristate
|
|
|
|
config CRYPTO_LIB_AES
|
|
tristate
|
|
|
|
config CRYPTO_LIB_AES_ARCH
|
|
bool
|
|
depends on CRYPTO_LIB_AES && !UML && !KMSAN
|
|
default y if ARM
|
|
default y if ARM64
|
|
default y if PPC && (SPE || (PPC64 && VSX))
|
|
default y if RISCV && 64BIT && TOOLCHAIN_HAS_VECTOR_CRYPTO && \
|
|
RISCV_EFFICIENT_VECTOR_UNALIGNED_ACCESS
|
|
default y if S390
|
|
|
|
config CRYPTO_LIB_AESCFB
|
|
tristate
|
|
select CRYPTO_LIB_AES
|
|
select CRYPTO_LIB_UTILS
|
|
|
|
config CRYPTO_LIB_AESGCM
|
|
tristate
|
|
select CRYPTO_LIB_AES
|
|
select CRYPTO_LIB_GF128MUL
|
|
select CRYPTO_LIB_UTILS
|
|
|
|
config CRYPTO_LIB_ARC4
|
|
tristate
|
|
|
|
config CRYPTO_LIB_GF128MUL
|
|
tristate
|
|
|
|
config CRYPTO_LIB_BLAKE2B
|
|
tristate
|
|
help
|
|
The BLAKE2b library functions. Select this if your module uses any of
|
|
the functions from <crypto/blake2b.h>.
|
|
|
|
config CRYPTO_LIB_BLAKE2B_ARCH
|
|
bool
|
|
depends on CRYPTO_LIB_BLAKE2B && !UML
|
|
default y if ARM && KERNEL_MODE_NEON
|
|
|
|
# BLAKE2s support is always built-in, so there's no CRYPTO_LIB_BLAKE2S option.
|
|
|
|
config CRYPTO_LIB_BLAKE2S_ARCH
|
|
bool
|
|
depends on !UML
|
|
default y if ARM
|
|
default y if X86_64
|
|
|
|
config CRYPTO_LIB_CHACHA
|
|
tristate
|
|
select CRYPTO_LIB_UTILS
|
|
help
|
|
Enable the ChaCha library interface. Select this if your module uses
|
|
chacha_crypt() or hchacha_block().
|
|
|
|
config CRYPTO_LIB_CHACHA_ARCH
|
|
bool
|
|
depends on CRYPTO_LIB_CHACHA && !UML && !KMSAN
|
|
default y if ARM
|
|
default y if ARM64 && KERNEL_MODE_NEON
|
|
default y if MIPS && CPU_MIPS32_R2
|
|
default y if PPC64 && CPU_LITTLE_ENDIAN && VSX
|
|
default y if RISCV && 64BIT && TOOLCHAIN_HAS_VECTOR_CRYPTO && \
|
|
RISCV_EFFICIENT_VECTOR_UNALIGNED_ACCESS
|
|
default y if S390
|
|
default y if X86_64
|
|
|
|
config CRYPTO_LIB_CURVE25519
|
|
tristate
|
|
select CRYPTO_LIB_UTILS
|
|
help
|
|
The Curve25519 library functions. Select this if your module uses any
|
|
of the functions from <crypto/curve25519.h>.
|
|
|
|
config CRYPTO_LIB_CURVE25519_ARCH
|
|
bool
|
|
depends on CRYPTO_LIB_CURVE25519 && !UML && !KMSAN
|
|
default y if ARM && KERNEL_MODE_NEON && !CPU_BIG_ENDIAN
|
|
default y if PPC64 && CPU_LITTLE_ENDIAN
|
|
default y if X86_64
|
|
|
|
config CRYPTO_LIB_CURVE25519_GENERIC
|
|
bool
|
|
depends on CRYPTO_LIB_CURVE25519
|
|
default y if !CRYPTO_LIB_CURVE25519_ARCH || ARM || X86_64
|
|
|
|
config CRYPTO_LIB_DES
|
|
tristate
|
|
|
|
config CRYPTO_LIB_MD5
|
|
tristate
|
|
help
|
|
The MD5 and HMAC-MD5 library functions. Select this if your module
|
|
uses any of the functions from <crypto/md5.h>.
|
|
|
|
config CRYPTO_LIB_MD5_ARCH
|
|
bool
|
|
depends on CRYPTO_LIB_MD5 && !UML
|
|
default y if MIPS && CPU_CAVIUM_OCTEON
|
|
default y if PPC
|
|
default y if SPARC64
|
|
|
|
config CRYPTO_LIB_MLDSA
|
|
tristate
|
|
select CRYPTO_LIB_SHA3
|
|
help
|
|
The ML-DSA library functions. Select this if your module uses any of
|
|
the functions from <crypto/mldsa.h>.
|
|
|
|
config CRYPTO_LIB_NH
|
|
tristate
|
|
help
|
|
Implementation of the NH almost-universal hash function, specifically
|
|
the variant of NH used in Adiantum.
|
|
|
|
config CRYPTO_LIB_NH_ARCH
|
|
bool
|
|
depends on CRYPTO_LIB_NH && !UML && !KMSAN
|
|
default y if ARM && KERNEL_MODE_NEON
|
|
default y if ARM64 && KERNEL_MODE_NEON
|
|
default y if X86_64
|
|
|
|
config CRYPTO_LIB_POLY1305
|
|
tristate
|
|
help
|
|
The Poly1305 library functions. Select this if your module uses any
|
|
of the functions from <crypto/poly1305.h>.
|
|
|
|
config CRYPTO_LIB_POLY1305_ARCH
|
|
bool
|
|
depends on CRYPTO_LIB_POLY1305 && !UML && !KMSAN
|
|
default y if ARM
|
|
default y if ARM64 && KERNEL_MODE_NEON
|
|
default y if MIPS
|
|
# The PPC64 code needs to be fixed to work in softirq context.
|
|
default y if PPC64 && CPU_LITTLE_ENDIAN && VSX && BROKEN
|
|
default y if RISCV
|
|
default y if X86_64
|
|
|
|
# This symbol controls the inclusion of the Poly1305 generic code. This differs
|
|
# from most of the other algorithms, which handle the generic code
|
|
# "automatically" via __maybe_unused. This is needed so that the Adiantum code,
|
|
# which calls the poly1305_core_*() functions directly, can enable them.
|
|
config CRYPTO_LIB_POLY1305_GENERIC
|
|
bool
|
|
depends on CRYPTO_LIB_POLY1305
|
|
# Enable if there's no arch impl or the arch impl requires the generic
|
|
# impl as a fallback. (Or if selected explicitly.)
|
|
default y if !CRYPTO_LIB_POLY1305_ARCH || PPC64
|
|
|
|
config CRYPTO_LIB_POLY1305_RSIZE
|
|
int
|
|
default 2 if MIPS || RISCV
|
|
default 11 if X86_64
|
|
default 9 if ARM || ARM64
|
|
default 1
|
|
|
|
config CRYPTO_LIB_POLYVAL
|
|
tristate
|
|
help
|
|
The POLYVAL library functions. Select this if your module uses any of
|
|
the functions from <crypto/polyval.h>.
|
|
|
|
config CRYPTO_LIB_POLYVAL_ARCH
|
|
bool
|
|
depends on CRYPTO_LIB_POLYVAL && !UML
|
|
default y if ARM64 && KERNEL_MODE_NEON
|
|
default y if X86_64
|
|
|
|
config CRYPTO_LIB_CHACHA20POLY1305
|
|
tristate
|
|
select CRYPTO_LIB_CHACHA
|
|
select CRYPTO_LIB_POLY1305
|
|
select CRYPTO_LIB_UTILS
|
|
|
|
config CRYPTO_LIB_SHA1
|
|
tristate
|
|
help
|
|
The SHA-1 and HMAC-SHA1 library functions. Select this if your module
|
|
uses any of the functions from <crypto/sha1.h>.
|
|
|
|
config CRYPTO_LIB_SHA1_ARCH
|
|
bool
|
|
depends on CRYPTO_LIB_SHA1 && !UML
|
|
default y if ARM
|
|
default y if ARM64 && KERNEL_MODE_NEON
|
|
default y if MIPS && CPU_CAVIUM_OCTEON
|
|
default y if PPC
|
|
default y if S390
|
|
default y if SPARC64
|
|
default y if X86_64
|
|
|
|
config CRYPTO_LIB_SHA256
|
|
tristate
|
|
help
|
|
The SHA-224, SHA-256, HMAC-SHA224, and HMAC-SHA256 library functions.
|
|
Select this if your module uses any of these functions from
|
|
<crypto/sha2.h>.
|
|
|
|
config CRYPTO_LIB_SHA256_ARCH
|
|
bool
|
|
depends on CRYPTO_LIB_SHA256 && !UML
|
|
default y if ARM && !CPU_V7M
|
|
default y if ARM64
|
|
default y if MIPS && CPU_CAVIUM_OCTEON
|
|
default y if PPC && SPE
|
|
default y if RISCV && 64BIT && TOOLCHAIN_HAS_VECTOR_CRYPTO && \
|
|
RISCV_EFFICIENT_VECTOR_UNALIGNED_ACCESS
|
|
default y if S390
|
|
default y if SPARC64
|
|
default y if X86_64
|
|
|
|
config CRYPTO_LIB_SHA512
|
|
tristate
|
|
help
|
|
The SHA-384, SHA-512, HMAC-SHA384, and HMAC-SHA512 library functions.
|
|
Select this if your module uses any of these functions from
|
|
<crypto/sha2.h>.
|
|
|
|
config CRYPTO_LIB_SHA512_ARCH
|
|
bool
|
|
depends on CRYPTO_LIB_SHA512 && !UML
|
|
default y if ARM && !CPU_V7M
|
|
default y if ARM64
|
|
default y if MIPS && CPU_CAVIUM_OCTEON
|
|
default y if RISCV && 64BIT && TOOLCHAIN_HAS_VECTOR_CRYPTO && \
|
|
RISCV_EFFICIENT_VECTOR_UNALIGNED_ACCESS
|
|
default y if S390
|
|
default y if SPARC64
|
|
default y if X86_64
|
|
|
|
config CRYPTO_LIB_SHA3
|
|
tristate
|
|
select CRYPTO_LIB_UTILS
|
|
help
|
|
The SHA3 library functions. Select this if your module uses any of
|
|
the functions from <crypto/sha3.h>.
|
|
|
|
config CRYPTO_LIB_SHA3_ARCH
|
|
bool
|
|
depends on CRYPTO_LIB_SHA3 && !UML
|
|
default y if ARM64 && KERNEL_MODE_NEON
|
|
default y if S390
|
|
|
|
config CRYPTO_LIB_SM3
|
|
tristate
|
|
|
|
source "lib/crypto/tests/Kconfig"
|
|
|
|
endmenu
|