0001 # SPDX-License-Identifier: GPL-2.0
0002
0003 menuconfig ARM_CRYPTO
0004 bool "ARM Accelerated Cryptographic Algorithms"
0005 depends on ARM
0006 help
0007 Say Y here to choose from a selection of cryptographic algorithms
0008 implemented using ARM specific CPU features or instructions.
0009
0010 if ARM_CRYPTO
0011
0012 config CRYPTO_SHA1_ARM
0013 tristate "SHA1 digest algorithm (ARM-asm)"
0014 select CRYPTO_SHA1
0015 select CRYPTO_HASH
0016 help
0017 SHA-1 secure hash standard (FIPS 180-1/DFIPS 180-2) implemented
0018 using optimized ARM assembler.
0019
0020 config CRYPTO_SHA1_ARM_NEON
0021 tristate "SHA1 digest algorithm (ARM NEON)"
0022 depends on KERNEL_MODE_NEON
0023 select CRYPTO_SHA1_ARM
0024 select CRYPTO_SHA1
0025 select CRYPTO_HASH
0026 help
0027 SHA-1 secure hash standard (FIPS 180-1/DFIPS 180-2) implemented
0028 using optimized ARM NEON assembly, when NEON instructions are
0029 available.
0030
0031 config CRYPTO_SHA1_ARM_CE
0032 tristate "SHA1 digest algorithm (ARM v8 Crypto Extensions)"
0033 depends on KERNEL_MODE_NEON
0034 select CRYPTO_SHA1_ARM
0035 select CRYPTO_HASH
0036 help
0037 SHA-1 secure hash standard (FIPS 180-1/DFIPS 180-2) implemented
0038 using special ARMv8 Crypto Extensions.
0039
0040 config CRYPTO_SHA2_ARM_CE
0041 tristate "SHA-224/256 digest algorithm (ARM v8 Crypto Extensions)"
0042 depends on KERNEL_MODE_NEON
0043 select CRYPTO_SHA256_ARM
0044 select CRYPTO_HASH
0045 help
0046 SHA-256 secure hash standard (DFIPS 180-2) implemented
0047 using special ARMv8 Crypto Extensions.
0048
0049 config CRYPTO_SHA256_ARM
0050 tristate "SHA-224/256 digest algorithm (ARM-asm and NEON)"
0051 select CRYPTO_HASH
0052 depends on !CPU_V7M
0053 help
0054 SHA-256 secure hash standard (DFIPS 180-2) implemented
0055 using optimized ARM assembler and NEON, when available.
0056
0057 config CRYPTO_SHA512_ARM
0058 tristate "SHA-384/512 digest algorithm (ARM-asm and NEON)"
0059 select CRYPTO_HASH
0060 depends on !CPU_V7M
0061 help
0062 SHA-512 secure hash standard (DFIPS 180-2) implemented
0063 using optimized ARM assembler and NEON, when available.
0064
0065 config CRYPTO_BLAKE2S_ARM
0066 bool "BLAKE2s digest algorithm (ARM)"
0067 select CRYPTO_ARCH_HAVE_LIB_BLAKE2S
0068 help
0069 BLAKE2s digest algorithm optimized with ARM scalar instructions. This
0070 is faster than the generic implementations of BLAKE2s and BLAKE2b, but
0071 slower than the NEON implementation of BLAKE2b. (There is no NEON
0072 implementation of BLAKE2s, since NEON doesn't really help with it.)
0073
0074 config CRYPTO_BLAKE2B_NEON
0075 tristate "BLAKE2b digest algorithm (ARM NEON)"
0076 depends on KERNEL_MODE_NEON
0077 select CRYPTO_BLAKE2B
0078 help
0079 BLAKE2b digest algorithm optimized with ARM NEON instructions.
0080 On ARM processors that have NEON support but not the ARMv8
0081 Crypto Extensions, typically this BLAKE2b implementation is
0082 much faster than SHA-2 and slightly faster than SHA-1.
0083
0084 config CRYPTO_AES_ARM
0085 tristate "Scalar AES cipher for ARM"
0086 select CRYPTO_ALGAPI
0087 select CRYPTO_AES
0088 help
0089 Use optimized AES assembler routines for ARM platforms.
0090
0091 On ARM processors without the Crypto Extensions, this is the
0092 fastest AES implementation for single blocks. For multiple
0093 blocks, the NEON bit-sliced implementation is usually faster.
0094
0095 This implementation may be vulnerable to cache timing attacks,
0096 since it uses lookup tables. However, as countermeasures it
0097 disables IRQs and preloads the tables; it is hoped this makes
0098 such attacks very difficult.
0099
0100 config CRYPTO_AES_ARM_BS
0101 tristate "Bit sliced AES using NEON instructions"
0102 depends on KERNEL_MODE_NEON
0103 select CRYPTO_SKCIPHER
0104 select CRYPTO_LIB_AES
0105 select CRYPTO_AES
0106 select CRYPTO_CBC
0107 select CRYPTO_SIMD
0108 help
0109 Use a faster and more secure NEON based implementation of AES in CBC,
0110 CTR and XTS modes
0111
0112 Bit sliced AES gives around 45% speedup on Cortex-A15 for CTR mode
0113 and for XTS mode encryption, CBC and XTS mode decryption speedup is
0114 around 25%. (CBC encryption speed is not affected by this driver.)
0115 This implementation does not rely on any lookup tables so it is
0116 believed to be invulnerable to cache timing attacks.
0117
0118 config CRYPTO_AES_ARM_CE
0119 tristate "Accelerated AES using ARMv8 Crypto Extensions"
0120 depends on KERNEL_MODE_NEON
0121 select CRYPTO_SKCIPHER
0122 select CRYPTO_LIB_AES
0123 select CRYPTO_SIMD
0124 help
0125 Use an implementation of AES in CBC, CTR and XTS modes that uses
0126 ARMv8 Crypto Extensions
0127
0128 config CRYPTO_GHASH_ARM_CE
0129 tristate "PMULL-accelerated GHASH using NEON/ARMv8 Crypto Extensions"
0130 depends on KERNEL_MODE_NEON
0131 select CRYPTO_HASH
0132 select CRYPTO_CRYPTD
0133 select CRYPTO_GF128MUL
0134 help
0135 Use an implementation of GHASH (used by the GCM AEAD chaining mode)
0136 that uses the 64x64 to 128 bit polynomial multiplication (vmull.p64)
0137 that is part of the ARMv8 Crypto Extensions, or a slower variant that
0138 uses the vmull.p8 instruction that is part of the basic NEON ISA.
0139
0140 config CRYPTO_CRCT10DIF_ARM_CE
0141 tristate "CRCT10DIF digest algorithm using PMULL instructions"
0142 depends on KERNEL_MODE_NEON
0143 depends on CRC_T10DIF
0144 select CRYPTO_HASH
0145
0146 config CRYPTO_CRC32_ARM_CE
0147 tristate "CRC32(C) digest algorithm using CRC and/or PMULL instructions"
0148 depends on KERNEL_MODE_NEON
0149 depends on CRC32
0150 select CRYPTO_HASH
0151
0152 config CRYPTO_CHACHA20_NEON
0153 tristate "NEON and scalar accelerated ChaCha stream cipher algorithms"
0154 select CRYPTO_SKCIPHER
0155 select CRYPTO_ARCH_HAVE_LIB_CHACHA
0156
0157 config CRYPTO_POLY1305_ARM
0158 tristate "Accelerated scalar and SIMD Poly1305 hash implementations"
0159 select CRYPTO_HASH
0160 select CRYPTO_ARCH_HAVE_LIB_POLY1305
0161
0162 config CRYPTO_NHPOLY1305_NEON
0163 tristate "NEON accelerated NHPoly1305 hash function (for Adiantum)"
0164 depends on KERNEL_MODE_NEON
0165 select CRYPTO_NHPOLY1305
0166
0167 config CRYPTO_CURVE25519_NEON
0168 tristate "NEON accelerated Curve25519 scalar multiplication library"
0169 depends on KERNEL_MODE_NEON
0170 select CRYPTO_LIB_CURVE25519_GENERIC
0171 select CRYPTO_ARCH_HAVE_LIB_CURVE25519
0172
0173 endif