xref: /OK3568_Linux_fs/kernel/arch/arm/crypto/Kconfig (revision 4882a59341e53eb6f0b4789bf948001014eff981)
1*4882a593Smuzhiyun# SPDX-License-Identifier: GPL-2.0
2*4882a593Smuzhiyun
3*4882a593Smuzhiyunmenuconfig ARM_CRYPTO
4*4882a593Smuzhiyun	bool "ARM Accelerated Cryptographic Algorithms"
5*4882a593Smuzhiyun	depends on ARM
6*4882a593Smuzhiyun	help
7*4882a593Smuzhiyun	  Say Y here to choose from a selection of cryptographic algorithms
8*4882a593Smuzhiyun	  implemented using ARM specific CPU features or instructions.
9*4882a593Smuzhiyun
10*4882a593Smuzhiyunif ARM_CRYPTO
11*4882a593Smuzhiyun
12*4882a593Smuzhiyunconfig CRYPTO_SHA1_ARM
13*4882a593Smuzhiyun	tristate "SHA1 digest algorithm (ARM-asm)"
14*4882a593Smuzhiyun	select CRYPTO_SHA1
15*4882a593Smuzhiyun	select CRYPTO_HASH
16*4882a593Smuzhiyun	help
17*4882a593Smuzhiyun	  SHA-1 secure hash standard (FIPS 180-1/DFIPS 180-2) implemented
18*4882a593Smuzhiyun	  using optimized ARM assembler.
19*4882a593Smuzhiyun
20*4882a593Smuzhiyunconfig CRYPTO_SHA1_ARM_NEON
21*4882a593Smuzhiyun	tristate "SHA1 digest algorithm (ARM NEON)"
22*4882a593Smuzhiyun	depends on KERNEL_MODE_NEON
23*4882a593Smuzhiyun	select CRYPTO_SHA1_ARM
24*4882a593Smuzhiyun	select CRYPTO_SHA1
25*4882a593Smuzhiyun	select CRYPTO_HASH
26*4882a593Smuzhiyun	help
27*4882a593Smuzhiyun	  SHA-1 secure hash standard (FIPS 180-1/DFIPS 180-2) implemented
28*4882a593Smuzhiyun	  using optimized ARM NEON assembly, when NEON instructions are
29*4882a593Smuzhiyun	  available.
30*4882a593Smuzhiyun
31*4882a593Smuzhiyunconfig CRYPTO_SHA1_ARM_CE
32*4882a593Smuzhiyun	tristate "SHA1 digest algorithm (ARM v8 Crypto Extensions)"
33*4882a593Smuzhiyun	depends on KERNEL_MODE_NEON
34*4882a593Smuzhiyun	select CRYPTO_SHA1_ARM
35*4882a593Smuzhiyun	select CRYPTO_HASH
36*4882a593Smuzhiyun	help
37*4882a593Smuzhiyun	  SHA-1 secure hash standard (FIPS 180-1/DFIPS 180-2) implemented
38*4882a593Smuzhiyun	  using special ARMv8 Crypto Extensions.
39*4882a593Smuzhiyun
40*4882a593Smuzhiyunconfig CRYPTO_SHA2_ARM_CE
41*4882a593Smuzhiyun	tristate "SHA-224/256 digest algorithm (ARM v8 Crypto Extensions)"
42*4882a593Smuzhiyun	depends on KERNEL_MODE_NEON
43*4882a593Smuzhiyun	select CRYPTO_SHA256_ARM
44*4882a593Smuzhiyun	select CRYPTO_HASH
45*4882a593Smuzhiyun	help
46*4882a593Smuzhiyun	  SHA-256 secure hash standard (DFIPS 180-2) implemented
47*4882a593Smuzhiyun	  using special ARMv8 Crypto Extensions.
48*4882a593Smuzhiyun
49*4882a593Smuzhiyunconfig CRYPTO_SHA256_ARM
50*4882a593Smuzhiyun	tristate "SHA-224/256 digest algorithm (ARM-asm and NEON)"
51*4882a593Smuzhiyun	select CRYPTO_HASH
52*4882a593Smuzhiyun	depends on !CPU_V7M
53*4882a593Smuzhiyun	help
54*4882a593Smuzhiyun	  SHA-256 secure hash standard (DFIPS 180-2) implemented
55*4882a593Smuzhiyun	  using optimized ARM assembler and NEON, when available.
56*4882a593Smuzhiyun
57*4882a593Smuzhiyunconfig CRYPTO_SHA512_ARM
58*4882a593Smuzhiyun	tristate "SHA-384/512 digest algorithm (ARM-asm and NEON)"
59*4882a593Smuzhiyun	select CRYPTO_HASH
60*4882a593Smuzhiyun	depends on !CPU_V7M
61*4882a593Smuzhiyun	help
62*4882a593Smuzhiyun	  SHA-512 secure hash standard (DFIPS 180-2) implemented
63*4882a593Smuzhiyun	  using optimized ARM assembler and NEON, when available.
64*4882a593Smuzhiyun
65*4882a593Smuzhiyunconfig CRYPTO_BLAKE2S_ARM
66*4882a593Smuzhiyun	tristate "BLAKE2s digest algorithm (ARM)"
67*4882a593Smuzhiyun	select CRYPTO_ARCH_HAVE_LIB_BLAKE2S
68*4882a593Smuzhiyun	help
69*4882a593Smuzhiyun	  BLAKE2s digest algorithm optimized with ARM scalar instructions.  This
70*4882a593Smuzhiyun	  is faster than the generic implementations of BLAKE2s and BLAKE2b, but
71*4882a593Smuzhiyun	  slower than the NEON implementation of BLAKE2b.  (There is no NEON
72*4882a593Smuzhiyun	  implementation of BLAKE2s, since NEON doesn't really help with it.)
73*4882a593Smuzhiyun
74*4882a593Smuzhiyunconfig CRYPTO_BLAKE2B_NEON
75*4882a593Smuzhiyun	tristate "BLAKE2b digest algorithm (ARM NEON)"
76*4882a593Smuzhiyun	depends on KERNEL_MODE_NEON
77*4882a593Smuzhiyun	select CRYPTO_BLAKE2B
78*4882a593Smuzhiyun	help
79*4882a593Smuzhiyun	  BLAKE2b digest algorithm optimized with ARM NEON instructions.
80*4882a593Smuzhiyun	  On ARM processors that have NEON support but not the ARMv8
81*4882a593Smuzhiyun	  Crypto Extensions, typically this BLAKE2b implementation is
82*4882a593Smuzhiyun	  much faster than SHA-2 and slightly faster than SHA-1.
83*4882a593Smuzhiyun
84*4882a593Smuzhiyunconfig CRYPTO_AES_ARM
85*4882a593Smuzhiyun	tristate "Scalar AES cipher for ARM"
86*4882a593Smuzhiyun	select CRYPTO_ALGAPI
87*4882a593Smuzhiyun	select CRYPTO_AES
88*4882a593Smuzhiyun	help
89*4882a593Smuzhiyun	  Use optimized AES assembler routines for ARM platforms.
90*4882a593Smuzhiyun
91*4882a593Smuzhiyun	  On ARM processors without the Crypto Extensions, this is the
92*4882a593Smuzhiyun	  fastest AES implementation for single blocks.  For multiple
93*4882a593Smuzhiyun	  blocks, the NEON bit-sliced implementation is usually faster.
94*4882a593Smuzhiyun
95*4882a593Smuzhiyun	  This implementation may be vulnerable to cache timing attacks,
96*4882a593Smuzhiyun	  since it uses lookup tables.  However, as countermeasures it
97*4882a593Smuzhiyun	  disables IRQs and preloads the tables; it is hoped this makes
98*4882a593Smuzhiyun	  such attacks very difficult.
99*4882a593Smuzhiyun
100*4882a593Smuzhiyunconfig CRYPTO_AES_ARM_BS
101*4882a593Smuzhiyun	tristate "Bit sliced AES using NEON instructions"
102*4882a593Smuzhiyun	depends on KERNEL_MODE_NEON
103*4882a593Smuzhiyun	select CRYPTO_SKCIPHER
104*4882a593Smuzhiyun	select CRYPTO_LIB_AES
105*4882a593Smuzhiyun	select CRYPTO_AES
106*4882a593Smuzhiyun	select CRYPTO_CBC
107*4882a593Smuzhiyun	select CRYPTO_SIMD
108*4882a593Smuzhiyun	help
109*4882a593Smuzhiyun	  Use a faster and more secure NEON based implementation of AES in CBC,
110*4882a593Smuzhiyun	  CTR and XTS modes
111*4882a593Smuzhiyun
112*4882a593Smuzhiyun	  Bit sliced AES gives around 45% speedup on Cortex-A15 for CTR mode
113*4882a593Smuzhiyun	  and for XTS mode encryption, CBC and XTS mode decryption speedup is
114*4882a593Smuzhiyun	  around 25%. (CBC encryption speed is not affected by this driver.)
115*4882a593Smuzhiyun	  This implementation does not rely on any lookup tables so it is
116*4882a593Smuzhiyun	  believed to be invulnerable to cache timing attacks.
117*4882a593Smuzhiyun
118*4882a593Smuzhiyunconfig CRYPTO_AES_ARM_CE
119*4882a593Smuzhiyun	tristate "Accelerated AES using ARMv8 Crypto Extensions"
120*4882a593Smuzhiyun	depends on KERNEL_MODE_NEON
121*4882a593Smuzhiyun	select CRYPTO_SKCIPHER
122*4882a593Smuzhiyun	select CRYPTO_LIB_AES
123*4882a593Smuzhiyun	select CRYPTO_SIMD
124*4882a593Smuzhiyun	help
125*4882a593Smuzhiyun	  Use an implementation of AES in CBC, CTR and XTS modes that uses
126*4882a593Smuzhiyun	  ARMv8 Crypto Extensions
127*4882a593Smuzhiyun
128*4882a593Smuzhiyunconfig CRYPTO_GHASH_ARM_CE
129*4882a593Smuzhiyun	tristate "PMULL-accelerated GHASH using NEON/ARMv8 Crypto Extensions"
130*4882a593Smuzhiyun	depends on KERNEL_MODE_NEON
131*4882a593Smuzhiyun	select CRYPTO_HASH
132*4882a593Smuzhiyun	select CRYPTO_CRYPTD
133*4882a593Smuzhiyun	select CRYPTO_GF128MUL
134*4882a593Smuzhiyun	help
135*4882a593Smuzhiyun	  Use an implementation of GHASH (used by the GCM AEAD chaining mode)
136*4882a593Smuzhiyun	  that uses the 64x64 to 128 bit polynomial multiplication (vmull.p64)
137*4882a593Smuzhiyun	  that is part of the ARMv8 Crypto Extensions, or a slower variant that
138*4882a593Smuzhiyun	  uses the vmull.p8 instruction that is part of the basic NEON ISA.
139*4882a593Smuzhiyun
140*4882a593Smuzhiyunconfig CRYPTO_CRCT10DIF_ARM_CE
141*4882a593Smuzhiyun	tristate "CRCT10DIF digest algorithm using PMULL instructions"
142*4882a593Smuzhiyun	depends on KERNEL_MODE_NEON
143*4882a593Smuzhiyun	depends on CRC_T10DIF
144*4882a593Smuzhiyun	select CRYPTO_HASH
145*4882a593Smuzhiyun
146*4882a593Smuzhiyunconfig CRYPTO_CRC32_ARM_CE
147*4882a593Smuzhiyun	tristate "CRC32(C) digest algorithm using CRC and/or PMULL instructions"
148*4882a593Smuzhiyun	depends on KERNEL_MODE_NEON
149*4882a593Smuzhiyun	depends on CRC32
150*4882a593Smuzhiyun	select CRYPTO_HASH
151*4882a593Smuzhiyun
152*4882a593Smuzhiyunconfig CRYPTO_CHACHA20_NEON
153*4882a593Smuzhiyun	tristate "NEON and scalar accelerated ChaCha stream cipher algorithms"
154*4882a593Smuzhiyun	select CRYPTO_SKCIPHER
155*4882a593Smuzhiyun	select CRYPTO_ARCH_HAVE_LIB_CHACHA
156*4882a593Smuzhiyun
157*4882a593Smuzhiyunconfig CRYPTO_POLY1305_ARM
158*4882a593Smuzhiyun	tristate "Accelerated scalar and SIMD Poly1305 hash implementations"
159*4882a593Smuzhiyun	select CRYPTO_HASH
160*4882a593Smuzhiyun	select CRYPTO_ARCH_HAVE_LIB_POLY1305
161*4882a593Smuzhiyun
162*4882a593Smuzhiyunconfig CRYPTO_NHPOLY1305_NEON
163*4882a593Smuzhiyun	tristate "NEON accelerated NHPoly1305 hash function (for Adiantum)"
164*4882a593Smuzhiyun	depends on KERNEL_MODE_NEON
165*4882a593Smuzhiyun	select CRYPTO_NHPOLY1305
166*4882a593Smuzhiyun
167*4882a593Smuzhiyunconfig CRYPTO_CURVE25519_NEON
168*4882a593Smuzhiyun	tristate "NEON accelerated Curve25519 scalar multiplication library"
169*4882a593Smuzhiyun	depends on KERNEL_MODE_NEON
170*4882a593Smuzhiyun	select CRYPTO_LIB_CURVE25519_GENERIC
171*4882a593Smuzhiyun	select CRYPTO_ARCH_HAVE_LIB_CURVE25519
172*4882a593Smuzhiyun
173*4882a593Smuzhiyunendif
174