# SPDX-License-Identifier: GPL-2.0

menu "Accelerated Cryptographic Algorithms for CPU (powerpc)"

config CRYPTO_CURVE25519_PPC64
	tristate "Public key crypto: Curve25519 (PowerPC64)"
	depends on PPC64 && CPU_LITTLE_ENDIAN
	select CRYPTO_LIB_CURVE25519_GENERIC
	select CRYPTO_ARCH_HAVE_LIB_CURVE25519
	help
	  Curve25519 algorithm

	  Architecture: PowerPC64
	  - Little-endian

config CRYPTO_CRC32C_VPMSUM
	tristate "CRC32c"
	depends on PPC64 && ALTIVEC
	select CRYPTO_HASH
	select CRC32
	help
	  CRC32c CRC algorithm with the iSCSI polynomial (RFC 3385 and RFC 3720)

	  Architecture: powerpc64 using
	  - AltiVec extensions

	  Enable on POWER8 and newer processors for improved performance.

config CRYPTO_CRCT10DIF_VPMSUM
	tristate "CRC32T10DIF"
	depends on PPC64 && ALTIVEC && CRC_T10DIF
	select CRYPTO_HASH
	help
	  CRC16 CRC algorithm used for the T10 (SCSI) Data Integrity Field (DIF)

	  Architecture: powerpc64 using
	  - AltiVec extensions

	  Enable on POWER8 and newer processors for improved performance.

config CRYPTO_VPMSUM_TESTER
	tristate "CRC32c and CRC32T10DIF hardware acceleration tester"
	depends on CRYPTO_CRCT10DIF_VPMSUM && CRYPTO_CRC32C_VPMSUM
	help
	  Stress test for CRC32c and CRCT10DIF algorithms implemented with
	  powerpc64 AltiVec extensions (POWER8 vpmsum instructions).
	  Unless you are testing these algorithms, you don't need this.

config CRYPTO_MD5_PPC
	tristate "Digests: MD5"
	depends on PPC
	select CRYPTO_HASH
	help
	  MD5 message digest algorithm (RFC1321)

	  Architecture: powerpc

config CRYPTO_SHA1_PPC
	tristate "Hash functions: SHA-1"
	depends on PPC
	help
	  SHA-1 secure hash algorithm (FIPS 180)

	  Architecture: powerpc

config CRYPTO_SHA1_PPC_SPE
	tristate "Hash functions: SHA-1 (SPE)"
	depends on PPC && SPE
	help
	  SHA-1 secure hash algorithm (FIPS 180)

	  Architecture: powerpc using
	  - SPE (Signal Processing Engine) extensions

config CRYPTO_SHA256_PPC_SPE
	tristate "Hash functions: SHA-224 and SHA-256 (SPE)"
	depends on PPC && SPE
	select CRYPTO_SHA256
	select CRYPTO_HASH
	help
	  SHA-224 and SHA-256 secure hash algorithms (FIPS 180)

	  Architecture: powerpc using
	  - SPE (Signal Processing Engine) extensions

config CRYPTO_AES_PPC_SPE
	tristate "Ciphers: AES, modes: ECB/CBC/CTR/XTS (SPE)"
	depends on PPC && SPE
	select CRYPTO_SKCIPHER
	help
	  Block ciphers: AES cipher algorithms (FIPS-197)
	  Length-preserving ciphers: AES with ECB, CBC, CTR, and XTS modes

	  Architecture: powerpc using:
	  - SPE (Signal Processing Engine) extensions

	  SPE is available for:
	  - Processor Type: Freescale 8500
	  - CPU selection: e500 (8540)

	  This module should only be used for low power (router) devices
	  without hardware AES acceleration (e.g. caam crypto). It reduces the
	  size of the AES tables from 16KB to 8KB + 256 bytes and mitigates
	  timining attacks. Nevertheless it might be not as secure as other
	  architecture specific assembler implementations that work on 1KB
	  tables or 256 bytes S-boxes.

config CRYPTO_AES_GCM_P10
	tristate "Stitched AES/GCM acceleration support on P10 or later CPU (PPC)"
	depends on PPC64 && CPU_LITTLE_ENDIAN && VSX
	select CRYPTO_LIB_AES
	select CRYPTO_ALGAPI
	select CRYPTO_AEAD
	select CRYPTO_SKCIPHER
	help
	  AEAD cipher: AES cipher algorithms (FIPS-197)
	  GCM (Galois/Counter Mode) authenticated encryption mode (NIST SP800-38D)
	  Architecture: powerpc64 using:
	    - little-endian
	    - Power10 or later features

	  Support for cryptographic acceleration instructions on Power10 or
	  later CPU. This module supports stitched acceleration for AES/GCM.

config CRYPTO_CHACHA20_P10
	tristate "Ciphers: ChaCha20, XChacha20, XChacha12 (P10 or later)"
	depends on PPC64 && CPU_LITTLE_ENDIAN && VSX
	select CRYPTO_SKCIPHER
	select CRYPTO_LIB_CHACHA_GENERIC
	select CRYPTO_ARCH_HAVE_LIB_CHACHA
	help
	  Length-preserving ciphers: ChaCha20, XChaCha20, and XChaCha12
	  stream cipher algorithms

	  Architecture: PowerPC64
	  - Power10 or later
	  - Little-endian

config CRYPTO_POLY1305_P10
	tristate "Hash functions: Poly1305 (P10 or later)"
	depends on PPC64 && CPU_LITTLE_ENDIAN && VSX
	select CRYPTO_HASH
	select CRYPTO_LIB_POLY1305_GENERIC
	help
	  Poly1305 authenticator algorithm (RFC7539)

	  Architecture: PowerPC64
	  - Power10 or later
	  - Little-endian

config CRYPTO_DEV_VMX
        bool "Support for VMX cryptographic acceleration instructions"
        depends on PPC64 && VSX
        help
          Support for VMX cryptographic acceleration instructions.

config CRYPTO_DEV_VMX_ENCRYPT
	tristate "Encryption acceleration support on P8 CPU"
	depends on CRYPTO_DEV_VMX
	select CRYPTO_AES
	select CRYPTO_CBC
	select CRYPTO_CTR
	select CRYPTO_GHASH
	select CRYPTO_XTS
	default m
	help
	  Support for VMX cryptographic acceleration instructions on Power8 CPU.
	  This module supports acceleration for AES and GHASH in hardware. If you
	  choose 'M' here, this module will be called vmx-crypto.

endmenu
