Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
torvalds
GitHub Repository: torvalds/linux
Path: blob/master/lib/crypto/Kconfig
29267 views
# 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
	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
	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