# SPDX-License-Identifier: GPL-2.0config CRYPTO_HASH_INFO boolconfig CRYPTO_LIB_UTILS tristateconfig CRYPTO_LIB_AES tristate # Select dependencies of modes that are part of libaes. select CRYPTO_LIB_GF128HASH if CRYPTO_LIB_AES_GCM != n select CRYPTO_LIB_UTILSconfig 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 default y if SPARC64 default y if X86config CRYPTO_LIB_AESCFB tristate select CRYPTO_LIB_AES select CRYPTO_LIB_UTILSconfig CRYPTO_LIB_AES_CBC tristate select CRYPTO_LIB_AES help The AES-CBC and AES-CBC-CTS library functions.config CRYPTO_LIB_AES_CBC_MACS tristate select CRYPTO_LIB_AES help The AES-CMAC, AES-XCBC-MAC, and AES-CBC-MAC library functions. Select this if your module uses any of the functions from <crypto/aes-cbc-macs.h>.config CRYPTO_LIB_AES_CCM tristate select CRYPTO_LIB_AES select CRYPTO_LIB_AES_CBC_MACS select CRYPTO_LIB_AES_CTR help The AES-CCM library functions.config CRYPTO_LIB_AES_CTR tristate select CRYPTO_LIB_AES help The AES-CTR and AES-XCTR library functions.config CRYPTO_LIB_AES_ECB tristate select CRYPTO_LIB_AES help The AES-ECB library functions.config CRYPTO_LIB_AES_GCM tristate select CRYPTO_LIB_AES select CRYPTO_LIB_AES_CTR help The AES-GCM library functions.config CRYPTO_LIB_AES_XTS tristate select CRYPTO_LIB_AES help The AES-XTS library functions.config CRYPTO_LIB_ARC4 tristateconfig CRYPTO_LIB_GF128MUL tristateconfig 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_64config 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 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_64config 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_64config CRYPTO_LIB_CURVE25519_GENERIC bool depends on CRYPTO_LIB_CURVE25519 default y if !CRYPTO_LIB_CURVE25519_ARCH || ARM || X86_64config CRYPTO_LIB_DES tristateconfig CRYPTO_LIB_GF128HASH tristate help The GHASH and POLYVAL library functions. Select this if your module uses any of the functions from <crypto/gf128hash.h>.config CRYPTO_LIB_GF128HASH_ARCH bool depends on CRYPTO_LIB_GF128HASH && !UML default y if ARM && KERNEL_MODE_NEON default y if ARM64 default y if PPC64 && VSX default y if RISCV && 64BIT && TOOLCHAIN_HAS_VECTOR_CRYPTO && \ RISCV_EFFICIENT_VECTOR_UNALIGNED_ACCESS default y if S390 default y if X86_64config 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_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 default y if X86_64config 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 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 || PPC64config CRYPTO_LIB_POLY1305_RSIZE int default 2 if MIPS || RISCV default 11 if X86_64 default 9 if ARM || ARM64 default 1config CRYPTO_LIB_CHACHA20POLY1305 tristate select CRYPTO_LIB_CHACHA select CRYPTO_LIB_POLY1305 select CRYPTO_LIB_UTILSconfig 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 default y if MIPS && CPU_CAVIUM_OCTEON default y if PPC default y if S390 default y if SPARC64 default y if X86_64config 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_64config 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_64config 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 default y if S390config CRYPTO_LIB_SM3 tristate help The SM3 library functions. Select this if your module uses any of the functions from <crypto/sm3.h>.config CRYPTO_LIB_SM3_ARCH bool depends on CRYPTO_LIB_SM3 && !UML default y if ARM64 default y if RISCV && 64BIT && TOOLCHAIN_HAS_VECTOR_CRYPTO && \ RISCV_EFFICIENT_VECTOR_UNALIGNED_ACCESS default y if X86_64
# SPDX-License-Identifier: GPL-2.0
config CRYPTO_HASH_INFO
bool
config CRYPTO_LIB_UTILS
tristate
config CRYPTO_LIB_AES
tristate
# Select dependencies of modes that are part of libaes.
select CRYPTO_LIB_GF128HASH if CRYPTO_LIB_AES_GCM != n
select CRYPTO_LIB_UTILS
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
default y if SPARC64
default y if X86
config CRYPTO_LIB_AESCFB
tristate
select CRYPTO_LIB_AES
select CRYPTO_LIB_UTILS
config CRYPTO_LIB_AES_CBC
tristate
select CRYPTO_LIB_AES
help
The AES-CBC and AES-CBC-CTS library functions.
config CRYPTO_LIB_AES_CBC_MACS
tristate
select CRYPTO_LIB_AES
help
The AES-CMAC, AES-XCBC-MAC, and AES-CBC-MAC library functions. Select
this if your module uses any of the functions from
<crypto/aes-cbc-macs.h>.
config CRYPTO_LIB_AES_CCM
tristate
select CRYPTO_LIB_AES
select CRYPTO_LIB_AES_CBC_MACS
select CRYPTO_LIB_AES_CTR
help
The AES-CCM library functions.
config CRYPTO_LIB_AES_CTR
tristate
select CRYPTO_LIB_AES
help
The AES-CTR and AES-XCTR library functions.
config CRYPTO_LIB_AES_ECB
tristate
select CRYPTO_LIB_AES
help
The AES-ECB library functions.
config CRYPTO_LIB_AES_GCM
tristate
select CRYPTO_LIB_AES
select CRYPTO_LIB_AES_CTR
help
The AES-GCM library functions.
config CRYPTO_LIB_AES_XTS
tristate
select CRYPTO_LIB_AES
help
The AES-XTS library functions.
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
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_GF128HASH
tristate
help
The GHASH and POLYVAL library functions. Select this if your module
uses any of the functions from <crypto/gf128hash.h>.
config CRYPTO_LIB_GF128HASH_ARCH
bool
depends on CRYPTO_LIB_GF128HASH && !UML
default y if ARM && KERNEL_MODE_NEON
default y if ARM64
default y if PPC64 && 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_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_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
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
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
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
default y if S390
config CRYPTO_LIB_SM3
tristate
help
The SM3 library functions. Select this if your module uses any of the
functions from <crypto/sm3.h>.
config CRYPTO_LIB_SM3_ARCH
bool
depends on CRYPTO_LIB_SM3 && !UML
default y if ARM64
default y if RISCV && 64BIT && TOOLCHAIN_HAS_VECTOR_CRYPTO && \
RISCV_EFFICIENT_VECTOR_UNALIGNED_ACCESS
default y if X86_64