# SPDX-License-Identifier: GPL-2.0

menu "Accelerated Cryptographic Algorithms for CPU (arm)"

config CRYPTO_CURVE25519_NEON
	tristate "Public key crypto: Curve25519 (NEON)"
	depends on KERNEL_MODE_NEON
	select CRYPTO_LIB_CURVE25519_GENERIC
	select CRYPTO_ARCH_HAVE_LIB_CURVE25519
	help
	  Curve25519 algorithm

	  Architecture: arm with
	  - NEON (Advanced SIMD) extensions

config CRYPTO_GHASH_ARM_CE
	tristate "Hash functions: GHASH (PMULL/NEON/ARMv8 Crypto Extensions)"
	depends on KERNEL_MODE_NEON
	select CRYPTO_HASH
	select CRYPTO_CRYPTD
	select CRYPTO_LIB_GF128MUL
	help
	  GCM GHASH function (NIST SP800-38D)

	  Architecture: arm using
	  - PMULL (Polynomial Multiply Long) instructions
	  - NEON (Advanced SIMD) extensions
	  - ARMv8 Crypto Extensions

	  Use an implementation of GHASH (used by the GCM AEAD chaining mode)
	  that uses the 64x64 to 128 bit polynomial multiplication (vmull.p64)
	  that is part of the ARMv8 Crypto Extensions, or a slower variant that
	  uses the vmull.p8 instruction that is part of the basic NEON ISA.

config CRYPTO_NHPOLY1305_NEON
	tristate "Hash functions: NHPoly1305 (NEON)"
	depends on KERNEL_MODE_NEON
	select CRYPTO_NHPOLY1305
	help
	  NHPoly1305 hash function (Adiantum)

	  Architecture: arm using:
	  - NEON (Advanced SIMD) extensions

config CRYPTO_POLY1305_ARM
	tristate "Hash functions: Poly1305 (NEON)"
	select CRYPTO_HASH
	select CRYPTO_ARCH_HAVE_LIB_POLY1305
	help
	  Poly1305 authenticator algorithm (RFC7539)

	  Architecture: arm optionally using
	  - NEON (Advanced SIMD) extensions

config CRYPTO_BLAKE2S_ARM
	bool "Hash functions: BLAKE2s"
	select CRYPTO_ARCH_HAVE_LIB_BLAKE2S
	help
	  BLAKE2s cryptographic hash function (RFC 7693)

	  Architecture: arm

	  This is faster than the generic implementations of BLAKE2s and
	  BLAKE2b, but slower than the NEON implementation of BLAKE2b.
	  There is no NEON implementation of BLAKE2s, since NEON doesn't
	  really help with it.

config CRYPTO_BLAKE2B_NEON
	tristate "Hash functions: BLAKE2b (NEON)"
	depends on KERNEL_MODE_NEON
	select CRYPTO_BLAKE2B
	help
	  BLAKE2b cryptographic hash function (RFC 7693)

	  Architecture: arm using
	  - NEON (Advanced SIMD) extensions

	  BLAKE2b digest algorithm optimized with ARM NEON instructions.
	  On ARM processors that have NEON support but not the ARMv8
	  Crypto Extensions, typically this BLAKE2b implementation is
	  much faster than the SHA-2 family and slightly faster than
	  SHA-1.

config CRYPTO_SHA1_ARM
	tristate "Hash functions: SHA-1"
	select CRYPTO_SHA1
	select CRYPTO_HASH
	help
	  SHA-1 secure hash algorithm (FIPS 180)

	  Architecture: arm

config CRYPTO_SHA1_ARM_NEON
	tristate "Hash functions: SHA-1 (NEON)"
	depends on KERNEL_MODE_NEON
	select CRYPTO_SHA1_ARM
	select CRYPTO_SHA1
	select CRYPTO_HASH
	help
	  SHA-1 secure hash algorithm (FIPS 180)

	  Architecture: arm using
	  - NEON (Advanced SIMD) extensions

config CRYPTO_SHA1_ARM_CE
	tristate "Hash functions: SHA-1 (ARMv8 Crypto Extensions)"
	depends on KERNEL_MODE_NEON
	select CRYPTO_SHA1_ARM
	select CRYPTO_HASH
	help
	  SHA-1 secure hash algorithm (FIPS 180)

	  Architecture: arm using ARMv8 Crypto Extensions

config CRYPTO_SHA2_ARM_CE
	tristate "Hash functions: SHA-224 and SHA-256 (ARMv8 Crypto Extensions)"
	depends on KERNEL_MODE_NEON
	select CRYPTO_SHA256_ARM
	select CRYPTO_HASH
	help
	  SHA-224 and SHA-256 secure hash algorithms (FIPS 180)

	  Architecture: arm using
	  - ARMv8 Crypto Extensions

config CRYPTO_SHA256_ARM
	tristate "Hash functions: SHA-224 and SHA-256 (NEON)"
	select CRYPTO_HASH
	depends on !CPU_V7M
	help
	  SHA-224 and SHA-256 secure hash algorithms (FIPS 180)

	  Architecture: arm using
	  - NEON (Advanced SIMD) extensions

config CRYPTO_SHA512_ARM
	tristate "Hash functions: SHA-384 and SHA-512 (NEON)"
	select CRYPTO_HASH
	depends on !CPU_V7M
	help
	  SHA-384 and SHA-512 secure hash algorithms (FIPS 180)

	  Architecture: arm using
	  - NEON (Advanced SIMD) extensions

config CRYPTO_AES_ARM
	tristate "Ciphers: AES"
	select CRYPTO_ALGAPI
	select CRYPTO_AES
	help
	  Block ciphers: AES cipher algorithms (FIPS-197)

	  Architecture: arm

	  On ARM processors without the Crypto Extensions, this is the
	  fastest AES implementation for single blocks.  For multiple
	  blocks, the NEON bit-sliced implementation is usually faster.

	  This implementation may be vulnerable to cache timing attacks,
	  since it uses lookup tables.  However, as countermeasures it
	  disables IRQs and preloads the tables; it is hoped this makes
	  such attacks very difficult.

config CRYPTO_AES_ARM_BS
	tristate "Ciphers: AES, modes: ECB/CBC/CTR/XTS (bit-sliced NEON)"
	depends on KERNEL_MODE_NEON
	select CRYPTO_SKCIPHER
	select CRYPTO_LIB_AES
	select CRYPTO_AES
	select CRYPTO_CBC
	select CRYPTO_SIMD
	help
	  Length-preserving ciphers: AES cipher algorithms (FIPS-197)
	  with block cipher modes:
	   - ECB (Electronic Codebook) mode (NIST SP800-38A)
	   - CBC (Cipher Block Chaining) mode (NIST SP800-38A)
	   - CTR (Counter) mode (NIST SP800-38A)
	   - XTS (XOR Encrypt XOR with ciphertext stealing) mode (NIST SP800-38E
	     and IEEE 1619)

	  Bit sliced AES gives around 45% speedup on Cortex-A15 for CTR mode
	  and for XTS mode encryption, CBC and XTS mode decryption speedup is
	  around 25%. (CBC encryption speed is not affected by this driver.)
	  This implementation does not rely on any lookup tables so it is
	  believed to be invulnerable to cache timing attacks.

config CRYPTO_AES_ARM_CE
	tristate "Ciphers: AES, modes: ECB/CBC/CTS/CTR/XTS (ARMv8 Crypto Extensions)"
	depends on KERNEL_MODE_NEON
	select CRYPTO_SKCIPHER
	select CRYPTO_LIB_AES
	select CRYPTO_SIMD
	help
	  Length-preserving ciphers: AES cipher algorithms (FIPS-197)
	   with block cipher modes:
	   - ECB (Electronic Codebook) mode (NIST SP800-38A)
	   - CBC (Cipher Block Chaining) mode (NIST SP800-38A)
	   - CTR (Counter) mode (NIST SP800-38A)
	   - CTS (Cipher Text Stealing) mode (NIST SP800-38A)
	   - XTS (XOR Encrypt XOR with ciphertext stealing) mode (NIST SP800-38E
	     and IEEE 1619)

	  Architecture: arm using:
	  - ARMv8 Crypto Extensions

config CRYPTO_CHACHA20_NEON
	tristate "Ciphers: ChaCha20, XChaCha20, XChaCha12 (NEON)"
	select CRYPTO_SKCIPHER
	select CRYPTO_ARCH_HAVE_LIB_CHACHA
	help
	  Length-preserving ciphers: ChaCha20, XChaCha20, and XChaCha12
	  stream cipher algorithms

	  Architecture: arm using:
	  - NEON (Advanced SIMD) extensions

config CRYPTO_CRC32_ARM_CE
	tristate "CRC32C and CRC32"
	depends on KERNEL_MODE_NEON
	depends on CRC32
	select CRYPTO_HASH
	help
	  CRC32c CRC algorithm with the iSCSI polynomial (RFC 3385 and RFC 3720)
	  and CRC32 CRC algorithm (IEEE 802.3)

	  Architecture: arm using:
	  - CRC and/or PMULL instructions

	  Drivers: crc32-arm-ce and crc32c-arm-ce

config CRYPTO_CRCT10DIF_ARM_CE
	tristate "CRCT10DIF"
	depends on KERNEL_MODE_NEON
	depends on CRC_T10DIF
	select CRYPTO_HASH
	help
	  CRC16 CRC algorithm used for the T10 (SCSI) Data Integrity Field (DIF)

	  Architecture: arm using:
	  - PMULL (Polynomial Multiply Long) instructions

endmenu

