mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
synced 2026-01-13 18:13:51 +00:00
On big endian arm kernels, the arm optimized Curve25519 code produces
incorrect outputs and fails the Curve25519 test. This has been true
ever since this code was added.
It seems that hardly anyone (or even no one?) actually uses big endian
arm kernels. But as long as they're ostensibly supported, we should
disable this code on them so that it's not accidentally used.
Note: for future-proofing, use !CPU_BIG_ENDIAN instead of
CPU_LITTLE_ENDIAN. Both of these are arch-specific options that could
get removed in the future if big endian support gets dropped.
Fixes: d8f1308a025f ("crypto: arm/curve25519 - wire up NEON implementation")
Cc: stable@vger.kernel.org
Acked-by: Ard Biesheuvel <ardb@kernel.org>
Link: https://lore.kernel.org/r/20251104054906.716914-1-ebiggers@kernel.org
Signed-off-by: Eric Biggers <ebiggers@kernel.org>
193 lines
4.7 KiB
Plaintext
193 lines
4.7 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_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
|
|
|
|
# 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 && RISCV_ISA_V && TOOLCHAIN_HAS_VECTOR_CRYPTO
|
|
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_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_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 && RISCV_ISA_V && TOOLCHAIN_HAS_VECTOR_CRYPTO
|
|
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 && RISCV_ISA_V && TOOLCHAIN_HAS_VECTOR_CRYPTO
|
|
default y if S390
|
|
default y if SPARC64
|
|
default y if X86_64
|
|
|
|
config CRYPTO_LIB_SM3
|
|
tristate
|
|
|
|
source "lib/crypto/tests/Kconfig"
|
|
|
|
endmenu
|