blob: f328026dff75da89d61e2bf792846b7f78f7e05a [file] [log] [blame]
Greg Kroah-Hartmanb2441312017-11-01 15:07:57 +01001# SPDX-License-Identifier: GPL-2.0
Linus Torvalds1da177e2005-04-16 15:20:36 -07002#
Dan Williams685784a2007-07-09 11:56:42 -07003# Generic algorithms support
4#
5config XOR_BLOCKS
6 tristate
7
8#
Dan Williams9bc89cd2007-01-02 11:10:44 -07009# async_tx api: hardware offloaded memory transfer/transform support
10#
11source "crypto/async_tx/Kconfig"
12
13#
Linus Torvalds1da177e2005-04-16 15:20:36 -070014# Cryptographic API Configuration
15#
Jan Engelhardt2e290f42007-05-18 15:11:01 +100016menuconfig CRYPTO
Sebastian Siewiorc3715cb92008-03-30 16:36:09 +080017 tristate "Cryptographic API"
Linus Torvalds1da177e2005-04-16 15:20:36 -070018 help
19 This option provides the core Cryptographic API.
20
Herbert Xucce9e062006-08-21 21:08:13 +100021if CRYPTO
22
Sebastian Siewior584fffc2008-04-05 21:04:48 +080023comment "Crypto core or helper"
24
Neil Hormanccb778e2008-08-05 14:13:08 +080025config CRYPTO_FIPS
26 bool "FIPS 200 compliance"
Herbert Xuf2c89a12014-07-04 22:15:08 +080027 depends on (CRYPTO_ANSI_CPRNG || CRYPTO_DRBG) && !CRYPTO_MANAGER_DISABLE_TESTS
Alec Ari1f696092016-10-04 19:34:30 -030028 depends on (MODULE_SIG || !MODULES)
Neil Hormanccb778e2008-08-05 14:13:08 +080029 help
Geert Uytterhoevend99324c2019-03-20 11:41:03 +010030 This option enables the fips boot option which is
31 required if you want the system to operate in a FIPS 200
Neil Hormanccb778e2008-08-05 14:13:08 +080032 certification. You should say no unless you know what
Chuck Ebberte84c5482010-09-03 19:17:49 +080033 this is.
Neil Hormanccb778e2008-08-05 14:13:08 +080034
Herbert Xucce9e062006-08-21 21:08:13 +100035config CRYPTO_ALGAPI
36 tristate
Herbert Xu6a0fcbb2008-12-10 23:29:44 +110037 select CRYPTO_ALGAPI2
Herbert Xucce9e062006-08-21 21:08:13 +100038 help
39 This option provides the API for cryptographic algorithms.
40
Herbert Xu6a0fcbb2008-12-10 23:29:44 +110041config CRYPTO_ALGAPI2
42 tristate
43
Herbert Xu1ae97822007-08-30 15:36:14 +080044config CRYPTO_AEAD
45 tristate
Herbert Xu6a0fcbb2008-12-10 23:29:44 +110046 select CRYPTO_AEAD2
Herbert Xu1ae97822007-08-30 15:36:14 +080047 select CRYPTO_ALGAPI
48
Herbert Xu6a0fcbb2008-12-10 23:29:44 +110049config CRYPTO_AEAD2
50 tristate
51 select CRYPTO_ALGAPI2
Herbert Xu149a3972015-08-13 17:28:58 +080052 select CRYPTO_NULL2
53 select CRYPTO_RNG2
Herbert Xu6a0fcbb2008-12-10 23:29:44 +110054
Herbert Xu5cde0af2006-08-22 00:07:53 +100055config CRYPTO_BLKCIPHER
56 tristate
Herbert Xu6a0fcbb2008-12-10 23:29:44 +110057 select CRYPTO_BLKCIPHER2
Herbert Xu5cde0af2006-08-22 00:07:53 +100058 select CRYPTO_ALGAPI
Herbert Xu6a0fcbb2008-12-10 23:29:44 +110059
60config CRYPTO_BLKCIPHER2
61 tristate
62 select CRYPTO_ALGAPI2
63 select CRYPTO_RNG2
Huang Ying0a2e8212009-02-19 14:44:02 +080064 select CRYPTO_WORKQUEUE
Herbert Xu5cde0af2006-08-22 00:07:53 +100065
Herbert Xu055bcee2006-08-19 22:24:23 +100066config CRYPTO_HASH
67 tristate
Herbert Xu6a0fcbb2008-12-10 23:29:44 +110068 select CRYPTO_HASH2
Herbert Xu055bcee2006-08-19 22:24:23 +100069 select CRYPTO_ALGAPI
70
Herbert Xu6a0fcbb2008-12-10 23:29:44 +110071config CRYPTO_HASH2
72 tristate
73 select CRYPTO_ALGAPI2
74
Neil Horman17f0f4a2008-08-14 22:15:52 +100075config CRYPTO_RNG
76 tristate
Herbert Xu6a0fcbb2008-12-10 23:29:44 +110077 select CRYPTO_RNG2
Neil Horman17f0f4a2008-08-14 22:15:52 +100078 select CRYPTO_ALGAPI
79
Herbert Xu6a0fcbb2008-12-10 23:29:44 +110080config CRYPTO_RNG2
81 tristate
82 select CRYPTO_ALGAPI2
83
Herbert Xu401e4232015-06-03 14:49:31 +080084config CRYPTO_RNG_DEFAULT
85 tristate
86 select CRYPTO_DRBG_MENU
87
Tadeusz Struk3c339ab2015-06-16 10:30:55 -070088config CRYPTO_AKCIPHER2
89 tristate
90 select CRYPTO_ALGAPI2
91
92config CRYPTO_AKCIPHER
93 tristate
94 select CRYPTO_AKCIPHER2
95 select CRYPTO_ALGAPI
96
Salvatore Benedetto4e5f2c42016-06-22 17:49:13 +010097config CRYPTO_KPP2
98 tristate
99 select CRYPTO_ALGAPI2
100
101config CRYPTO_KPP
102 tristate
103 select CRYPTO_ALGAPI
104 select CRYPTO_KPP2
105
Giovanni Cabiddu2ebda742016-10-21 13:19:47 +0100106config CRYPTO_ACOMP2
107 tristate
108 select CRYPTO_ALGAPI2
Bart Van Assche8cd579d2018-01-05 08:26:47 -0800109 select SGL_ALLOC
Giovanni Cabiddu2ebda742016-10-21 13:19:47 +0100110
111config CRYPTO_ACOMP
112 tristate
113 select CRYPTO_ALGAPI
114 select CRYPTO_ACOMP2
115
Herbert Xu2b8c19d2006-09-21 11:31:44 +1000116config CRYPTO_MANAGER
117 tristate "Cryptographic algorithm manager"
Herbert Xu6a0fcbb2008-12-10 23:29:44 +1100118 select CRYPTO_MANAGER2
Herbert Xu2b8c19d2006-09-21 11:31:44 +1000119 help
120 Create default cryptographic template instantiations such as
121 cbc(aes).
122
Herbert Xu6a0fcbb2008-12-10 23:29:44 +1100123config CRYPTO_MANAGER2
124 def_tristate CRYPTO_MANAGER || (CRYPTO_MANAGER!=n && CRYPTO_ALGAPI=y)
125 select CRYPTO_AEAD2
126 select CRYPTO_HASH2
127 select CRYPTO_BLKCIPHER2
Tadeusz Struk946cc462015-06-16 10:31:06 -0700128 select CRYPTO_AKCIPHER2
Salvatore Benedetto4e5f2c42016-06-22 17:49:13 +0100129 select CRYPTO_KPP2
Giovanni Cabiddu2ebda742016-10-21 13:19:47 +0100130 select CRYPTO_ACOMP2
Herbert Xu6a0fcbb2008-12-10 23:29:44 +1100131
Steffen Klasserta38f7902011-09-27 07:23:50 +0200132config CRYPTO_USER
133 tristate "Userspace cryptographic algorithm configuration"
Herbert Xu5db017a2011-11-01 12:12:43 +1100134 depends on NET
Steffen Klasserta38f7902011-09-27 07:23:50 +0200135 select CRYPTO_MANAGER
136 help
Valdis.Kletnieks@vt.edud19978f2011-11-09 01:29:20 -0500137 Userspace configuration for cryptographic instantiations such as
Steffen Klasserta38f7902011-09-27 07:23:50 +0200138 cbc(aes).
139
Herbert Xu326a6342010-08-06 09:40:28 +0800140config CRYPTO_MANAGER_DISABLE_TESTS
141 bool "Disable run-time self tests"
Herbert Xu00ca28a2010-08-06 10:34:00 +0800142 default y
143 depends on CRYPTO_MANAGER2
Alexander Shishkin0b767f92010-06-03 20:53:43 +1000144 help
Herbert Xu326a6342010-08-06 09:40:28 +0800145 Disable run-time self tests that normally take place at
146 algorithm registration.
Alexander Shishkin0b767f92010-06-03 20:53:43 +1000147
Eric Biggers5b2706a2019-01-31 23:51:44 -0800148config CRYPTO_MANAGER_EXTRA_TESTS
149 bool "Enable extra run-time crypto self tests"
150 depends on DEBUG_KERNEL && !CRYPTO_MANAGER_DISABLE_TESTS
151 help
152 Enable extra run-time self tests of registered crypto algorithms,
153 including randomized fuzz tests.
154
155 This is intended for developer use only, as these tests take much
156 longer to run than the normal self tests.
157
Rik Snelc494e072006-11-29 18:59:44 +1100158config CRYPTO_GF128MUL
Jussi Kivilinna08c70fc2011-12-13 12:53:22 +0200159 tristate "GF(2^128) multiplication functions"
Rik Snelc494e072006-11-29 18:59:44 +1100160 help
161 Efficient table driven implementation of multiplications in the
162 field GF(2^128). This is needed by some cypher modes. This
163 option will be selected automatically if you select such a
164 cipher mode. Only select this option by hand if you expect to load
165 an external module that requires these functions.
166
Sebastian Siewior584fffc2008-04-05 21:04:48 +0800167config CRYPTO_NULL
168 tristate "Null algorithms"
Herbert Xu149a3972015-08-13 17:28:58 +0800169 select CRYPTO_NULL2
Sebastian Siewior584fffc2008-04-05 21:04:48 +0800170 help
171 These are 'Null' algorithms, used by IPsec, which do nothing.
172
Herbert Xu149a3972015-08-13 17:28:58 +0800173config CRYPTO_NULL2
Herbert Xudd43c4e2015-08-17 20:39:40 +0800174 tristate
Herbert Xu149a3972015-08-13 17:28:58 +0800175 select CRYPTO_ALGAPI2
176 select CRYPTO_BLKCIPHER2
177 select CRYPTO_HASH2
178
Steffen Klassert5068c7a2010-01-07 15:57:19 +1100179config CRYPTO_PCRYPT
Kees Cook3b4afaf2012-10-02 11:16:49 -0700180 tristate "Parallel crypto engine"
181 depends on SMP
Steffen Klassert5068c7a2010-01-07 15:57:19 +1100182 select PADATA
183 select CRYPTO_MANAGER
184 select CRYPTO_AEAD
185 help
186 This converts an arbitrary crypto algorithm into a parallel
187 algorithm that executes in kernel threads.
188
Huang Ying25c38d32009-02-19 14:33:40 +0800189config CRYPTO_WORKQUEUE
190 tristate
191
Sebastian Siewior584fffc2008-04-05 21:04:48 +0800192config CRYPTO_CRYPTD
193 tristate "Software async crypto daemon"
Herbert Xudb131ef2006-09-21 11:44:08 +1000194 select CRYPTO_BLKCIPHER
Loc Hob8a28252008-05-14 21:23:00 +0800195 select CRYPTO_HASH
Herbert Xu43518402006-10-16 21:28:58 +1000196 select CRYPTO_MANAGER
Huang Ying254eff72009-02-19 14:42:19 +0800197 select CRYPTO_WORKQUEUE
Herbert Xudb131ef2006-09-21 11:44:08 +1000198 help
Sebastian Siewior584fffc2008-04-05 21:04:48 +0800199 This is a generic software asynchronous crypto daemon that
200 converts an arbitrary synchronous software crypto algorithm
201 into an asynchronous algorithm that executes in a kernel thread.
202
203config CRYPTO_AUTHENC
204 tristate "Authenc support"
205 select CRYPTO_AEAD
206 select CRYPTO_BLKCIPHER
207 select CRYPTO_MANAGER
208 select CRYPTO_HASH
Herbert Xue94c6a72015-08-04 21:23:14 +0800209 select CRYPTO_NULL
Sebastian Siewior584fffc2008-04-05 21:04:48 +0800210 help
211 Authenc: Combined mode wrapper for IPsec.
212 This is required for IPSec.
213
214config CRYPTO_TEST
215 tristate "Testing module"
216 depends on m
Herbert Xuda7f0332008-07-31 17:08:25 +0800217 select CRYPTO_MANAGER
Sebastian Siewior584fffc2008-04-05 21:04:48 +0800218 help
219 Quick & dirty crypto test module.
220
Herbert Xu266d0512016-11-22 20:08:25 +0800221config CRYPTO_SIMD
222 tristate
223 select CRYPTO_CRYPTD
224
Jussi Kivilinna596d8752012-06-18 14:07:19 +0300225config CRYPTO_GLUE_HELPER_X86
226 tristate
227 depends on X86
Herbert Xu065ce322016-11-22 20:08:29 +0800228 select CRYPTO_BLKCIPHER
Jussi Kivilinna596d8752012-06-18 14:07:19 +0300229
Baolin Wang735d37b2016-01-26 20:25:39 +0800230config CRYPTO_ENGINE
231 tristate
232
Vitaly Chikunov3d6228a2019-04-11 18:51:18 +0300233comment "Public-key cryptography"
234
235config CRYPTO_RSA
236 tristate "RSA algorithm"
237 select CRYPTO_AKCIPHER
238 select CRYPTO_MANAGER
239 select MPILIB
240 select ASN1
241 help
242 Generic implementation of the RSA public key algorithm.
243
244config CRYPTO_DH
245 tristate "Diffie-Hellman algorithm"
246 select CRYPTO_KPP
247 select MPILIB
248 help
249 Generic implementation of the Diffie-Hellman algorithm.
250
251config CRYPTO_ECDH
252 tristate "ECDH algorithm"
253 select CRYPTO_KPP
254 select CRYPTO_RNG_DEFAULT
255 help
256 Generic implementation of the ECDH algorithm
257
Sebastian Siewior584fffc2008-04-05 21:04:48 +0800258comment "Authenticated Encryption with Associated Data"
259
260config CRYPTO_CCM
261 tristate "CCM support"
262 select CRYPTO_CTR
Ard Biesheuvelf15f05b2017-02-03 14:49:36 +0000263 select CRYPTO_HASH
Sebastian Siewior584fffc2008-04-05 21:04:48 +0800264 select CRYPTO_AEAD
265 help
266 Support for Counter with CBC MAC. Required for IPsec.
267
268config CRYPTO_GCM
269 tristate "GCM/GMAC support"
270 select CRYPTO_CTR
271 select CRYPTO_AEAD
Huang Ying9382d972009-08-06 15:34:26 +1000272 select CRYPTO_GHASH
Jussi Kivilinna9489667d2013-04-07 16:43:41 +0300273 select CRYPTO_NULL
Sebastian Siewior584fffc2008-04-05 21:04:48 +0800274 help
275 Support for Galois/Counter Mode (GCM) and Galois Message
276 Authentication Code (GMAC). Required for IPSec.
277
Martin Willi71ebc4d2015-06-01 13:44:00 +0200278config CRYPTO_CHACHA20POLY1305
279 tristate "ChaCha20-Poly1305 AEAD support"
280 select CRYPTO_CHACHA20
281 select CRYPTO_POLY1305
282 select CRYPTO_AEAD
283 help
284 ChaCha20-Poly1305 AEAD support, RFC7539.
285
286 Support for the AEAD wrapper using the ChaCha20 stream cipher combined
287 with the Poly1305 authenticator. It is defined in RFC7539 for use in
288 IETF protocols.
289
Ondrej Mosnacekf606a882018-05-11 14:12:49 +0200290config CRYPTO_AEGIS128
291 tristate "AEGIS-128 AEAD algorithm"
292 select CRYPTO_AEAD
293 select CRYPTO_AES # for AES S-box tables
294 help
295 Support for the AEGIS-128 dedicated AEAD algorithm.
296
297config CRYPTO_AEGIS128L
298 tristate "AEGIS-128L AEAD algorithm"
299 select CRYPTO_AEAD
300 select CRYPTO_AES # for AES S-box tables
301 help
302 Support for the AEGIS-128L dedicated AEAD algorithm.
303
304config CRYPTO_AEGIS256
305 tristate "AEGIS-256 AEAD algorithm"
306 select CRYPTO_AEAD
307 select CRYPTO_AES # for AES S-box tables
308 help
309 Support for the AEGIS-256 dedicated AEAD algorithm.
310
Ondrej Mosnacek1d373d42018-05-11 14:12:51 +0200311config CRYPTO_AEGIS128_AESNI_SSE2
312 tristate "AEGIS-128 AEAD algorithm (x86_64 AESNI+SSE2 implementation)"
313 depends on X86 && 64BIT
314 select CRYPTO_AEAD
Eric Biggersde272ca2019-03-10 12:00:53 -0700315 select CRYPTO_SIMD
Ondrej Mosnacek1d373d42018-05-11 14:12:51 +0200316 help
Ondrej Mosnacek4e5180e2019-03-15 08:47:25 +0100317 AESNI+SSE2 implementation of the AEGIS-128 dedicated AEAD algorithm.
Ondrej Mosnacek1d373d42018-05-11 14:12:51 +0200318
319config CRYPTO_AEGIS128L_AESNI_SSE2
320 tristate "AEGIS-128L AEAD algorithm (x86_64 AESNI+SSE2 implementation)"
321 depends on X86 && 64BIT
322 select CRYPTO_AEAD
Eric Biggersd6281322019-03-10 12:00:54 -0700323 select CRYPTO_SIMD
Ondrej Mosnacek1d373d42018-05-11 14:12:51 +0200324 help
Ondrej Mosnacek4e5180e2019-03-15 08:47:25 +0100325 AESNI+SSE2 implementation of the AEGIS-128L dedicated AEAD algorithm.
Ondrej Mosnacek1d373d42018-05-11 14:12:51 +0200326
327config CRYPTO_AEGIS256_AESNI_SSE2
328 tristate "AEGIS-256 AEAD algorithm (x86_64 AESNI+SSE2 implementation)"
329 depends on X86 && 64BIT
330 select CRYPTO_AEAD
Eric Biggersb6708c22019-03-10 12:00:55 -0700331 select CRYPTO_SIMD
Ondrej Mosnacek1d373d42018-05-11 14:12:51 +0200332 help
Ondrej Mosnacek4e5180e2019-03-15 08:47:25 +0100333 AESNI+SSE2 implementation of the AEGIS-256 dedicated AEAD algorithm.
Ondrej Mosnacek1d373d42018-05-11 14:12:51 +0200334
Ondrej Mosnacek396be412018-05-11 14:19:09 +0200335config CRYPTO_MORUS640
336 tristate "MORUS-640 AEAD algorithm"
337 select CRYPTO_AEAD
338 help
339 Support for the MORUS-640 dedicated AEAD algorithm.
340
Ondrej Mosnacek56e8e572018-05-11 14:19:11 +0200341config CRYPTO_MORUS640_GLUE
Ondrej Mosnacek2808f172018-05-21 21:41:51 +0200342 tristate
343 depends on X86
Ondrej Mosnacek56e8e572018-05-11 14:19:11 +0200344 select CRYPTO_AEAD
Eric Biggers47730952019-03-10 12:00:56 -0700345 select CRYPTO_SIMD
Ondrej Mosnacek56e8e572018-05-11 14:19:11 +0200346 help
347 Common glue for SIMD optimizations of the MORUS-640 dedicated AEAD
348 algorithm.
349
Ondrej Mosnacek6ecc9d92018-05-11 14:19:12 +0200350config CRYPTO_MORUS640_SSE2
351 tristate "MORUS-640 AEAD algorithm (x86_64 SSE2 implementation)"
352 depends on X86 && 64BIT
353 select CRYPTO_AEAD
354 select CRYPTO_MORUS640_GLUE
355 help
356 SSE2 implementation of the MORUS-640 dedicated AEAD algorithm.
357
Ondrej Mosnacek396be412018-05-11 14:19:09 +0200358config CRYPTO_MORUS1280
359 tristate "MORUS-1280 AEAD algorithm"
360 select CRYPTO_AEAD
361 help
362 Support for the MORUS-1280 dedicated AEAD algorithm.
363
Ondrej Mosnacek56e8e572018-05-11 14:19:11 +0200364config CRYPTO_MORUS1280_GLUE
Ondrej Mosnacek2808f172018-05-21 21:41:51 +0200365 tristate
366 depends on X86
Ondrej Mosnacek56e8e572018-05-11 14:19:11 +0200367 select CRYPTO_AEAD
Eric Biggerse151a8d2019-03-10 12:00:57 -0700368 select CRYPTO_SIMD
Ondrej Mosnacek56e8e572018-05-11 14:19:11 +0200369 help
370 Common glue for SIMD optimizations of the MORUS-1280 dedicated AEAD
371 algorithm.
372
Ondrej Mosnacek6ecc9d92018-05-11 14:19:12 +0200373config CRYPTO_MORUS1280_SSE2
374 tristate "MORUS-1280 AEAD algorithm (x86_64 SSE2 implementation)"
375 depends on X86 && 64BIT
376 select CRYPTO_AEAD
377 select CRYPTO_MORUS1280_GLUE
378 help
379 SSE2 optimizedimplementation of the MORUS-1280 dedicated AEAD
380 algorithm.
381
382config CRYPTO_MORUS1280_AVX2
383 tristate "MORUS-1280 AEAD algorithm (x86_64 AVX2 implementation)"
384 depends on X86 && 64BIT
385 select CRYPTO_AEAD
386 select CRYPTO_MORUS1280_GLUE
387 help
388 AVX2 optimized implementation of the MORUS-1280 dedicated AEAD
389 algorithm.
390
Sebastian Siewior584fffc2008-04-05 21:04:48 +0800391config CRYPTO_SEQIV
392 tristate "Sequence Number IV Generator"
393 select CRYPTO_AEAD
394 select CRYPTO_BLKCIPHER
Herbert Xu856e3f402015-05-21 15:11:13 +0800395 select CRYPTO_NULL
Herbert Xu401e4232015-06-03 14:49:31 +0800396 select CRYPTO_RNG_DEFAULT
Sebastian Siewior584fffc2008-04-05 21:04:48 +0800397 help
398 This IV generator generates an IV based on a sequence number by
399 xoring it with a salt. This algorithm is mainly useful for CTR
400
Herbert Xua10f5542015-05-21 15:11:15 +0800401config CRYPTO_ECHAINIV
402 tristate "Encrypted Chain IV Generator"
403 select CRYPTO_AEAD
404 select CRYPTO_NULL
Herbert Xu401e4232015-06-03 14:49:31 +0800405 select CRYPTO_RNG_DEFAULT
Herbert Xu34912442015-06-03 14:49:29 +0800406 default m
Herbert Xua10f5542015-05-21 15:11:15 +0800407 help
408 This IV generator generates an IV based on the encryption of
409 a sequence number xored with a salt. This is the default
410 algorithm for CBC.
411
Sebastian Siewior584fffc2008-04-05 21:04:48 +0800412comment "Block modes"
Herbert Xudb131ef2006-09-21 11:44:08 +1000413
414config CRYPTO_CBC
415 tristate "CBC support"
416 select CRYPTO_BLKCIPHER
Herbert Xu43518402006-10-16 21:28:58 +1000417 select CRYPTO_MANAGER
Herbert Xudb131ef2006-09-21 11:44:08 +1000418 help
419 CBC: Cipher Block Chaining mode
420 This block cipher algorithm is required for IPSec.
421
James Bottomleya7d85e02018-03-01 14:36:17 -0800422config CRYPTO_CFB
423 tristate "CFB support"
424 select CRYPTO_BLKCIPHER
425 select CRYPTO_MANAGER
426 help
427 CFB: Cipher FeedBack mode
428 This block cipher algorithm is required for TPM2 Cryptography.
429
Joy Latten23e353c2007-10-23 08:50:32 +0800430config CRYPTO_CTR
431 tristate "CTR support"
432 select CRYPTO_BLKCIPHER
Herbert Xu0a270322007-11-30 21:38:37 +1100433 select CRYPTO_SEQIV
Joy Latten23e353c2007-10-23 08:50:32 +0800434 select CRYPTO_MANAGER
Joy Latten23e353c2007-10-23 08:50:32 +0800435 help
436 CTR: Counter mode
437 This block cipher algorithm is required for IPSec.
438
Kevin Coffman76cb9522008-03-24 21:26:16 +0800439config CRYPTO_CTS
440 tristate "CTS support"
441 select CRYPTO_BLKCIPHER
442 help
443 CTS: Cipher Text Stealing
444 This is the Cipher Text Stealing mode as described by
Gilad Ben-Yossefecd6d5c2018-11-05 12:05:01 +0000445 Section 8 of rfc2040 and referenced by rfc3962
446 (rfc3962 includes errata information in its Appendix A) or
447 CBC-CS3 as defined by NIST in Sp800-38A addendum from Oct 2010.
Kevin Coffman76cb9522008-03-24 21:26:16 +0800448 This mode is required for Kerberos gss mechanism support
449 for AES encryption.
450
Gilad Ben-Yossefecd6d5c2018-11-05 12:05:01 +0000451 See: https://csrc.nist.gov/publications/detail/sp/800-38a/addendum/final
452
Sebastian Siewior584fffc2008-04-05 21:04:48 +0800453config CRYPTO_ECB
454 tristate "ECB support"
Herbert Xu653ebd9c2007-11-27 19:48:27 +0800455 select CRYPTO_BLKCIPHER
Herbert Xu124b53d2007-04-16 20:49:20 +1000456 select CRYPTO_MANAGER
457 help
Sebastian Siewior584fffc2008-04-05 21:04:48 +0800458 ECB: Electronic CodeBook mode
459 This is the simplest block cipher algorithm. It simply encrypts
460 the input block by block.
Herbert Xu124b53d2007-04-16 20:49:20 +1000461
Sebastian Siewior584fffc2008-04-05 21:04:48 +0800462config CRYPTO_LRW
Jussi Kivilinna2470a2b2011-12-13 12:52:51 +0200463 tristate "LRW support"
David Howells90831632006-12-16 12:13:14 +1100464 select CRYPTO_BLKCIPHER
Sebastian Siewior584fffc2008-04-05 21:04:48 +0800465 select CRYPTO_MANAGER
466 select CRYPTO_GF128MUL
David Howells90831632006-12-16 12:13:14 +1100467 help
Sebastian Siewior584fffc2008-04-05 21:04:48 +0800468 LRW: Liskov Rivest Wagner, a tweakable, non malleable, non movable
469 narrow block cipher mode for dm-crypt. Use it with cipher
470 specification string aes-lrw-benbi, the key must be 256, 320 or 384.
471 The first 128, 192 or 256 bits in the key are used for AES and the
472 rest is used to tie each cipher block to its logical position.
David Howells90831632006-12-16 12:13:14 +1100473
Gilad Ben-Yossefe497c512018-09-20 14:18:39 +0100474config CRYPTO_OFB
475 tristate "OFB support"
476 select CRYPTO_BLKCIPHER
477 select CRYPTO_MANAGER
478 help
479 OFB: the Output Feedback mode makes a block cipher into a synchronous
480 stream cipher. It generates keystream blocks, which are then XORed
481 with the plaintext blocks to get the ciphertext. Flipping a bit in the
482 ciphertext produces a flipped bit in the plaintext at the same
483 location. This property allows many error correcting codes to function
484 normally even when applied before encryption.
485
Sebastian Siewior584fffc2008-04-05 21:04:48 +0800486config CRYPTO_PCBC
487 tristate "PCBC support"
488 select CRYPTO_BLKCIPHER
489 select CRYPTO_MANAGER
490 help
491 PCBC: Propagating Cipher Block Chaining mode
492 This block cipher algorithm is required for RxRPC.
493
494config CRYPTO_XTS
Jussi Kivilinna5bcf8e62011-12-13 12:52:56 +0200495 tristate "XTS support"
Sebastian Siewior584fffc2008-04-05 21:04:48 +0800496 select CRYPTO_BLKCIPHER
497 select CRYPTO_MANAGER
Milan Broz12cb3a12017-02-23 08:38:26 +0100498 select CRYPTO_ECB
Sebastian Siewior584fffc2008-04-05 21:04:48 +0800499 help
500 XTS: IEEE1619/D16 narrow block cipher use with aes-xts-plain,
501 key size 256, 384 or 512 bits. This implementation currently
502 can't handle a sectorsize which is not a multiple of 16 bytes.
503
Stephan Mueller1c49678e2015-09-21 20:58:56 +0200504config CRYPTO_KEYWRAP
505 tristate "Key wrapping support"
506 select CRYPTO_BLKCIPHER
507 help
508 Support for key wrapping (NIST SP800-38F / RFC3394) without
509 padding.
510
Eric Biggers26609a22018-11-16 17:26:29 -0800511config CRYPTO_NHPOLY1305
512 tristate
513 select CRYPTO_HASH
514 select CRYPTO_POLY1305
515
Eric Biggers012c8232018-12-04 22:20:00 -0800516config CRYPTO_NHPOLY1305_SSE2
517 tristate "NHPoly1305 hash function (x86_64 SSE2 implementation)"
518 depends on X86 && 64BIT
519 select CRYPTO_NHPOLY1305
520 help
521 SSE2 optimized implementation of the hash function used by the
522 Adiantum encryption mode.
523
Eric Biggers0f961f92018-12-04 22:20:01 -0800524config CRYPTO_NHPOLY1305_AVX2
525 tristate "NHPoly1305 hash function (x86_64 AVX2 implementation)"
526 depends on X86 && 64BIT
527 select CRYPTO_NHPOLY1305
528 help
529 AVX2 optimized implementation of the hash function used by the
530 Adiantum encryption mode.
531
Eric Biggers059c2a42018-11-16 17:26:31 -0800532config CRYPTO_ADIANTUM
533 tristate "Adiantum support"
534 select CRYPTO_CHACHA20
535 select CRYPTO_POLY1305
536 select CRYPTO_NHPOLY1305
537 help
538 Adiantum is a tweakable, length-preserving encryption mode
539 designed for fast and secure disk encryption, especially on
540 CPUs without dedicated crypto instructions. It encrypts
541 each sector using the XChaCha12 stream cipher, two passes of
542 an ε-almost-∆-universal hash function, and an invocation of
543 the AES-256 block cipher on a single 16-byte block. On CPUs
544 without AES instructions, Adiantum is much faster than
545 AES-XTS.
546
547 Adiantum's security is provably reducible to that of its
548 underlying stream and block ciphers, subject to a security
549 bound. Unlike XTS, Adiantum is a true wide-block encryption
550 mode, so it actually provides an even stronger notion of
551 security than XTS, subject to the security bound.
552
553 If unsure, say N.
554
Sebastian Siewior584fffc2008-04-05 21:04:48 +0800555comment "Hash modes"
556
Jussi Kivilinna93b5e862013-04-08 10:48:44 +0300557config CRYPTO_CMAC
558 tristate "CMAC support"
559 select CRYPTO_HASH
560 select CRYPTO_MANAGER
561 help
562 Cipher-based Message Authentication Code (CMAC) specified by
563 The National Institute of Standards and Technology (NIST).
564
565 https://tools.ietf.org/html/rfc4493
566 http://csrc.nist.gov/publications/nistpubs/800-38B/SP_800-38B.pdf
567
Sebastian Siewior584fffc2008-04-05 21:04:48 +0800568config CRYPTO_HMAC
569 tristate "HMAC support"
570 select CRYPTO_HASH
571 select CRYPTO_MANAGER
572 help
573 HMAC: Keyed-Hashing for Message Authentication (RFC2104).
574 This is required for IPSec.
575
576config CRYPTO_XCBC
577 tristate "XCBC support"
Sebastian Siewior584fffc2008-04-05 21:04:48 +0800578 select CRYPTO_HASH
579 select CRYPTO_MANAGER
580 help
581 XCBC: Keyed-Hashing with encryption algorithm
582 http://www.ietf.org/rfc/rfc3566.txt
583 http://csrc.nist.gov/encryption/modes/proposedmodes/
584 xcbc-mac/xcbc-mac-spec.pdf
585
Shane Wangf1939f72009-09-02 20:05:22 +1000586config CRYPTO_VMAC
587 tristate "VMAC support"
Shane Wangf1939f72009-09-02 20:05:22 +1000588 select CRYPTO_HASH
589 select CRYPTO_MANAGER
590 help
591 VMAC is a message authentication algorithm designed for
592 very high speed on 64-bit architectures.
593
594 See also:
595 <http://fastcrypto.org/vmac>
596
Sebastian Siewior584fffc2008-04-05 21:04:48 +0800597comment "Digest"
598
599config CRYPTO_CRC32C
600 tristate "CRC32c CRC algorithm"
Herbert Xu5773a3e2008-07-08 20:54:28 +0800601 select CRYPTO_HASH
Darrick J. Wong6a0962b2012-03-23 15:02:25 -0700602 select CRC32
Sebastian Siewior584fffc2008-04-05 21:04:48 +0800603 help
604 Castagnoli, et al Cyclic Redundancy-Check Algorithm. Used
605 by iSCSI for header and data digests and by others.
Herbert Xu69c35ef2008-11-07 15:11:47 +0800606 See Castagnoli93. Module will be crc32c.
Sebastian Siewior584fffc2008-04-05 21:04:48 +0800607
Austin Zhang8cb51ba2008-08-07 09:57:03 +0800608config CRYPTO_CRC32C_INTEL
609 tristate "CRC32c INTEL hardware acceleration"
610 depends on X86
611 select CRYPTO_HASH
612 help
613 In Intel processor with SSE4.2 supported, the processor will
614 support CRC32C implementation using hardware accelerated CRC32
615 instruction. This option will create 'crc32c-intel' module,
616 which will enable any routine to use the CRC32 instruction to
617 gain performance compared with software implementation.
618 Module will be crc32c-intel.
619
Jean Delvare7cf31862016-11-22 10:32:44 +0100620config CRYPTO_CRC32C_VPMSUM
Anton Blanchard6dd7a822016-07-01 08:19:45 +1000621 tristate "CRC32c CRC algorithm (powerpc64)"
Michael Ellermanc12abf32016-08-09 08:46:15 +1000622 depends on PPC64 && ALTIVEC
Anton Blanchard6dd7a822016-07-01 08:19:45 +1000623 select CRYPTO_HASH
624 select CRC32
625 help
626 CRC32c algorithm implemented using vector polynomial multiply-sum
627 (vpmsum) instructions, introduced in POWER8. Enable on POWER8
628 and newer processors for improved performance.
629
630
David S. Miller442a7c42012-08-22 20:47:36 -0700631config CRYPTO_CRC32C_SPARC64
632 tristate "CRC32c CRC algorithm (SPARC64)"
633 depends on SPARC64
634 select CRYPTO_HASH
635 select CRC32
636 help
637 CRC32c CRC algorithm implemented using sparc64 crypto instructions,
638 when available.
639
Alexander Boyko78c37d12013-01-10 18:54:59 +0400640config CRYPTO_CRC32
641 tristate "CRC32 CRC algorithm"
642 select CRYPTO_HASH
643 select CRC32
644 help
645 CRC-32-IEEE 802.3 cyclic redundancy-check algorithm.
646 Shash crypto api wrappers to crc32_le function.
647
648config CRYPTO_CRC32_PCLMUL
649 tristate "CRC32 PCLMULQDQ hardware acceleration"
650 depends on X86
651 select CRYPTO_HASH
652 select CRC32
653 help
654 From Intel Westmere and AMD Bulldozer processor with SSE4.2
655 and PCLMULQDQ supported, the processor will support
656 CRC32 PCLMULQDQ implementation using hardware accelerated PCLMULQDQ
hacoaf8cb012018-12-28 10:09:40 +0000657 instruction. This option will create 'crc32-pclmul' module,
Alexander Boyko78c37d12013-01-10 18:54:59 +0400658 which will enable any routine to use the CRC-32-IEEE 802.3 checksum
659 and gain better performance as compared with the table implementation.
660
Marcin Nowakowski4a5dc512018-02-09 22:11:06 +0000661config CRYPTO_CRC32_MIPS
662 tristate "CRC32c and CRC32 CRC algorithm (MIPS)"
663 depends on MIPS_CRC_SUPPORT
664 select CRYPTO_HASH
665 help
666 CRC32c and CRC32 CRC algorithms implemented using mips crypto
667 instructions, when available.
668
669
Herbert Xu684115212013-09-07 12:56:26 +1000670config CRYPTO_CRCT10DIF
671 tristate "CRCT10DIF algorithm"
672 select CRYPTO_HASH
673 help
674 CRC T10 Data Integrity Field computation is being cast as
675 a crypto transform. This allows for faster crc t10 diff
676 transforms to be used if they are available.
677
678config CRYPTO_CRCT10DIF_PCLMUL
679 tristate "CRCT10DIF PCLMULQDQ hardware acceleration"
680 depends on X86 && 64BIT && CRC_T10DIF
681 select CRYPTO_HASH
682 help
683 For x86_64 processors with SSE4.2 and PCLMULQDQ supported,
684 CRC T10 DIF PCLMULQDQ computation can be hardware
685 accelerated PCLMULQDQ instruction. This option will create
hacoaf8cb012018-12-28 10:09:40 +0000686 'crct10dif-pclmul' module, which is faster when computing the
Herbert Xu684115212013-09-07 12:56:26 +1000687 crct10dif checksum as compared with the generic table implementation.
688
Daniel Axtensb01df1c2017-03-15 23:37:36 +1100689config CRYPTO_CRCT10DIF_VPMSUM
690 tristate "CRC32T10DIF powerpc64 hardware acceleration"
691 depends on PPC64 && ALTIVEC && CRC_T10DIF
692 select CRYPTO_HASH
693 help
694 CRC10T10DIF algorithm implemented using vector polynomial
695 multiply-sum (vpmsum) instructions, introduced in POWER8. Enable on
696 POWER8 and newer processors for improved performance.
697
Daniel Axtens146c8682017-03-15 23:37:37 +1100698config CRYPTO_VPMSUM_TESTER
699 tristate "Powerpc64 vpmsum hardware acceleration tester"
700 depends on CRYPTO_CRCT10DIF_VPMSUM && CRYPTO_CRC32C_VPMSUM
701 help
702 Stress test for CRC32c and CRC-T10DIF algorithms implemented with
703 POWER8 vpmsum instructions.
704 Unless you are testing these algorithms, you don't need this.
705
Huang Ying2cdc6892009-08-06 15:32:38 +1000706config CRYPTO_GHASH
707 tristate "GHASH digest algorithm"
Huang Ying2cdc6892009-08-06 15:32:38 +1000708 select CRYPTO_GF128MUL
Arnd Bergmann578c60f2016-01-25 17:51:21 +0100709 select CRYPTO_HASH
Huang Ying2cdc6892009-08-06 15:32:38 +1000710 help
711 GHASH is message digest algorithm for GCM (Galois/Counter Mode).
712
Martin Willif979e012015-06-01 13:43:58 +0200713config CRYPTO_POLY1305
714 tristate "Poly1305 authenticator algorithm"
Arnd Bergmann578c60f2016-01-25 17:51:21 +0100715 select CRYPTO_HASH
Martin Willif979e012015-06-01 13:43:58 +0200716 help
717 Poly1305 authenticator algorithm, RFC7539.
718
719 Poly1305 is an authenticator algorithm designed by Daniel J. Bernstein.
720 It is used for the ChaCha20-Poly1305 AEAD, specified in RFC7539 for use
721 in IETF protocols. This is the portable C implementation of Poly1305.
722
Martin Willic70f4ab2015-07-16 19:14:06 +0200723config CRYPTO_POLY1305_X86_64
Martin Willib1ccc8f2015-07-16 19:14:08 +0200724 tristate "Poly1305 authenticator algorithm (x86_64/SSE2/AVX2)"
Martin Willic70f4ab2015-07-16 19:14:06 +0200725 depends on X86 && 64BIT
726 select CRYPTO_POLY1305
727 help
728 Poly1305 authenticator algorithm, RFC7539.
729
730 Poly1305 is an authenticator algorithm designed by Daniel J. Bernstein.
731 It is used for the ChaCha20-Poly1305 AEAD, specified in RFC7539 for use
732 in IETF protocols. This is the x86_64 assembler implementation using SIMD
733 instructions.
734
Sebastian Siewior584fffc2008-04-05 21:04:48 +0800735config CRYPTO_MD4
736 tristate "MD4 digest algorithm"
Adrian-Ken Rueegsegger808a1762008-12-03 19:55:27 +0800737 select CRYPTO_HASH
Linus Torvalds1da177e2005-04-16 15:20:36 -0700738 help
Sebastian Siewior584fffc2008-04-05 21:04:48 +0800739 MD4 message digest algorithm (RFC1320).
Linus Torvalds1da177e2005-04-16 15:20:36 -0700740
Sebastian Siewior584fffc2008-04-05 21:04:48 +0800741config CRYPTO_MD5
742 tristate "MD5 digest algorithm"
Adrian-Ken Rueegsegger14b75ba2008-12-03 19:57:12 +0800743 select CRYPTO_HASH
Linus Torvalds1da177e2005-04-16 15:20:36 -0700744 help
Sebastian Siewior584fffc2008-04-05 21:04:48 +0800745 MD5 message digest algorithm (RFC1321).
Linus Torvalds1da177e2005-04-16 15:20:36 -0700746
Aaro Koskinend69e75d2014-12-21 22:54:02 +0200747config CRYPTO_MD5_OCTEON
748 tristate "MD5 digest algorithm (OCTEON)"
749 depends on CPU_CAVIUM_OCTEON
750 select CRYPTO_MD5
751 select CRYPTO_HASH
752 help
753 MD5 message digest algorithm (RFC1321) implemented
754 using OCTEON crypto instructions, when available.
755
Markus Stockhausene8e59952015-03-01 19:30:46 +0100756config CRYPTO_MD5_PPC
757 tristate "MD5 digest algorithm (PPC)"
758 depends on PPC
759 select CRYPTO_HASH
760 help
761 MD5 message digest algorithm (RFC1321) implemented
762 in PPC assembler.
763
David S. Millerfa4dfed2012-08-19 21:51:26 -0700764config CRYPTO_MD5_SPARC64
765 tristate "MD5 digest algorithm (SPARC64)"
766 depends on SPARC64
767 select CRYPTO_MD5
768 select CRYPTO_HASH
769 help
770 MD5 message digest algorithm (RFC1321) implemented
771 using sparc64 crypto instructions, when available.
772
Sebastian Siewior584fffc2008-04-05 21:04:48 +0800773config CRYPTO_MICHAEL_MIC
774 tristate "Michael MIC keyed digest algorithm"
Adrian-Ken Rueegsegger19e2bf12008-12-07 19:35:38 +0800775 select CRYPTO_HASH
Sebastian Siewior584fffc2008-04-05 21:04:48 +0800776 help
777 Michael MIC is used for message integrity protection in TKIP
778 (IEEE 802.11i). This algorithm is required for TKIP, but it
779 should not be used for other purposes because of the weakness
780 of the algorithm.
781
Adrian-Ken Rueegsegger82798f92008-05-07 22:17:37 +0800782config CRYPTO_RMD128
Adrian Bunkb6d44342008-07-16 19:28:00 +0800783 tristate "RIPEMD-128 digest algorithm"
Herbert Xu7c4468b2008-11-08 09:10:40 +0800784 select CRYPTO_HASH
Adrian Bunkb6d44342008-07-16 19:28:00 +0800785 help
786 RIPEMD-128 (ISO/IEC 10118-3:2004).
Adrian-Ken Rueegsegger82798f92008-05-07 22:17:37 +0800787
Adrian Bunkb6d44342008-07-16 19:28:00 +0800788 RIPEMD-128 is a 128-bit cryptographic hash function. It should only
Michael Witten35ed4b32011-07-09 04:02:31 +0000789 be used as a secure replacement for RIPEMD. For other use cases,
Adrian Bunkb6d44342008-07-16 19:28:00 +0800790 RIPEMD-160 should be used.
Adrian-Ken Rueegsegger82798f92008-05-07 22:17:37 +0800791
Adrian Bunkb6d44342008-07-16 19:28:00 +0800792 Developed by Hans Dobbertin, Antoon Bosselaers and Bart Preneel.
Justin P. Mattock6d8de742010-09-12 10:42:47 +0800793 See <http://homes.esat.kuleuven.be/~bosselae/ripemd160.html>
Adrian-Ken Rueegsegger82798f92008-05-07 22:17:37 +0800794
795config CRYPTO_RMD160
Adrian Bunkb6d44342008-07-16 19:28:00 +0800796 tristate "RIPEMD-160 digest algorithm"
Herbert Xue5835fb2008-11-08 09:18:51 +0800797 select CRYPTO_HASH
Adrian Bunkb6d44342008-07-16 19:28:00 +0800798 help
799 RIPEMD-160 (ISO/IEC 10118-3:2004).
Adrian-Ken Rueegsegger82798f92008-05-07 22:17:37 +0800800
Adrian Bunkb6d44342008-07-16 19:28:00 +0800801 RIPEMD-160 is a 160-bit cryptographic hash function. It is intended
802 to be used as a secure replacement for the 128-bit hash functions
803 MD4, MD5 and it's predecessor RIPEMD
804 (not to be confused with RIPEMD-128).
Adrian-Ken Rueegsegger82798f92008-05-07 22:17:37 +0800805
Adrian Bunkb6d44342008-07-16 19:28:00 +0800806 It's speed is comparable to SHA1 and there are no known attacks
807 against RIPEMD-160.
Adrian-Ken Rueegsegger534fe2c12008-05-09 21:30:27 +0800808
Adrian Bunkb6d44342008-07-16 19:28:00 +0800809 Developed by Hans Dobbertin, Antoon Bosselaers and Bart Preneel.
Justin P. Mattock6d8de742010-09-12 10:42:47 +0800810 See <http://homes.esat.kuleuven.be/~bosselae/ripemd160.html>
Adrian-Ken Rueegsegger534fe2c12008-05-09 21:30:27 +0800811
812config CRYPTO_RMD256
Adrian Bunkb6d44342008-07-16 19:28:00 +0800813 tristate "RIPEMD-256 digest algorithm"
Herbert Xud8a5e2e2008-11-08 09:58:10 +0800814 select CRYPTO_HASH
Adrian Bunkb6d44342008-07-16 19:28:00 +0800815 help
816 RIPEMD-256 is an optional extension of RIPEMD-128 with a
817 256 bit hash. It is intended for applications that require
818 longer hash-results, without needing a larger security level
819 (than RIPEMD-128).
Adrian-Ken Rueegsegger534fe2c12008-05-09 21:30:27 +0800820
Adrian Bunkb6d44342008-07-16 19:28:00 +0800821 Developed by Hans Dobbertin, Antoon Bosselaers and Bart Preneel.
Justin P. Mattock6d8de742010-09-12 10:42:47 +0800822 See <http://homes.esat.kuleuven.be/~bosselae/ripemd160.html>
Adrian-Ken Rueegsegger534fe2c12008-05-09 21:30:27 +0800823
824config CRYPTO_RMD320
Adrian Bunkb6d44342008-07-16 19:28:00 +0800825 tristate "RIPEMD-320 digest algorithm"
Herbert Xu3b8efb42008-11-08 10:11:09 +0800826 select CRYPTO_HASH
Adrian Bunkb6d44342008-07-16 19:28:00 +0800827 help
828 RIPEMD-320 is an optional extension of RIPEMD-160 with a
829 320 bit hash. It is intended for applications that require
830 longer hash-results, without needing a larger security level
831 (than RIPEMD-160).
Adrian-Ken Rueegsegger534fe2c12008-05-09 21:30:27 +0800832
Adrian Bunkb6d44342008-07-16 19:28:00 +0800833 Developed by Hans Dobbertin, Antoon Bosselaers and Bart Preneel.
Justin P. Mattock6d8de742010-09-12 10:42:47 +0800834 See <http://homes.esat.kuleuven.be/~bosselae/ripemd160.html>
Adrian-Ken Rueegsegger82798f92008-05-07 22:17:37 +0800835
Sebastian Siewior584fffc2008-04-05 21:04:48 +0800836config CRYPTO_SHA1
837 tristate "SHA1 digest algorithm"
Adrian-Ken Rueegsegger54ccb362008-12-02 21:08:20 +0800838 select CRYPTO_HASH
Sebastian Siewior584fffc2008-04-05 21:04:48 +0800839 help
840 SHA-1 secure hash standard (FIPS 180-1/DFIPS 180-2).
841
Mathias Krause66be8952011-08-04 20:19:25 +0200842config CRYPTO_SHA1_SSSE3
time38b6b7f2015-09-10 15:27:26 -0700843 tristate "SHA1 digest algorithm (SSSE3/AVX/AVX2/SHA-NI)"
Mathias Krause66be8952011-08-04 20:19:25 +0200844 depends on X86 && 64BIT
845 select CRYPTO_SHA1
846 select CRYPTO_HASH
847 help
848 SHA-1 secure hash standard (FIPS 180-1/DFIPS 180-2) implemented
849 using Supplemental SSE3 (SSSE3) instructions or Advanced Vector
time38b6b7f2015-09-10 15:27:26 -0700850 Extensions (AVX/AVX2) or SHA-NI(SHA Extensions New Instructions),
851 when available.
Mathias Krause66be8952011-08-04 20:19:25 +0200852
Tim Chen8275d1a2013-03-26 13:59:17 -0700853config CRYPTO_SHA256_SSSE3
time38b6b7f2015-09-10 15:27:26 -0700854 tristate "SHA256 digest algorithm (SSSE3/AVX/AVX2/SHA-NI)"
Tim Chen8275d1a2013-03-26 13:59:17 -0700855 depends on X86 && 64BIT
856 select CRYPTO_SHA256
857 select CRYPTO_HASH
858 help
859 SHA-256 secure hash standard (DFIPS 180-2) implemented
860 using Supplemental SSE3 (SSSE3) instructions, or Advanced Vector
861 Extensions version 1 (AVX1), or Advanced Vector Extensions
time38b6b7f2015-09-10 15:27:26 -0700862 version 2 (AVX2) instructions, or SHA-NI (SHA Extensions New
863 Instructions) when available.
Tim Chen8275d1a2013-03-26 13:59:17 -0700864
Tim Chen87de4572013-03-26 14:00:02 -0700865config CRYPTO_SHA512_SSSE3
866 tristate "SHA512 digest algorithm (SSSE3/AVX/AVX2)"
867 depends on X86 && 64BIT
868 select CRYPTO_SHA512
869 select CRYPTO_HASH
870 help
871 SHA-512 secure hash standard (DFIPS 180-2) implemented
872 using Supplemental SSE3 (SSSE3) instructions, or Advanced Vector
873 Extensions version 1 (AVX1), or Advanced Vector Extensions
874 version 2 (AVX2) instructions, when available.
875
Aaro Koskinenefdb6f62015-03-08 22:07:47 +0200876config CRYPTO_SHA1_OCTEON
877 tristate "SHA1 digest algorithm (OCTEON)"
878 depends on CPU_CAVIUM_OCTEON
879 select CRYPTO_SHA1
880 select CRYPTO_HASH
881 help
882 SHA-1 secure hash standard (FIPS 180-1/DFIPS 180-2) implemented
883 using OCTEON crypto instructions, when available.
884
David S. Miller4ff28d42012-08-19 15:41:53 -0700885config CRYPTO_SHA1_SPARC64
886 tristate "SHA1 digest algorithm (SPARC64)"
887 depends on SPARC64
888 select CRYPTO_SHA1
889 select CRYPTO_HASH
890 help
891 SHA-1 secure hash standard (FIPS 180-1/DFIPS 180-2) implemented
892 using sparc64 crypto instructions, when available.
893
Michael Ellerman323a6bf2012-09-13 23:00:49 +0000894config CRYPTO_SHA1_PPC
895 tristate "SHA1 digest algorithm (powerpc)"
896 depends on PPC
897 help
898 This is the powerpc hardware accelerated implementation of the
899 SHA-1 secure hash standard (FIPS 180-1/DFIPS 180-2).
900
Markus Stockhausend9850fc2015-02-24 20:36:50 +0100901config CRYPTO_SHA1_PPC_SPE
902 tristate "SHA1 digest algorithm (PPC SPE)"
903 depends on PPC && SPE
904 help
905 SHA-1 secure hash standard (DFIPS 180-4) implemented
906 using powerpc SPE SIMD instruction set.
907
Sebastian Siewior584fffc2008-04-05 21:04:48 +0800908config CRYPTO_SHA256
909 tristate "SHA224 and SHA256 digest algorithm"
Adrian-Ken Rueegsegger50e109b52008-12-03 19:57:49 +0800910 select CRYPTO_HASH
Sebastian Siewior584fffc2008-04-05 21:04:48 +0800911 help
912 SHA256 secure hash standard (DFIPS 180-2).
913
914 This version of SHA implements a 256 bit hash with 128 bits of
915 security against collision attacks.
916
Adrian Bunkb6d44342008-07-16 19:28:00 +0800917 This code also includes SHA-224, a 224 bit hash with 112 bits
918 of security against collision attacks.
Sebastian Siewior584fffc2008-04-05 21:04:48 +0800919
Markus Stockhausen2ecc1e92015-01-30 15:39:34 +0100920config CRYPTO_SHA256_PPC_SPE
921 tristate "SHA224 and SHA256 digest algorithm (PPC SPE)"
922 depends on PPC && SPE
923 select CRYPTO_SHA256
924 select CRYPTO_HASH
925 help
926 SHA224 and SHA256 secure hash standard (DFIPS 180-2)
927 implemented using powerpc SPE SIMD instruction set.
928
Aaro Koskinenefdb6f62015-03-08 22:07:47 +0200929config CRYPTO_SHA256_OCTEON
930 tristate "SHA224 and SHA256 digest algorithm (OCTEON)"
931 depends on CPU_CAVIUM_OCTEON
932 select CRYPTO_SHA256
933 select CRYPTO_HASH
934 help
935 SHA-256 secure hash standard (DFIPS 180-2) implemented
936 using OCTEON crypto instructions, when available.
937
David S. Miller86c93b22012-08-19 17:11:37 -0700938config CRYPTO_SHA256_SPARC64
939 tristate "SHA224 and SHA256 digest algorithm (SPARC64)"
940 depends on SPARC64
941 select CRYPTO_SHA256
942 select CRYPTO_HASH
943 help
944 SHA-256 secure hash standard (DFIPS 180-2) implemented
945 using sparc64 crypto instructions, when available.
946
Sebastian Siewior584fffc2008-04-05 21:04:48 +0800947config CRYPTO_SHA512
948 tristate "SHA384 and SHA512 digest algorithms"
Adrian-Ken Rueegseggerbd9d20d2008-12-17 16:49:02 +1100949 select CRYPTO_HASH
Sebastian Siewior584fffc2008-04-05 21:04:48 +0800950 help
951 SHA512 secure hash standard (DFIPS 180-2).
952
953 This version of SHA implements a 512 bit hash with 256 bits of
954 security against collision attacks.
955
956 This code also includes SHA-384, a 384 bit hash with 192 bits
957 of security against collision attacks.
958
Aaro Koskinenefdb6f62015-03-08 22:07:47 +0200959config CRYPTO_SHA512_OCTEON
960 tristate "SHA384 and SHA512 digest algorithms (OCTEON)"
961 depends on CPU_CAVIUM_OCTEON
962 select CRYPTO_SHA512
963 select CRYPTO_HASH
964 help
965 SHA-512 secure hash standard (DFIPS 180-2) implemented
966 using OCTEON crypto instructions, when available.
967
David S. Miller775e0c62012-08-19 17:37:56 -0700968config CRYPTO_SHA512_SPARC64
969 tristate "SHA384 and SHA512 digest algorithm (SPARC64)"
970 depends on SPARC64
971 select CRYPTO_SHA512
972 select CRYPTO_HASH
973 help
974 SHA-512 secure hash standard (DFIPS 180-2) implemented
975 using sparc64 crypto instructions, when available.
976
Jeff Garzik53964b92016-06-17 10:30:35 +0530977config CRYPTO_SHA3
978 tristate "SHA3 digest algorithm"
979 select CRYPTO_HASH
980 help
981 SHA-3 secure hash standard (DFIPS 202). It's based on
982 cryptographic sponge function family called Keccak.
983
984 References:
985 http://keccak.noekeon.org/
986
Gilad Ben-Yossef4f0fc162017-08-21 13:51:28 +0300987config CRYPTO_SM3
988 tristate "SM3 digest algorithm"
989 select CRYPTO_HASH
990 help
991 SM3 secure hash function as defined by OSCCA GM/T 0004-2012 SM3).
992 It is part of the Chinese Commercial Cryptography suite.
993
994 References:
995 http://www.oscca.gov.cn/UpFile/20101222141857786.pdf
996 https://datatracker.ietf.org/doc/html/draft-shen-sm3-hash
997
Vitaly Chikunovfe189572018-11-07 00:00:01 +0300998config CRYPTO_STREEBOG
999 tristate "Streebog Hash Function"
1000 select CRYPTO_HASH
1001 help
1002 Streebog Hash Function (GOST R 34.11-2012, RFC 6986) is one of the Russian
1003 cryptographic standard algorithms (called GOST algorithms).
1004 This setting enables two hash algorithms with 256 and 512 bits output.
1005
1006 References:
1007 https://tc26.ru/upload/iblock/fed/feddbb4d26b685903faa2ba11aea43f6.pdf
1008 https://tools.ietf.org/html/rfc6986
1009
Sebastian Siewior584fffc2008-04-05 21:04:48 +08001010config CRYPTO_TGR192
1011 tristate "Tiger digest algorithms"
Adrian-Ken Rueegseggerf63fbd32008-12-03 19:58:32 +08001012 select CRYPTO_HASH
Sebastian Siewior584fffc2008-04-05 21:04:48 +08001013 help
1014 Tiger hash algorithm 192, 160 and 128-bit hashes
1015
1016 Tiger is a hash function optimized for 64-bit processors while
1017 still having decent performance on 32-bit processors.
1018 Tiger was developed by Ross Anderson and Eli Biham.
Linus Torvalds1da177e2005-04-16 15:20:36 -07001019
1020 See also:
Sebastian Siewior584fffc2008-04-05 21:04:48 +08001021 <http://www.cs.technion.ac.il/~biham/Reports/Tiger/>.
1022
1023config CRYPTO_WP512
1024 tristate "Whirlpool digest algorithms"
Adrian-Ken Rueegsegger49465102008-12-07 19:34:37 +08001025 select CRYPTO_HASH
Sebastian Siewior584fffc2008-04-05 21:04:48 +08001026 help
1027 Whirlpool hash algorithm 512, 384 and 256-bit hashes
1028
1029 Whirlpool-512 is part of the NESSIE cryptographic primitives.
1030 Whirlpool will be part of the ISO/IEC 10118-3:2003(E) standard
1031
1032 See also:
Justin P. Mattock6d8de742010-09-12 10:42:47 +08001033 <http://www.larc.usp.br/~pbarreto/WhirlpoolPage.html>
Sebastian Siewior584fffc2008-04-05 21:04:48 +08001034
Huang Ying0e1227d2009-10-19 11:53:06 +09001035config CRYPTO_GHASH_CLMUL_NI_INTEL
1036 tristate "GHASH digest algorithm (CLMUL-NI accelerated)"
Richard Weinberger8af00862011-06-08 20:56:29 +08001037 depends on X86 && 64BIT
Huang Ying0e1227d2009-10-19 11:53:06 +09001038 select CRYPTO_CRYPTD
1039 help
1040 GHASH is message digest algorithm for GCM (Galois/Counter Mode).
1041 The implementation is accelerated by CLMUL-NI of Intel.
1042
Sebastian Siewior584fffc2008-04-05 21:04:48 +08001043comment "Ciphers"
Linus Torvalds1da177e2005-04-16 15:20:36 -07001044
1045config CRYPTO_AES
1046 tristate "AES cipher algorithms"
Herbert Xucce9e062006-08-21 21:08:13 +10001047 select CRYPTO_ALGAPI
Linus Torvalds1da177e2005-04-16 15:20:36 -07001048 help
Sebastian Siewior584fffc2008-04-05 21:04:48 +08001049 AES cipher algorithms (FIPS-197). AES uses the Rijndael
Linus Torvalds1da177e2005-04-16 15:20:36 -07001050 algorithm.
1051
1052 Rijndael appears to be consistently a very good performer in
Sebastian Siewior584fffc2008-04-05 21:04:48 +08001053 both hardware and software across a wide range of computing
1054 environments regardless of its use in feedback or non-feedback
1055 modes. Its key setup time is excellent, and its key agility is
1056 good. Rijndael's very low memory requirements make it very well
1057 suited for restricted-space environments, in which it also
1058 demonstrates excellent performance. Rijndael's operations are
1059 among the easiest to defend against power and timing attacks.
Linus Torvalds1da177e2005-04-16 15:20:36 -07001060
Sebastian Siewior584fffc2008-04-05 21:04:48 +08001061 The AES specifies three key sizes: 128, 192 and 256 bits
Linus Torvalds1da177e2005-04-16 15:20:36 -07001062
1063 See <http://csrc.nist.gov/CryptoToolkit/aes/> for more information.
1064
Ard Biesheuvelb5e0b032017-02-02 16:37:40 +00001065config CRYPTO_AES_TI
1066 tristate "Fixed time AES cipher"
1067 select CRYPTO_ALGAPI
1068 help
1069 This is a generic implementation of AES that attempts to eliminate
1070 data dependent latencies as much as possible without affecting
1071 performance too much. It is intended for use by the generic CCM
1072 and GCM drivers, and other CTR or CMAC/XCBC based modes that rely
1073 solely on encryption (although decryption is supported as well, but
1074 with a more dramatic performance hit)
1075
1076 Instead of using 16 lookup tables of 1 KB each, (8 for encryption and
1077 8 for decryption), this implementation only uses just two S-boxes of
1078 256 bytes each, and attempts to eliminate data dependent latencies by
1079 prefetching the entire table into the cache at the start of each
Eric Biggers0a6a40c2018-10-17 21:37:58 -07001080 block. Interrupts are also disabled to avoid races where cachelines
1081 are evicted when the CPU is interrupted to do something else.
Ard Biesheuvelb5e0b032017-02-02 16:37:40 +00001082
Linus Torvalds1da177e2005-04-16 15:20:36 -07001083config CRYPTO_AES_586
1084 tristate "AES cipher algorithms (i586)"
Herbert Xucce9e062006-08-21 21:08:13 +10001085 depends on (X86 || UML_X86) && !64BIT
1086 select CRYPTO_ALGAPI
Sebastian Siewior5157dea2007-11-10 19:07:16 +08001087 select CRYPTO_AES
Linus Torvalds1da177e2005-04-16 15:20:36 -07001088 help
Sebastian Siewior584fffc2008-04-05 21:04:48 +08001089 AES cipher algorithms (FIPS-197). AES uses the Rijndael
Linus Torvalds1da177e2005-04-16 15:20:36 -07001090 algorithm.
1091
1092 Rijndael appears to be consistently a very good performer in
Sebastian Siewior584fffc2008-04-05 21:04:48 +08001093 both hardware and software across a wide range of computing
1094 environments regardless of its use in feedback or non-feedback
1095 modes. Its key setup time is excellent, and its key agility is
1096 good. Rijndael's very low memory requirements make it very well
1097 suited for restricted-space environments, in which it also
1098 demonstrates excellent performance. Rijndael's operations are
1099 among the easiest to defend against power and timing attacks.
Linus Torvalds1da177e2005-04-16 15:20:36 -07001100
Sebastian Siewior584fffc2008-04-05 21:04:48 +08001101 The AES specifies three key sizes: 128, 192 and 256 bits
Linus Torvalds1da177e2005-04-16 15:20:36 -07001102
1103 See <http://csrc.nist.gov/encryption/aes/> for more information.
1104
Andreas Steinmetza2a892a2005-07-06 13:55:00 -07001105config CRYPTO_AES_X86_64
1106 tristate "AES cipher algorithms (x86_64)"
Herbert Xucce9e062006-08-21 21:08:13 +10001107 depends on (X86 || UML_X86) && 64BIT
1108 select CRYPTO_ALGAPI
Sebastian Siewior81190b32007-11-08 21:25:04 +08001109 select CRYPTO_AES
Andreas Steinmetza2a892a2005-07-06 13:55:00 -07001110 help
Sebastian Siewior584fffc2008-04-05 21:04:48 +08001111 AES cipher algorithms (FIPS-197). AES uses the Rijndael
Andreas Steinmetza2a892a2005-07-06 13:55:00 -07001112 algorithm.
1113
1114 Rijndael appears to be consistently a very good performer in
Sebastian Siewior584fffc2008-04-05 21:04:48 +08001115 both hardware and software across a wide range of computing
1116 environments regardless of its use in feedback or non-feedback
1117 modes. Its key setup time is excellent, and its key agility is
1118 good. Rijndael's very low memory requirements make it very well
1119 suited for restricted-space environments, in which it also
1120 demonstrates excellent performance. Rijndael's operations are
1121 among the easiest to defend against power and timing attacks.
Andreas Steinmetza2a892a2005-07-06 13:55:00 -07001122
Sebastian Siewior584fffc2008-04-05 21:04:48 +08001123 The AES specifies three key sizes: 128, 192 and 256 bits
Andreas Steinmetza2a892a2005-07-06 13:55:00 -07001124
1125 See <http://csrc.nist.gov/encryption/aes/> for more information.
1126
Huang Ying54b6a1b2009-01-18 16:28:34 +11001127config CRYPTO_AES_NI_INTEL
1128 tristate "AES cipher algorithms (AES-NI)"
Richard Weinberger8af00862011-06-08 20:56:29 +08001129 depends on X86
Herbert Xu85671862016-11-22 20:08:33 +08001130 select CRYPTO_AEAD
Mathias Krause0d258ef2010-11-27 16:34:46 +08001131 select CRYPTO_AES_X86_64 if 64BIT
1132 select CRYPTO_AES_586 if !64BIT
Huang Ying54b6a1b2009-01-18 16:28:34 +11001133 select CRYPTO_ALGAPI
Herbert Xu85671862016-11-22 20:08:33 +08001134 select CRYPTO_BLKCIPHER
Jussi Kivilinna7643a112013-04-10 18:39:20 +03001135 select CRYPTO_GLUE_HELPER_X86 if 64BIT
Herbert Xu85671862016-11-22 20:08:33 +08001136 select CRYPTO_SIMD
Huang Ying54b6a1b2009-01-18 16:28:34 +11001137 help
1138 Use Intel AES-NI instructions for AES algorithm.
1139
1140 AES cipher algorithms (FIPS-197). AES uses the Rijndael
1141 algorithm.
1142
1143 Rijndael appears to be consistently a very good performer in
1144 both hardware and software across a wide range of computing
1145 environments regardless of its use in feedback or non-feedback
1146 modes. Its key setup time is excellent, and its key agility is
1147 good. Rijndael's very low memory requirements make it very well
1148 suited for restricted-space environments, in which it also
1149 demonstrates excellent performance. Rijndael's operations are
1150 among the easiest to defend against power and timing attacks.
1151
1152 The AES specifies three key sizes: 128, 192 and 256 bits
1153
1154 See <http://csrc.nist.gov/encryption/aes/> for more information.
1155
Mathias Krause0d258ef2010-11-27 16:34:46 +08001156 In addition to AES cipher algorithm support, the acceleration
1157 for some popular block cipher mode is supported too, including
Ard Biesheuvel944585a2018-09-24 14:48:16 +02001158 ECB, CBC, LRW, XTS. The 64 bit version has additional
Mathias Krause0d258ef2010-11-27 16:34:46 +08001159 acceleration for CTR.
Huang Ying2cf4ac82009-03-29 15:41:20 +08001160
David S. Miller9bf48522012-08-21 03:58:13 -07001161config CRYPTO_AES_SPARC64
1162 tristate "AES cipher algorithms (SPARC64)"
1163 depends on SPARC64
1164 select CRYPTO_CRYPTD
1165 select CRYPTO_ALGAPI
1166 help
1167 Use SPARC64 crypto opcodes for AES algorithm.
1168
1169 AES cipher algorithms (FIPS-197). AES uses the Rijndael
1170 algorithm.
1171
1172 Rijndael appears to be consistently a very good performer in
1173 both hardware and software across a wide range of computing
1174 environments regardless of its use in feedback or non-feedback
1175 modes. Its key setup time is excellent, and its key agility is
1176 good. Rijndael's very low memory requirements make it very well
1177 suited for restricted-space environments, in which it also
1178 demonstrates excellent performance. Rijndael's operations are
1179 among the easiest to defend against power and timing attacks.
1180
1181 The AES specifies three key sizes: 128, 192 and 256 bits
1182
1183 See <http://csrc.nist.gov/encryption/aes/> for more information.
1184
1185 In addition to AES cipher algorithm support, the acceleration
1186 for some popular block cipher mode is supported too, including
1187 ECB and CBC.
1188
Markus Stockhausen504c6142015-02-22 10:00:10 +01001189config CRYPTO_AES_PPC_SPE
1190 tristate "AES cipher algorithms (PPC SPE)"
1191 depends on PPC && SPE
1192 help
1193 AES cipher algorithms (FIPS-197). Additionally the acceleration
1194 for popular block cipher modes ECB, CBC, CTR and XTS is supported.
1195 This module should only be used for low power (router) devices
1196 without hardware AES acceleration (e.g. caam crypto). It reduces the
1197 size of the AES tables from 16KB to 8KB + 256 bytes and mitigates
1198 timining attacks. Nevertheless it might be not as secure as other
1199 architecture specific assembler implementations that work on 1KB
1200 tables or 256 bytes S-boxes.
1201
Sebastian Siewior584fffc2008-04-05 21:04:48 +08001202config CRYPTO_ANUBIS
1203 tristate "Anubis cipher algorithm"
1204 select CRYPTO_ALGAPI
1205 help
1206 Anubis cipher algorithm.
1207
1208 Anubis is a variable key length cipher which can use keys from
1209 128 bits to 320 bits in length. It was evaluated as a entrant
1210 in the NESSIE competition.
1211
1212 See also:
Justin P. Mattock6d8de742010-09-12 10:42:47 +08001213 <https://www.cosic.esat.kuleuven.be/nessie/reports/>
1214 <http://www.larc.usp.br/~pbarreto/AnubisPage.html>
Sebastian Siewior584fffc2008-04-05 21:04:48 +08001215
1216config CRYPTO_ARC4
1217 tristate "ARC4 cipher algorithm"
Sebastian Andrzej Siewiorb9b0f082012-06-26 18:13:46 +02001218 select CRYPTO_BLKCIPHER
Sebastian Siewior584fffc2008-04-05 21:04:48 +08001219 help
1220 ARC4 cipher algorithm.
1221
1222 ARC4 is a stream cipher using keys ranging from 8 bits to 2048
1223 bits in length. This algorithm is required for driver-based
1224 WEP, but it should not be for other purposes because of the
1225 weakness of the algorithm.
1226
1227config CRYPTO_BLOWFISH
1228 tristate "Blowfish cipher algorithm"
1229 select CRYPTO_ALGAPI
Jussi Kivilinna52ba8672011-09-02 01:45:07 +03001230 select CRYPTO_BLOWFISH_COMMON
Sebastian Siewior584fffc2008-04-05 21:04:48 +08001231 help
1232 Blowfish cipher algorithm, by Bruce Schneier.
1233
1234 This is a variable key length cipher which can use keys from 32
1235 bits to 448 bits in length. It's fast, simple and specifically
1236 designed for use on "large microprocessors".
1237
1238 See also:
1239 <http://www.schneier.com/blowfish.html>
1240
Jussi Kivilinna52ba8672011-09-02 01:45:07 +03001241config CRYPTO_BLOWFISH_COMMON
1242 tristate
1243 help
1244 Common parts of the Blowfish cipher algorithm shared by the
1245 generic c and the assembler implementations.
1246
1247 See also:
1248 <http://www.schneier.com/blowfish.html>
1249
Jussi Kivilinna64b94ce2011-09-02 01:45:22 +03001250config CRYPTO_BLOWFISH_X86_64
1251 tristate "Blowfish cipher algorithm (x86_64)"
Al Virof21a7c12012-04-08 20:31:22 -04001252 depends on X86 && 64BIT
Eric Biggersc1679172018-02-19 23:48:16 -08001253 select CRYPTO_BLKCIPHER
Jussi Kivilinna64b94ce2011-09-02 01:45:22 +03001254 select CRYPTO_BLOWFISH_COMMON
1255 help
1256 Blowfish cipher algorithm (x86_64), by Bruce Schneier.
1257
1258 This is a variable key length cipher which can use keys from 32
1259 bits to 448 bits in length. It's fast, simple and specifically
1260 designed for use on "large microprocessors".
1261
1262 See also:
1263 <http://www.schneier.com/blowfish.html>
1264
Sebastian Siewior584fffc2008-04-05 21:04:48 +08001265config CRYPTO_CAMELLIA
1266 tristate "Camellia cipher algorithms"
1267 depends on CRYPTO
1268 select CRYPTO_ALGAPI
1269 help
1270 Camellia cipher algorithms module.
1271
1272 Camellia is a symmetric key block cipher developed jointly
1273 at NTT and Mitsubishi Electric Corporation.
1274
1275 The Camellia specifies three key sizes: 128, 192 and 256 bits.
1276
1277 See also:
1278 <https://info.isl.ntt.co.jp/crypt/eng/camellia/index_s.html>
1279
Jussi Kivilinna0b95ec52012-03-05 20:26:47 +02001280config CRYPTO_CAMELLIA_X86_64
1281 tristate "Camellia cipher algorithm (x86_64)"
Al Virof21a7c12012-04-08 20:31:22 -04001282 depends on X86 && 64BIT
Jussi Kivilinna0b95ec52012-03-05 20:26:47 +02001283 depends on CRYPTO
Eric Biggers1af6d032018-02-19 23:48:22 -08001284 select CRYPTO_BLKCIPHER
Jussi Kivilinna964263a2012-06-18 14:07:29 +03001285 select CRYPTO_GLUE_HELPER_X86
Jussi Kivilinna0b95ec52012-03-05 20:26:47 +02001286 help
1287 Camellia cipher algorithm module (x86_64).
1288
1289 Camellia is a symmetric key block cipher developed jointly
1290 at NTT and Mitsubishi Electric Corporation.
1291
1292 The Camellia specifies three key sizes: 128, 192 and 256 bits.
1293
1294 See also:
1295 <https://info.isl.ntt.co.jp/crypt/eng/camellia/index_s.html>
1296
Jussi Kivilinnad9b1d2e2012-10-26 14:49:01 +03001297config CRYPTO_CAMELLIA_AESNI_AVX_X86_64
1298 tristate "Camellia cipher algorithm (x86_64/AES-NI/AVX)"
1299 depends on X86 && 64BIT
1300 depends on CRYPTO
Eric Biggers44893bc2018-02-19 23:48:23 -08001301 select CRYPTO_BLKCIPHER
Jussi Kivilinnad9b1d2e2012-10-26 14:49:01 +03001302 select CRYPTO_CAMELLIA_X86_64
Eric Biggers44893bc2018-02-19 23:48:23 -08001303 select CRYPTO_GLUE_HELPER_X86
1304 select CRYPTO_SIMD
Jussi Kivilinnad9b1d2e2012-10-26 14:49:01 +03001305 select CRYPTO_XTS
1306 help
1307 Camellia cipher algorithm module (x86_64/AES-NI/AVX).
1308
1309 Camellia is a symmetric key block cipher developed jointly
1310 at NTT and Mitsubishi Electric Corporation.
1311
1312 The Camellia specifies three key sizes: 128, 192 and 256 bits.
1313
1314 See also:
1315 <https://info.isl.ntt.co.jp/crypt/eng/camellia/index_s.html>
1316
Jussi Kivilinnaf3f935a2013-04-13 13:47:00 +03001317config CRYPTO_CAMELLIA_AESNI_AVX2_X86_64
1318 tristate "Camellia cipher algorithm (x86_64/AES-NI/AVX2)"
1319 depends on X86 && 64BIT
1320 depends on CRYPTO
Jussi Kivilinnaf3f935a2013-04-13 13:47:00 +03001321 select CRYPTO_CAMELLIA_AESNI_AVX_X86_64
Jussi Kivilinnaf3f935a2013-04-13 13:47:00 +03001322 help
1323 Camellia cipher algorithm module (x86_64/AES-NI/AVX2).
1324
1325 Camellia is a symmetric key block cipher developed jointly
1326 at NTT and Mitsubishi Electric Corporation.
1327
1328 The Camellia specifies three key sizes: 128, 192 and 256 bits.
1329
1330 See also:
1331 <https://info.isl.ntt.co.jp/crypt/eng/camellia/index_s.html>
1332
David S. Miller81658ad2012-08-28 12:05:54 -07001333config CRYPTO_CAMELLIA_SPARC64
1334 tristate "Camellia cipher algorithm (SPARC64)"
1335 depends on SPARC64
1336 depends on CRYPTO
1337 select CRYPTO_ALGAPI
1338 help
1339 Camellia cipher algorithm module (SPARC64).
1340
1341 Camellia is a symmetric key block cipher developed jointly
1342 at NTT and Mitsubishi Electric Corporation.
1343
1344 The Camellia specifies three key sizes: 128, 192 and 256 bits.
1345
1346 See also:
1347 <https://info.isl.ntt.co.jp/crypt/eng/camellia/index_s.html>
1348
Jussi Kivilinna044ab522012-11-13 11:43:14 +02001349config CRYPTO_CAST_COMMON
1350 tristate
1351 help
1352 Common parts of the CAST cipher algorithms shared by the
1353 generic c and the assembler implementations.
1354
Linus Torvalds1da177e2005-04-16 15:20:36 -07001355config CRYPTO_CAST5
1356 tristate "CAST5 (CAST-128) cipher algorithm"
Herbert Xucce9e062006-08-21 21:08:13 +10001357 select CRYPTO_ALGAPI
Jussi Kivilinna044ab522012-11-13 11:43:14 +02001358 select CRYPTO_CAST_COMMON
Linus Torvalds1da177e2005-04-16 15:20:36 -07001359 help
1360 The CAST5 encryption algorithm (synonymous with CAST-128) is
1361 described in RFC2144.
1362
Johannes Goetzfried4d6d6a22012-07-11 19:37:37 +02001363config CRYPTO_CAST5_AVX_X86_64
1364 tristate "CAST5 (CAST-128) cipher algorithm (x86_64/AVX)"
1365 depends on X86 && 64BIT
Eric Biggers1e631832018-02-19 23:48:13 -08001366 select CRYPTO_BLKCIPHER
Johannes Goetzfried4d6d6a22012-07-11 19:37:37 +02001367 select CRYPTO_CAST5
Eric Biggers1e631832018-02-19 23:48:13 -08001368 select CRYPTO_CAST_COMMON
1369 select CRYPTO_SIMD
Johannes Goetzfried4d6d6a22012-07-11 19:37:37 +02001370 help
1371 The CAST5 encryption algorithm (synonymous with CAST-128) is
1372 described in RFC2144.
1373
1374 This module provides the Cast5 cipher algorithm that processes
1375 sixteen blocks parallel using the AVX instruction set.
1376
Linus Torvalds1da177e2005-04-16 15:20:36 -07001377config CRYPTO_CAST6
1378 tristate "CAST6 (CAST-256) cipher algorithm"
Herbert Xucce9e062006-08-21 21:08:13 +10001379 select CRYPTO_ALGAPI
Jussi Kivilinna044ab522012-11-13 11:43:14 +02001380 select CRYPTO_CAST_COMMON
Linus Torvalds1da177e2005-04-16 15:20:36 -07001381 help
1382 The CAST6 encryption algorithm (synonymous with CAST-256) is
1383 described in RFC2612.
1384
Johannes Goetzfried4ea12772012-07-11 19:38:57 +02001385config CRYPTO_CAST6_AVX_X86_64
1386 tristate "CAST6 (CAST-256) cipher algorithm (x86_64/AVX)"
1387 depends on X86 && 64BIT
Eric Biggers4bd96922018-02-19 23:48:15 -08001388 select CRYPTO_BLKCIPHER
Johannes Goetzfried4ea12772012-07-11 19:38:57 +02001389 select CRYPTO_CAST6
Eric Biggers4bd96922018-02-19 23:48:15 -08001390 select CRYPTO_CAST_COMMON
1391 select CRYPTO_GLUE_HELPER_X86
1392 select CRYPTO_SIMD
Johannes Goetzfried4ea12772012-07-11 19:38:57 +02001393 select CRYPTO_XTS
1394 help
1395 The CAST6 encryption algorithm (synonymous with CAST-256) is
1396 described in RFC2612.
1397
1398 This module provides the Cast6 cipher algorithm that processes
1399 eight blocks parallel using the AVX instruction set.
1400
Sebastian Siewior584fffc2008-04-05 21:04:48 +08001401config CRYPTO_DES
1402 tristate "DES and Triple DES EDE cipher algorithms"
Herbert Xucce9e062006-08-21 21:08:13 +10001403 select CRYPTO_ALGAPI
Linus Torvalds1da177e2005-04-16 15:20:36 -07001404 help
Sebastian Siewior584fffc2008-04-05 21:04:48 +08001405 DES cipher algorithm (FIPS 46-2), and Triple DES EDE (FIPS 46-3).
Linus Torvalds1da177e2005-04-16 15:20:36 -07001406
David S. Millerc5aac2d2012-08-25 22:37:23 -07001407config CRYPTO_DES_SPARC64
1408 tristate "DES and Triple DES EDE cipher algorithms (SPARC64)"
Dave Jones97da37b2012-10-02 17:13:20 -04001409 depends on SPARC64
David S. Millerc5aac2d2012-08-25 22:37:23 -07001410 select CRYPTO_ALGAPI
1411 select CRYPTO_DES
1412 help
1413 DES cipher algorithm (FIPS 46-2), and Triple DES EDE (FIPS 46-3),
1414 optimized using SPARC64 crypto opcodes.
1415
Jussi Kivilinna6574e6c2014-06-09 20:59:54 +03001416config CRYPTO_DES3_EDE_X86_64
1417 tristate "Triple DES EDE cipher algorithm (x86-64)"
1418 depends on X86 && 64BIT
Eric Biggers09c0f032018-02-19 23:48:17 -08001419 select CRYPTO_BLKCIPHER
Jussi Kivilinna6574e6c2014-06-09 20:59:54 +03001420 select CRYPTO_DES
1421 help
1422 Triple DES EDE (FIPS 46-3) algorithm.
1423
1424 This module provides implementation of the Triple DES EDE cipher
1425 algorithm that is optimized for x86-64 processors. Two versions of
1426 algorithm are provided; regular processing one input block and
1427 one that processes three blocks parallel.
1428
Sebastian Siewior584fffc2008-04-05 21:04:48 +08001429config CRYPTO_FCRYPT
1430 tristate "FCrypt cipher algorithm"
Herbert Xucce9e062006-08-21 21:08:13 +10001431 select CRYPTO_ALGAPI
Sebastian Siewior584fffc2008-04-05 21:04:48 +08001432 select CRYPTO_BLKCIPHER
Linus Torvalds1da177e2005-04-16 15:20:36 -07001433 help
Sebastian Siewior584fffc2008-04-05 21:04:48 +08001434 FCrypt algorithm used by RxRPC.
Linus Torvalds1da177e2005-04-16 15:20:36 -07001435
1436config CRYPTO_KHAZAD
1437 tristate "Khazad cipher algorithm"
Herbert Xucce9e062006-08-21 21:08:13 +10001438 select CRYPTO_ALGAPI
Linus Torvalds1da177e2005-04-16 15:20:36 -07001439 help
1440 Khazad cipher algorithm.
1441
1442 Khazad was a finalist in the initial NESSIE competition. It is
1443 an algorithm optimized for 64-bit processors with good performance
1444 on 32-bit processors. Khazad uses an 128 bit key size.
1445
1446 See also:
Justin P. Mattock6d8de742010-09-12 10:42:47 +08001447 <http://www.larc.usp.br/~pbarreto/KhazadPage.html>
Linus Torvalds1da177e2005-04-16 15:20:36 -07001448
Tan Swee Heng2407d602007-11-23 19:45:00 +08001449config CRYPTO_SALSA20
Kees Cook3b4afaf2012-10-02 11:16:49 -07001450 tristate "Salsa20 stream cipher algorithm"
Tan Swee Heng2407d602007-11-23 19:45:00 +08001451 select CRYPTO_BLKCIPHER
1452 help
1453 Salsa20 stream cipher algorithm.
1454
1455 Salsa20 is a stream cipher submitted to eSTREAM, the ECRYPT
1456 Stream Cipher Project. See <http://www.ecrypt.eu.org/stream/>
1457
1458 The Salsa20 stream cipher algorithm is designed by Daniel J.
1459 Bernstein <djb@cr.yp.to>. See <http://cr.yp.to/snuffle.html>
Linus Torvalds1da177e2005-04-16 15:20:36 -07001460
Martin Willic08d0e62015-06-01 13:43:56 +02001461config CRYPTO_CHACHA20
Eric Biggersaa762402018-11-16 17:26:22 -08001462 tristate "ChaCha stream cipher algorithms"
Martin Willic08d0e62015-06-01 13:43:56 +02001463 select CRYPTO_BLKCIPHER
1464 help
Eric Biggersaa762402018-11-16 17:26:22 -08001465 The ChaCha20, XChaCha20, and XChaCha12 stream cipher algorithms.
Martin Willic08d0e62015-06-01 13:43:56 +02001466
1467 ChaCha20 is a 256-bit high-speed stream cipher designed by Daniel J.
1468 Bernstein and further specified in RFC7539 for use in IETF protocols.
Eric Biggersde61d7a2018-11-16 17:26:20 -08001469 This is the portable C implementation of ChaCha20. See also:
Martin Willic08d0e62015-06-01 13:43:56 +02001470 <http://cr.yp.to/chacha/chacha-20080128.pdf>
1471
Eric Biggersde61d7a2018-11-16 17:26:20 -08001472 XChaCha20 is the application of the XSalsa20 construction to ChaCha20
1473 rather than to Salsa20. XChaCha20 extends ChaCha20's nonce length
1474 from 64 bits (or 96 bits using the RFC7539 convention) to 192 bits,
1475 while provably retaining ChaCha20's security. See also:
1476 <https://cr.yp.to/snuffle/xsalsa-20081128.pdf>
1477
Eric Biggersaa762402018-11-16 17:26:22 -08001478 XChaCha12 is XChaCha20 reduced to 12 rounds, with correspondingly
1479 reduced security margin but increased performance. It can be needed
1480 in some performance-sensitive scenarios.
1481
Martin Willic9320b62015-07-16 19:14:01 +02001482config CRYPTO_CHACHA20_X86_64
Eric Biggers4af78262018-12-04 22:20:02 -08001483 tristate "ChaCha stream cipher algorithms (x86_64/SSSE3/AVX2/AVX-512VL)"
Martin Willic9320b62015-07-16 19:14:01 +02001484 depends on X86 && 64BIT
1485 select CRYPTO_BLKCIPHER
1486 select CRYPTO_CHACHA20
1487 help
Eric Biggers7a507d62018-12-04 22:20:04 -08001488 SSSE3, AVX2, and AVX-512VL optimized implementations of the ChaCha20,
1489 XChaCha20, and XChaCha12 stream ciphers.
Martin Willic9320b62015-07-16 19:14:01 +02001490
Sebastian Siewior584fffc2008-04-05 21:04:48 +08001491config CRYPTO_SEED
1492 tristate "SEED cipher algorithm"
1493 select CRYPTO_ALGAPI
1494 help
1495 SEED cipher algorithm (RFC4269).
1496
1497 SEED is a 128-bit symmetric key block cipher that has been
1498 developed by KISA (Korea Information Security Agency) as a
1499 national standard encryption algorithm of the Republic of Korea.
1500 It is a 16 round block cipher with the key size of 128 bit.
1501
1502 See also:
1503 <http://www.kisa.or.kr/kisa/seed/jsp/seed_eng.jsp>
1504
1505config CRYPTO_SERPENT
1506 tristate "Serpent cipher algorithm"
1507 select CRYPTO_ALGAPI
1508 help
1509 Serpent cipher algorithm, by Anderson, Biham & Knudsen.
1510
1511 Keys are allowed to be from 0 to 256 bits in length, in steps
1512 of 8 bits. Also includes the 'Tnepres' algorithm, a reversed
1513 variant of Serpent for compatibility with old kerneli.org code.
1514
1515 See also:
1516 <http://www.cl.cam.ac.uk/~rja14/serpent.html>
1517
Jussi Kivilinna937c30d2011-11-09 16:26:25 +02001518config CRYPTO_SERPENT_SSE2_X86_64
1519 tristate "Serpent cipher algorithm (x86_64/SSE2)"
1520 depends on X86 && 64BIT
Eric Biggerse0f409d2018-02-19 23:48:03 -08001521 select CRYPTO_BLKCIPHER
Jussi Kivilinna596d8752012-06-18 14:07:19 +03001522 select CRYPTO_GLUE_HELPER_X86
Jussi Kivilinna937c30d2011-11-09 16:26:25 +02001523 select CRYPTO_SERPENT
Eric Biggerse0f409d2018-02-19 23:48:03 -08001524 select CRYPTO_SIMD
Jussi Kivilinna937c30d2011-11-09 16:26:25 +02001525 help
1526 Serpent cipher algorithm, by Anderson, Biham & Knudsen.
1527
1528 Keys are allowed to be from 0 to 256 bits in length, in steps
1529 of 8 bits.
1530
Masanari Iida1e6232f2015-04-04 00:20:30 +09001531 This module provides Serpent cipher algorithm that processes eight
Jussi Kivilinna937c30d2011-11-09 16:26:25 +02001532 blocks parallel using SSE2 instruction set.
1533
1534 See also:
1535 <http://www.cl.cam.ac.uk/~rja14/serpent.html>
1536
Jussi Kivilinna251496d2011-11-09 16:26:31 +02001537config CRYPTO_SERPENT_SSE2_586
1538 tristate "Serpent cipher algorithm (i586/SSE2)"
1539 depends on X86 && !64BIT
Eric Biggerse0f409d2018-02-19 23:48:03 -08001540 select CRYPTO_BLKCIPHER
Jussi Kivilinna596d8752012-06-18 14:07:19 +03001541 select CRYPTO_GLUE_HELPER_X86
Jussi Kivilinna251496d2011-11-09 16:26:31 +02001542 select CRYPTO_SERPENT
Eric Biggerse0f409d2018-02-19 23:48:03 -08001543 select CRYPTO_SIMD
Jussi Kivilinna251496d2011-11-09 16:26:31 +02001544 help
1545 Serpent cipher algorithm, by Anderson, Biham & Knudsen.
1546
1547 Keys are allowed to be from 0 to 256 bits in length, in steps
1548 of 8 bits.
1549
1550 This module provides Serpent cipher algorithm that processes four
1551 blocks parallel using SSE2 instruction set.
1552
1553 See also:
1554 <http://www.cl.cam.ac.uk/~rja14/serpent.html>
1555
Johannes Goetzfried7efe4072012-06-12 16:47:43 +08001556config CRYPTO_SERPENT_AVX_X86_64
1557 tristate "Serpent cipher algorithm (x86_64/AVX)"
1558 depends on X86 && 64BIT
Eric Biggerse16bf972018-02-19 23:48:06 -08001559 select CRYPTO_BLKCIPHER
Jussi Kivilinna1d0debb2012-06-18 14:07:24 +03001560 select CRYPTO_GLUE_HELPER_X86
Johannes Goetzfried7efe4072012-06-12 16:47:43 +08001561 select CRYPTO_SERPENT
Eric Biggerse16bf972018-02-19 23:48:06 -08001562 select CRYPTO_SIMD
Johannes Goetzfried7efe4072012-06-12 16:47:43 +08001563 select CRYPTO_XTS
1564 help
1565 Serpent cipher algorithm, by Anderson, Biham & Knudsen.
1566
1567 Keys are allowed to be from 0 to 256 bits in length, in steps
1568 of 8 bits.
1569
1570 This module provides the Serpent cipher algorithm that processes
1571 eight blocks parallel using the AVX instruction set.
1572
1573 See also:
1574 <http://www.cl.cam.ac.uk/~rja14/serpent.html>
1575
Jussi Kivilinna56d76c92013-04-13 13:46:55 +03001576config CRYPTO_SERPENT_AVX2_X86_64
1577 tristate "Serpent cipher algorithm (x86_64/AVX2)"
1578 depends on X86 && 64BIT
Jussi Kivilinna56d76c92013-04-13 13:46:55 +03001579 select CRYPTO_SERPENT_AVX_X86_64
Jussi Kivilinna56d76c92013-04-13 13:46:55 +03001580 help
1581 Serpent cipher algorithm, by Anderson, Biham & Knudsen.
1582
1583 Keys are allowed to be from 0 to 256 bits in length, in steps
1584 of 8 bits.
1585
1586 This module provides Serpent cipher algorithm that processes 16
1587 blocks parallel using AVX2 instruction set.
1588
1589 See also:
1590 <http://www.cl.cam.ac.uk/~rja14/serpent.html>
1591
Gilad Ben-Yossef747c8ce2018-03-06 09:44:42 +00001592config CRYPTO_SM4
1593 tristate "SM4 cipher algorithm"
1594 select CRYPTO_ALGAPI
1595 help
1596 SM4 cipher algorithms (OSCCA GB/T 32907-2016).
1597
1598 SM4 (GBT.32907-2016) is a cryptographic standard issued by the
1599 Organization of State Commercial Administration of China (OSCCA)
1600 as an authorized cryptographic algorithms for the use within China.
1601
1602 SMS4 was originally created for use in protecting wireless
1603 networks, and is mandated in the Chinese National Standard for
1604 Wireless LAN WAPI (Wired Authentication and Privacy Infrastructure)
1605 (GB.15629.11-2003).
1606
1607 The latest SM4 standard (GBT.32907-2016) was proposed by OSCCA and
1608 standardized through TC 260 of the Standardization Administration
1609 of the People's Republic of China (SAC).
1610
1611 The input, output, and key of SMS4 are each 128 bits.
1612
1613 See also: <https://eprint.iacr.org/2008/329.pdf>
1614
1615 If unsure, say N.
1616
Sebastian Siewior584fffc2008-04-05 21:04:48 +08001617config CRYPTO_TEA
1618 tristate "TEA, XTEA and XETA cipher algorithms"
1619 select CRYPTO_ALGAPI
1620 help
1621 TEA cipher algorithm.
1622
1623 Tiny Encryption Algorithm is a simple cipher that uses
1624 many rounds for security. It is very fast and uses
1625 little memory.
1626
1627 Xtendend Tiny Encryption Algorithm is a modification to
1628 the TEA algorithm to address a potential key weakness
1629 in the TEA algorithm.
1630
1631 Xtendend Encryption Tiny Algorithm is a mis-implementation
1632 of the XTEA algorithm for compatibility purposes.
1633
1634config CRYPTO_TWOFISH
1635 tristate "Twofish cipher algorithm"
1636 select CRYPTO_ALGAPI
1637 select CRYPTO_TWOFISH_COMMON
1638 help
1639 Twofish cipher algorithm.
1640
1641 Twofish was submitted as an AES (Advanced Encryption Standard)
1642 candidate cipher by researchers at CounterPane Systems. It is a
1643 16 round block cipher supporting key sizes of 128, 192, and 256
1644 bits.
1645
1646 See also:
1647 <http://www.schneier.com/twofish.html>
1648
1649config CRYPTO_TWOFISH_COMMON
1650 tristate
1651 help
1652 Common parts of the Twofish cipher algorithm shared by the
1653 generic c and the assembler implementations.
1654
1655config CRYPTO_TWOFISH_586
1656 tristate "Twofish cipher algorithms (i586)"
1657 depends on (X86 || UML_X86) && !64BIT
1658 select CRYPTO_ALGAPI
1659 select CRYPTO_TWOFISH_COMMON
1660 help
1661 Twofish cipher algorithm.
1662
1663 Twofish was submitted as an AES (Advanced Encryption Standard)
1664 candidate cipher by researchers at CounterPane Systems. It is a
1665 16 round block cipher supporting key sizes of 128, 192, and 256
1666 bits.
1667
1668 See also:
1669 <http://www.schneier.com/twofish.html>
1670
1671config CRYPTO_TWOFISH_X86_64
1672 tristate "Twofish cipher algorithm (x86_64)"
1673 depends on (X86 || UML_X86) && 64BIT
1674 select CRYPTO_ALGAPI
1675 select CRYPTO_TWOFISH_COMMON
1676 help
1677 Twofish cipher algorithm (x86_64).
1678
1679 Twofish was submitted as an AES (Advanced Encryption Standard)
1680 candidate cipher by researchers at CounterPane Systems. It is a
1681 16 round block cipher supporting key sizes of 128, 192, and 256
1682 bits.
1683
1684 See also:
1685 <http://www.schneier.com/twofish.html>
1686
Jussi Kivilinna8280daa2011-09-26 16:47:25 +03001687config CRYPTO_TWOFISH_X86_64_3WAY
1688 tristate "Twofish cipher algorithm (x86_64, 3-way parallel)"
Al Virof21a7c12012-04-08 20:31:22 -04001689 depends on X86 && 64BIT
Eric Biggers37992fa2018-02-19 23:48:09 -08001690 select CRYPTO_BLKCIPHER
Jussi Kivilinna8280daa2011-09-26 16:47:25 +03001691 select CRYPTO_TWOFISH_COMMON
1692 select CRYPTO_TWOFISH_X86_64
Jussi Kivilinna414cb5e2012-06-18 14:07:34 +03001693 select CRYPTO_GLUE_HELPER_X86
Jussi Kivilinna8280daa2011-09-26 16:47:25 +03001694 help
1695 Twofish cipher algorithm (x86_64, 3-way parallel).
1696
1697 Twofish was submitted as an AES (Advanced Encryption Standard)
1698 candidate cipher by researchers at CounterPane Systems. It is a
1699 16 round block cipher supporting key sizes of 128, 192, and 256
1700 bits.
1701
1702 This module provides Twofish cipher algorithm that processes three
1703 blocks parallel, utilizing resources of out-of-order CPUs better.
1704
1705 See also:
1706 <http://www.schneier.com/twofish.html>
1707
Johannes Goetzfried107778b52012-05-28 15:54:24 +02001708config CRYPTO_TWOFISH_AVX_X86_64
1709 tristate "Twofish cipher algorithm (x86_64/AVX)"
1710 depends on X86 && 64BIT
Eric Biggers0e6ab462018-02-19 23:48:11 -08001711 select CRYPTO_BLKCIPHER
Jussi Kivilinnaa7378d42012-06-18 14:07:39 +03001712 select CRYPTO_GLUE_HELPER_X86
Eric Biggers0e6ab462018-02-19 23:48:11 -08001713 select CRYPTO_SIMD
Johannes Goetzfried107778b52012-05-28 15:54:24 +02001714 select CRYPTO_TWOFISH_COMMON
1715 select CRYPTO_TWOFISH_X86_64
1716 select CRYPTO_TWOFISH_X86_64_3WAY
Johannes Goetzfried107778b52012-05-28 15:54:24 +02001717 help
1718 Twofish cipher algorithm (x86_64/AVX).
1719
1720 Twofish was submitted as an AES (Advanced Encryption Standard)
1721 candidate cipher by researchers at CounterPane Systems. It is a
1722 16 round block cipher supporting key sizes of 128, 192, and 256
1723 bits.
1724
1725 This module provides the Twofish cipher algorithm that processes
1726 eight blocks parallel using the AVX Instruction Set.
1727
1728 See also:
1729 <http://www.schneier.com/twofish.html>
1730
Sebastian Siewior584fffc2008-04-05 21:04:48 +08001731comment "Compression"
1732
Linus Torvalds1da177e2005-04-16 15:20:36 -07001733config CRYPTO_DEFLATE
1734 tristate "Deflate compression algorithm"
Herbert Xucce9e062006-08-21 21:08:13 +10001735 select CRYPTO_ALGAPI
Giovanni Cabidduf6ded092016-10-21 13:19:53 +01001736 select CRYPTO_ACOMP2
Linus Torvalds1da177e2005-04-16 15:20:36 -07001737 select ZLIB_INFLATE
1738 select ZLIB_DEFLATE
1739 help
1740 This is the Deflate algorithm (RFC1951), specified for use in
1741 IPSec with the IPCOMP protocol (RFC3173, RFC2394).
Sebastian Siewior584fffc2008-04-05 21:04:48 +08001742
Linus Torvalds1da177e2005-04-16 15:20:36 -07001743 You will most probably want this if using IPSec.
1744
Zoltan Sogor0b77abb2007-12-07 16:53:23 +08001745config CRYPTO_LZO
1746 tristate "LZO compression algorithm"
1747 select CRYPTO_ALGAPI
Giovanni Cabidduac9d2c42016-10-21 13:19:49 +01001748 select CRYPTO_ACOMP2
Zoltan Sogor0b77abb2007-12-07 16:53:23 +08001749 select LZO_COMPRESS
1750 select LZO_DECOMPRESS
1751 help
1752 This is the LZO algorithm.
1753
Seth Jennings35a1fc12012-07-19 09:42:41 -05001754config CRYPTO_842
1755 tristate "842 compression algorithm"
Dan Streetman2062c5b2015-05-07 13:49:15 -04001756 select CRYPTO_ALGAPI
Giovanni Cabiddu6a8de3a2016-10-21 13:19:52 +01001757 select CRYPTO_ACOMP2
Dan Streetman2062c5b2015-05-07 13:49:15 -04001758 select 842_COMPRESS
1759 select 842_DECOMPRESS
Seth Jennings35a1fc12012-07-19 09:42:41 -05001760 help
1761 This is the 842 algorithm.
1762
Chanho Min0ea85302013-07-08 16:01:51 -07001763config CRYPTO_LZ4
1764 tristate "LZ4 compression algorithm"
1765 select CRYPTO_ALGAPI
Giovanni Cabiddu8cd93302016-10-21 13:19:50 +01001766 select CRYPTO_ACOMP2
Chanho Min0ea85302013-07-08 16:01:51 -07001767 select LZ4_COMPRESS
1768 select LZ4_DECOMPRESS
1769 help
1770 This is the LZ4 algorithm.
1771
1772config CRYPTO_LZ4HC
1773 tristate "LZ4HC compression algorithm"
1774 select CRYPTO_ALGAPI
Giovanni Cabiddu91d53d92016-10-21 13:19:51 +01001775 select CRYPTO_ACOMP2
Chanho Min0ea85302013-07-08 16:01:51 -07001776 select LZ4HC_COMPRESS
1777 select LZ4_DECOMPRESS
1778 help
1779 This is the LZ4 high compression mode algorithm.
1780
Nick Terrelld28fc3d2018-03-30 12:14:53 -07001781config CRYPTO_ZSTD
1782 tristate "Zstd compression algorithm"
1783 select CRYPTO_ALGAPI
1784 select CRYPTO_ACOMP2
1785 select ZSTD_COMPRESS
1786 select ZSTD_DECOMPRESS
1787 help
1788 This is the zstd algorithm.
1789
Neil Horman17f0f4a2008-08-14 22:15:52 +10001790comment "Random Number Generation"
1791
1792config CRYPTO_ANSI_CPRNG
1793 tristate "Pseudo Random Number Generation for Cryptographic modules"
1794 select CRYPTO_AES
1795 select CRYPTO_RNG
Neil Horman17f0f4a2008-08-14 22:15:52 +10001796 help
1797 This option enables the generic pseudo random number generator
1798 for cryptographic modules. Uses the Algorithm specified in
Jiri Kosina7dd607e2010-01-27 01:00:10 +01001799 ANSI X9.31 A.2.4. Note that this option must be enabled if
1800 CRYPTO_FIPS is selected
Neil Horman17f0f4a2008-08-14 22:15:52 +10001801
Herbert Xuf2c89a12014-07-04 22:15:08 +08001802menuconfig CRYPTO_DRBG_MENU
Stephan Mueller419090c2014-05-31 17:22:31 +02001803 tristate "NIST SP800-90A DRBG"
Stephan Mueller419090c2014-05-31 17:22:31 +02001804 help
1805 NIST SP800-90A compliant DRBG. In the following submenu, one or
1806 more of the DRBG types must be selected.
1807
Herbert Xuf2c89a12014-07-04 22:15:08 +08001808if CRYPTO_DRBG_MENU
Stephan Mueller419090c2014-05-31 17:22:31 +02001809
1810config CRYPTO_DRBG_HMAC
Herbert Xu401e4232015-06-03 14:49:31 +08001811 bool
Stephan Mueller419090c2014-05-31 17:22:31 +02001812 default y
Stephan Mueller419090c2014-05-31 17:22:31 +02001813 select CRYPTO_HMAC
Herbert Xu826775b2015-06-11 08:55:10 +08001814 select CRYPTO_SHA256
Stephan Mueller419090c2014-05-31 17:22:31 +02001815
1816config CRYPTO_DRBG_HASH
1817 bool "Enable Hash DRBG"
Herbert Xu826775b2015-06-11 08:55:10 +08001818 select CRYPTO_SHA256
Stephan Mueller419090c2014-05-31 17:22:31 +02001819 help
1820 Enable the Hash DRBG variant as defined in NIST SP800-90A.
1821
1822config CRYPTO_DRBG_CTR
1823 bool "Enable CTR DRBG"
Stephan Mueller419090c2014-05-31 17:22:31 +02001824 select CRYPTO_AES
Stephan Mueller35591282016-06-14 07:34:13 +02001825 depends on CRYPTO_CTR
Stephan Mueller419090c2014-05-31 17:22:31 +02001826 help
1827 Enable the CTR DRBG variant as defined in NIST SP800-90A.
1828
Herbert Xuf2c89a12014-07-04 22:15:08 +08001829config CRYPTO_DRBG
1830 tristate
Herbert Xu401e4232015-06-03 14:49:31 +08001831 default CRYPTO_DRBG_MENU
Herbert Xuf2c89a12014-07-04 22:15:08 +08001832 select CRYPTO_RNG
Stephan Muellerbb5530e2015-05-25 15:10:20 +02001833 select CRYPTO_JITTERENTROPY
Herbert Xuf2c89a12014-07-04 22:15:08 +08001834
1835endif # if CRYPTO_DRBG_MENU
Stephan Mueller419090c2014-05-31 17:22:31 +02001836
Stephan Muellerbb5530e2015-05-25 15:10:20 +02001837config CRYPTO_JITTERENTROPY
1838 tristate "Jitterentropy Non-Deterministic Random Number Generator"
Arnd Bergmann2f313e02016-01-26 14:47:10 +01001839 select CRYPTO_RNG
Stephan Muellerbb5530e2015-05-25 15:10:20 +02001840 help
1841 The Jitterentropy RNG is a noise that is intended
1842 to provide seed to another RNG. The RNG does not
1843 perform any cryptographic whitening of the generated
1844 random numbers. This Jitterentropy RNG registers with
1845 the kernel crypto API and can be used by any caller.
1846
Herbert Xu03c8efc2010-10-19 21:12:39 +08001847config CRYPTO_USER_API
1848 tristate
1849
Herbert Xufe869cd2010-10-19 21:23:00 +08001850config CRYPTO_USER_API_HASH
1851 tristate "User-space interface for hash algorithms"
Herbert Xu74517082010-11-29 22:56:03 +08001852 depends on NET
Herbert Xufe869cd2010-10-19 21:23:00 +08001853 select CRYPTO_HASH
1854 select CRYPTO_USER_API
1855 help
1856 This option enables the user-spaces interface for hash
1857 algorithms.
1858
Herbert Xu8ff59092010-10-19 21:31:55 +08001859config CRYPTO_USER_API_SKCIPHER
1860 tristate "User-space interface for symmetric key cipher algorithms"
Herbert Xu74517082010-11-29 22:56:03 +08001861 depends on NET
Herbert Xu8ff59092010-10-19 21:31:55 +08001862 select CRYPTO_BLKCIPHER
1863 select CRYPTO_USER_API
1864 help
1865 This option enables the user-spaces interface for symmetric
1866 key cipher algorithms.
1867
Stephan Mueller2f3755382014-12-25 23:00:39 +01001868config CRYPTO_USER_API_RNG
1869 tristate "User-space interface for random number generator algorithms"
1870 depends on NET
1871 select CRYPTO_RNG
1872 select CRYPTO_USER_API
1873 help
1874 This option enables the user-spaces interface for random
1875 number generator algorithms.
1876
Herbert Xub64a2d92015-05-28 11:30:35 +08001877config CRYPTO_USER_API_AEAD
1878 tristate "User-space interface for AEAD cipher algorithms"
1879 depends on NET
1880 select CRYPTO_AEAD
Stephan Mueller72548b02017-07-30 14:32:58 +02001881 select CRYPTO_BLKCIPHER
1882 select CRYPTO_NULL
Herbert Xub64a2d92015-05-28 11:30:35 +08001883 select CRYPTO_USER_API
1884 help
1885 This option enables the user-spaces interface for AEAD
1886 cipher algorithms.
1887
Corentin Labbecac58182018-09-19 10:10:54 +00001888config CRYPTO_STATS
1889 bool "Crypto usage statistics for User-space"
Corentin Labbea6a31382018-11-29 14:42:17 +00001890 depends on CRYPTO_USER
Corentin Labbecac58182018-09-19 10:10:54 +00001891 help
1892 This option enables the gathering of crypto stats.
1893 This will collect:
1894 - encrypt/decrypt size and numbers of symmeric operations
1895 - compress/decompress size and numbers of compress operations
1896 - size and numbers of hash operations
1897 - encrypt/decrypt/sign/verify numbers for asymmetric operations
1898 - generate/seed numbers for rng operations
1899
Dmitry Kasatkinee089972013-05-06 15:40:01 +03001900config CRYPTO_HASH_INFO
1901 bool
1902
Linus Torvalds1da177e2005-04-16 15:20:36 -07001903source "drivers/crypto/Kconfig"
Masahiro Yamada8636a1f2018-12-11 20:01:04 +09001904source "crypto/asymmetric_keys/Kconfig"
1905source "certs/Kconfig"
Linus Torvalds1da177e2005-04-16 15:20:36 -07001906
Herbert Xucce9e062006-08-21 21:08:13 +10001907endif # if CRYPTO