1# SPDX-License-Identifier: GPL-2.0
2
3menu "Accelerated Cryptographic Algorithms for CPU (arm64)"
4
5config CRYPTO_GHASH_ARM64_CE
6	tristate "Hash functions: GHASH (ARMv8 Crypto Extensions)"
7	depends on KERNEL_MODE_NEON
8	select CRYPTO_HASH
9	select CRYPTO_LIB_AES
10	select CRYPTO_LIB_GF128MUL
11	select CRYPTO_AEAD
12	help
13	  GCM GHASH function (NIST SP800-38D)
14
15	  Architecture: arm64 using:
16	  - ARMv8 Crypto Extensions
17
18config CRYPTO_NHPOLY1305_NEON
19	tristate "Hash functions: NHPoly1305 (NEON)"
20	depends on KERNEL_MODE_NEON
21	select CRYPTO_NHPOLY1305
22	help
23	  NHPoly1305 hash function (Adiantum)
24
25	  Architecture: arm64 using:
26	  - NEON (Advanced SIMD) extensions
27
28config CRYPTO_POLY1305_NEON
29	tristate "Hash functions: Poly1305 (NEON)"
30	depends on KERNEL_MODE_NEON
31	select CRYPTO_HASH
32	select CRYPTO_ARCH_HAVE_LIB_POLY1305
33	help
34	  Poly1305 authenticator algorithm (RFC7539)
35
36	  Architecture: arm64 using:
37	  - NEON (Advanced SIMD) extensions
38
39config CRYPTO_SHA1_ARM64_CE
40	tristate "Hash functions: SHA-1 (ARMv8 Crypto Extensions)"
41	depends on KERNEL_MODE_NEON
42	select CRYPTO_HASH
43	select CRYPTO_SHA1
44	help
45	  SHA-1 secure hash algorithm (FIPS 180)
46
47	  Architecture: arm64 using:
48	  - ARMv8 Crypto Extensions
49
50config CRYPTO_SHA256_ARM64
51	tristate "Hash functions: SHA-224 and SHA-256"
52	select CRYPTO_HASH
53	help
54	  SHA-224 and SHA-256 secure hash algorithms (FIPS 180)
55
56	  Architecture: arm64
57
58config CRYPTO_SHA2_ARM64_CE
59	tristate "Hash functions: SHA-224 and SHA-256 (ARMv8 Crypto Extensions)"
60	depends on KERNEL_MODE_NEON
61	select CRYPTO_HASH
62	select CRYPTO_SHA256_ARM64
63	help
64	  SHA-224 and SHA-256 secure hash algorithms (FIPS 180)
65
66	  Architecture: arm64 using:
67	  - ARMv8 Crypto Extensions
68
69config CRYPTO_SHA512_ARM64
70	tristate "Hash functions: SHA-384 and SHA-512"
71	select CRYPTO_HASH
72	help
73	  SHA-384 and SHA-512 secure hash algorithms (FIPS 180)
74
75	  Architecture: arm64
76
77config CRYPTO_SHA512_ARM64_CE
78	tristate "Hash functions: SHA-384 and SHA-512 (ARMv8 Crypto Extensions)"
79	depends on KERNEL_MODE_NEON
80	select CRYPTO_HASH
81	select CRYPTO_SHA512_ARM64
82	help
83	  SHA-384 and SHA-512 secure hash algorithms (FIPS 180)
84
85	  Architecture: arm64 using:
86	  - ARMv8 Crypto Extensions
87
88config CRYPTO_SHA3_ARM64
89	tristate "Hash functions: SHA-3 (ARMv8.2 Crypto Extensions)"
90	depends on KERNEL_MODE_NEON
91	select CRYPTO_HASH
92	select CRYPTO_SHA3
93	help
94	  SHA-3 secure hash algorithms (FIPS 202)
95
96	  Architecture: arm64 using:
97	  - ARMv8.2 Crypto Extensions
98
99config CRYPTO_SM3_NEON
100	tristate "Hash functions: SM3 (NEON)"
101	depends on KERNEL_MODE_NEON
102	select CRYPTO_HASH
103	select CRYPTO_SM3
104	help
105	  SM3 (ShangMi 3) secure hash function (OSCCA GM/T 0004-2012)
106
107	  Architecture: arm64 using:
108	  - NEON (Advanced SIMD) extensions
109
110config CRYPTO_SM3_ARM64_CE
111	tristate "Hash functions: SM3 (ARMv8.2 Crypto Extensions)"
112	depends on KERNEL_MODE_NEON
113	select CRYPTO_HASH
114	select CRYPTO_SM3
115	help
116	  SM3 (ShangMi 3) secure hash function (OSCCA GM/T 0004-2012)
117
118	  Architecture: arm64 using:
119	  - ARMv8.2 Crypto Extensions
120
121config CRYPTO_POLYVAL_ARM64_CE
122	tristate "Hash functions: POLYVAL (ARMv8 Crypto Extensions)"
123	depends on KERNEL_MODE_NEON
124	select CRYPTO_POLYVAL
125	help
126	  POLYVAL hash function for HCTR2
127
128	  Architecture: arm64 using:
129	  - ARMv8 Crypto Extensions
130
131config CRYPTO_AES_ARM64
132	tristate "Ciphers: AES, modes: ECB, CBC, CTR, CTS, XCTR, XTS"
133	select CRYPTO_AES
134	help
135	  Block ciphers: AES cipher algorithms (FIPS-197)
136	  Length-preserving ciphers: AES with ECB, CBC, CTR, CTS,
137	    XCTR, and XTS modes
138	  AEAD cipher: AES with CBC, ESSIV, and SHA-256
139	    for fscrypt and dm-crypt
140
141	  Architecture: arm64
142
143config CRYPTO_AES_ARM64_CE
144	tristate "Ciphers: AES (ARMv8 Crypto Extensions)"
145	depends on ARM64 && KERNEL_MODE_NEON
146	select CRYPTO_ALGAPI
147	select CRYPTO_LIB_AES
148	help
149	  Block ciphers: AES cipher algorithms (FIPS-197)
150
151	  Architecture: arm64 using:
152	  - ARMv8 Crypto Extensions
153
154config CRYPTO_AES_ARM64_CE_BLK
155	tristate "Ciphers: AES, modes: ECB/CBC/CTR/XTS (ARMv8 Crypto Extensions)"
156	depends on KERNEL_MODE_NEON
157	select CRYPTO_SKCIPHER
158	select CRYPTO_AES_ARM64_CE
159	help
160	  Length-preserving ciphers: AES cipher algorithms (FIPS-197)
161	  with block cipher modes:
162	  - ECB (Electronic Codebook) mode (NIST SP800-38A)
163	  - CBC (Cipher Block Chaining) mode (NIST SP800-38A)
164	  - CTR (Counter) mode (NIST SP800-38A)
165	  - XTS (XOR Encrypt XOR with ciphertext stealing) mode (NIST SP800-38E
166	    and IEEE 1619)
167
168	  Architecture: arm64 using:
169	  - ARMv8 Crypto Extensions
170
171config CRYPTO_AES_ARM64_NEON_BLK
172	tristate "Ciphers: AES, modes: ECB/CBC/CTR/XTS (NEON)"
173	depends on KERNEL_MODE_NEON
174	select CRYPTO_SKCIPHER
175	select CRYPTO_LIB_AES
176	help
177	  Length-preserving ciphers: AES cipher algorithms (FIPS-197)
178	  with block cipher modes:
179	  - ECB (Electronic Codebook) mode (NIST SP800-38A)
180	  - CBC (Cipher Block Chaining) mode (NIST SP800-38A)
181	  - CTR (Counter) mode (NIST SP800-38A)
182	  - XTS (XOR Encrypt XOR with ciphertext stealing) mode (NIST SP800-38E
183	    and IEEE 1619)
184
185	  Architecture: arm64 using:
186	  - NEON (Advanced SIMD) extensions
187
188config CRYPTO_CHACHA20_NEON
189	tristate "Ciphers: ChaCha (NEON)"
190	depends on KERNEL_MODE_NEON
191	select CRYPTO_SKCIPHER
192	select CRYPTO_LIB_CHACHA_GENERIC
193	select CRYPTO_ARCH_HAVE_LIB_CHACHA
194	help
195	  Length-preserving ciphers: ChaCha20, XChaCha20, and XChaCha12
196	  stream cipher algorithms
197
198	  Architecture: arm64 using:
199	  - NEON (Advanced SIMD) extensions
200
201config CRYPTO_AES_ARM64_BS
202	tristate "Ciphers: AES, modes: ECB/CBC/CTR/XCTR/XTS modes (bit-sliced NEON)"
203	depends on KERNEL_MODE_NEON
204	select CRYPTO_SKCIPHER
205	select CRYPTO_AES_ARM64_NEON_BLK
206	select CRYPTO_LIB_AES
207	help
208	  Length-preserving ciphers: AES cipher algorithms (FIPS-197)
209	  with block cipher modes:
210	  - ECB (Electronic Codebook) mode (NIST SP800-38A)
211	  - CBC (Cipher Block Chaining) mode (NIST SP800-38A)
212	  - CTR (Counter) mode (NIST SP800-38A)
213	  - XCTR mode for HCTR2
214	  - XTS (XOR Encrypt XOR with ciphertext stealing) mode (NIST SP800-38E
215	    and IEEE 1619)
216
217	  Architecture: arm64 using:
218	  - bit-sliced algorithm
219	  - NEON (Advanced SIMD) extensions
220
221config CRYPTO_SM4_ARM64_CE
222	tristate "Ciphers: SM4 (ARMv8.2 Crypto Extensions)"
223	depends on KERNEL_MODE_NEON
224	select CRYPTO_ALGAPI
225	select CRYPTO_SM4
226	help
227	  Block ciphers: SM4 cipher algorithms (OSCCA GB/T 32907-2016)
228
229	  Architecture: arm64 using:
230	  - ARMv8.2 Crypto Extensions
231	  - NEON (Advanced SIMD) extensions
232
233config CRYPTO_SM4_ARM64_CE_BLK
234	tristate "Ciphers: SM4, modes: ECB/CBC/CFB/CTR/XTS (ARMv8 Crypto Extensions)"
235	depends on KERNEL_MODE_NEON
236	select CRYPTO_SKCIPHER
237	select CRYPTO_SM4
238	help
239	  Length-preserving ciphers: SM4 cipher algorithms (OSCCA GB/T 32907-2016)
240	  with block cipher modes:
241	  - ECB (Electronic Codebook) mode (NIST SP800-38A)
242	  - CBC (Cipher Block Chaining) mode (NIST SP800-38A)
243	  - CFB (Cipher Feedback) mode (NIST SP800-38A)
244	  - CTR (Counter) mode (NIST SP800-38A)
245	  - XTS (XOR Encrypt XOR with ciphertext stealing) mode (NIST SP800-38E
246	    and IEEE 1619)
247
248	  Architecture: arm64 using:
249	  - ARMv8 Crypto Extensions
250	  - NEON (Advanced SIMD) extensions
251
252config CRYPTO_SM4_ARM64_NEON_BLK
253	tristate "Ciphers: SM4, modes: ECB/CBC/CFB/CTR (NEON)"
254	depends on KERNEL_MODE_NEON
255	select CRYPTO_SKCIPHER
256	select CRYPTO_SM4
257	help
258	  Length-preserving ciphers: SM4 cipher algorithms (OSCCA GB/T 32907-2016)
259	  with block cipher modes:
260	  - ECB (Electronic Codebook) mode (NIST SP800-38A)
261	  - CBC (Cipher Block Chaining) mode (NIST SP800-38A)
262	  - CFB (Cipher Feedback) mode (NIST SP800-38A)
263	  - CTR (Counter) mode (NIST SP800-38A)
264
265	  Architecture: arm64 using:
266	  - NEON (Advanced SIMD) extensions
267
268config CRYPTO_AES_ARM64_CE_CCM
269	tristate "AEAD cipher: AES in CCM mode (ARMv8 Crypto Extensions)"
270	depends on ARM64 && KERNEL_MODE_NEON
271	select CRYPTO_ALGAPI
272	select CRYPTO_AES_ARM64_CE
273	select CRYPTO_AEAD
274	select CRYPTO_LIB_AES
275	help
276	  AEAD cipher: AES cipher algorithms (FIPS-197) with
277	  CCM (Counter with Cipher Block Chaining-Message Authentication Code)
278	  authenticated encryption mode (NIST SP800-38C)
279
280	  Architecture: arm64 using:
281	  - ARMv8 Crypto Extensions
282	  - NEON (Advanced SIMD) extensions
283
284config CRYPTO_SM4_ARM64_CE_CCM
285	tristate "AEAD cipher: SM4 in CCM mode (ARMv8 Crypto Extensions)"
286	depends on KERNEL_MODE_NEON
287	select CRYPTO_ALGAPI
288	select CRYPTO_AEAD
289	select CRYPTO_SM4
290	select CRYPTO_SM4_ARM64_CE_BLK
291	help
292	  AEAD cipher: SM4 cipher algorithms (OSCCA GB/T 32907-2016) with
293	  CCM (Counter with Cipher Block Chaining-Message Authentication Code)
294	  authenticated encryption mode (NIST SP800-38C)
295
296	  Architecture: arm64 using:
297	  - ARMv8 Crypto Extensions
298	  - NEON (Advanced SIMD) extensions
299
300config CRYPTO_SM4_ARM64_CE_GCM
301	tristate "AEAD cipher: SM4 in GCM mode (ARMv8 Crypto Extensions)"
302	depends on KERNEL_MODE_NEON
303	select CRYPTO_ALGAPI
304	select CRYPTO_AEAD
305	select CRYPTO_SM4
306	select CRYPTO_SM4_ARM64_CE_BLK
307	help
308	  AEAD cipher: SM4 cipher algorithms (OSCCA GB/T 32907-2016) with
309	  GCM (Galois/Counter Mode) authenticated encryption mode (NIST SP800-38D)
310
311	  Architecture: arm64 using:
312	  - ARMv8 Crypto Extensions
313	  - PMULL (Polynomial Multiply Long) instructions
314	  - NEON (Advanced SIMD) extensions
315
316config CRYPTO_CRCT10DIF_ARM64_CE
317	tristate "CRCT10DIF (PMULL)"
318	depends on KERNEL_MODE_NEON && CRC_T10DIF
319	select CRYPTO_HASH
320	help
321	  CRC16 CRC algorithm used for the T10 (SCSI) Data Integrity Field (DIF)
322
323	  Architecture: arm64 using
324	  - PMULL (Polynomial Multiply Long) instructions
325
326endmenu
327
328