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