blob: 4a53cb98f3dfda19d4f17d224465d0dccee0746d [file] [log] [blame]
Andrew Scullb4b6d4a2019-01-02 15:54:55 +00001# SPDX-License-Identifier: GPL-2.0
2#
3# Generic algorithms support
4#
5config XOR_BLOCKS
6 tristate
7
8#
9# async_tx api: hardware offloaded memory transfer/transform support
10#
11source "crypto/async_tx/Kconfig"
12
13#
14# Cryptographic API Configuration
15#
16menuconfig CRYPTO
17 tristate "Cryptographic API"
Olivier Deprez92d4c212022-12-06 15:05:30 +010018 select LIB_MEMNEQ
Andrew Scullb4b6d4a2019-01-02 15:54:55 +000019 help
20 This option provides the core Cryptographic API.
21
22if CRYPTO
23
24comment "Crypto core or helper"
25
26config CRYPTO_FIPS
27 bool "FIPS 200 compliance"
28 depends on (CRYPTO_ANSI_CPRNG || CRYPTO_DRBG) && !CRYPTO_MANAGER_DISABLE_TESTS
29 depends on (MODULE_SIG || !MODULES)
30 help
David Brazdil0f672f62019-12-10 10:32:29 +000031 This option enables the fips boot option which is
32 required if you want the system to operate in a FIPS 200
Andrew Scullb4b6d4a2019-01-02 15:54:55 +000033 certification. You should say no unless you know what
34 this is.
35
36config CRYPTO_ALGAPI
37 tristate
38 select CRYPTO_ALGAPI2
39 help
40 This option provides the API for cryptographic algorithms.
41
42config CRYPTO_ALGAPI2
43 tristate
44
45config CRYPTO_AEAD
46 tristate
47 select CRYPTO_AEAD2
48 select CRYPTO_ALGAPI
49
50config CRYPTO_AEAD2
51 tristate
52 select CRYPTO_ALGAPI2
53 select CRYPTO_NULL2
54 select CRYPTO_RNG2
55
Olivier Deprez157378f2022-04-04 15:47:50 +020056config CRYPTO_SKCIPHER
Andrew Scullb4b6d4a2019-01-02 15:54:55 +000057 tristate
Olivier Deprez157378f2022-04-04 15:47:50 +020058 select CRYPTO_SKCIPHER2
Andrew Scullb4b6d4a2019-01-02 15:54:55 +000059 select CRYPTO_ALGAPI
60
Olivier Deprez157378f2022-04-04 15:47:50 +020061config CRYPTO_SKCIPHER2
Andrew Scullb4b6d4a2019-01-02 15:54:55 +000062 tristate
63 select CRYPTO_ALGAPI2
64 select CRYPTO_RNG2
Andrew Scullb4b6d4a2019-01-02 15:54:55 +000065
66config CRYPTO_HASH
67 tristate
68 select CRYPTO_HASH2
69 select CRYPTO_ALGAPI
70
71config CRYPTO_HASH2
72 tristate
73 select CRYPTO_ALGAPI2
74
75config CRYPTO_RNG
76 tristate
77 select CRYPTO_RNG2
78 select CRYPTO_ALGAPI
79
80config CRYPTO_RNG2
81 tristate
82 select CRYPTO_ALGAPI2
83
84config CRYPTO_RNG_DEFAULT
85 tristate
86 select CRYPTO_DRBG_MENU
87
88config CRYPTO_AKCIPHER2
89 tristate
90 select CRYPTO_ALGAPI2
91
92config CRYPTO_AKCIPHER
93 tristate
94 select CRYPTO_AKCIPHER2
95 select CRYPTO_ALGAPI
96
97config CRYPTO_KPP2
98 tristate
99 select CRYPTO_ALGAPI2
100
101config CRYPTO_KPP
102 tristate
103 select CRYPTO_ALGAPI
104 select CRYPTO_KPP2
105
106config CRYPTO_ACOMP2
107 tristate
108 select CRYPTO_ALGAPI2
109 select SGL_ALLOC
110
111config CRYPTO_ACOMP
112 tristate
113 select CRYPTO_ALGAPI
114 select CRYPTO_ACOMP2
115
Andrew Scullb4b6d4a2019-01-02 15:54:55 +0000116config CRYPTO_MANAGER
117 tristate "Cryptographic algorithm manager"
118 select CRYPTO_MANAGER2
119 help
120 Create default cryptographic template instantiations such as
121 cbc(aes).
122
123config CRYPTO_MANAGER2
124 def_tristate CRYPTO_MANAGER || (CRYPTO_MANAGER!=n && CRYPTO_ALGAPI=y)
125 select CRYPTO_AEAD2
126 select CRYPTO_HASH2
Olivier Deprez157378f2022-04-04 15:47:50 +0200127 select CRYPTO_SKCIPHER2
Andrew Scullb4b6d4a2019-01-02 15:54:55 +0000128 select CRYPTO_AKCIPHER2
129 select CRYPTO_KPP2
130 select CRYPTO_ACOMP2
131
132config CRYPTO_USER
133 tristate "Userspace cryptographic algorithm configuration"
134 depends on NET
135 select CRYPTO_MANAGER
136 help
137 Userspace configuration for cryptographic instantiations such as
138 cbc(aes).
139
140config CRYPTO_MANAGER_DISABLE_TESTS
141 bool "Disable run-time self tests"
142 default y
Andrew Scullb4b6d4a2019-01-02 15:54:55 +0000143 help
144 Disable run-time self tests that normally take place at
145 algorithm registration.
146
David Brazdil0f672f62019-12-10 10:32:29 +0000147config CRYPTO_MANAGER_EXTRA_TESTS
148 bool "Enable extra run-time crypto self tests"
Olivier Deprez157378f2022-04-04 15:47:50 +0200149 depends on DEBUG_KERNEL && !CRYPTO_MANAGER_DISABLE_TESTS && CRYPTO_MANAGER
Andrew Scullb4b6d4a2019-01-02 15:54:55 +0000150 help
David Brazdil0f672f62019-12-10 10:32:29 +0000151 Enable extra run-time self tests of registered crypto algorithms,
152 including randomized fuzz tests.
153
154 This is intended for developer use only, as these tests take much
155 longer to run than the normal self tests.
156
David Brazdil0f672f62019-12-10 10:32:29 +0000157config CRYPTO_GF128MUL
158 tristate
Andrew Scullb4b6d4a2019-01-02 15:54:55 +0000159
160config CRYPTO_NULL
161 tristate "Null algorithms"
162 select CRYPTO_NULL2
163 help
164 These are 'Null' algorithms, used by IPsec, which do nothing.
165
166config CRYPTO_NULL2
167 tristate
168 select CRYPTO_ALGAPI2
Olivier Deprez157378f2022-04-04 15:47:50 +0200169 select CRYPTO_SKCIPHER2
Andrew Scullb4b6d4a2019-01-02 15:54:55 +0000170 select CRYPTO_HASH2
171
172config CRYPTO_PCRYPT
173 tristate "Parallel crypto engine"
174 depends on SMP
175 select PADATA
176 select CRYPTO_MANAGER
177 select CRYPTO_AEAD
178 help
179 This converts an arbitrary crypto algorithm into a parallel
180 algorithm that executes in kernel threads.
181
Andrew Scullb4b6d4a2019-01-02 15:54:55 +0000182config CRYPTO_CRYPTD
183 tristate "Software async crypto daemon"
Olivier Deprez157378f2022-04-04 15:47:50 +0200184 select CRYPTO_SKCIPHER
Andrew Scullb4b6d4a2019-01-02 15:54:55 +0000185 select CRYPTO_HASH
186 select CRYPTO_MANAGER
Andrew Scullb4b6d4a2019-01-02 15:54:55 +0000187 help
188 This is a generic software asynchronous crypto daemon that
189 converts an arbitrary synchronous software crypto algorithm
190 into an asynchronous algorithm that executes in a kernel thread.
191
Andrew Scullb4b6d4a2019-01-02 15:54:55 +0000192config CRYPTO_AUTHENC
193 tristate "Authenc support"
194 select CRYPTO_AEAD
Olivier Deprez157378f2022-04-04 15:47:50 +0200195 select CRYPTO_SKCIPHER
Andrew Scullb4b6d4a2019-01-02 15:54:55 +0000196 select CRYPTO_MANAGER
197 select CRYPTO_HASH
198 select CRYPTO_NULL
199 help
200 Authenc: Combined mode wrapper for IPsec.
201 This is required for IPSec.
202
203config CRYPTO_TEST
204 tristate "Testing module"
205 depends on m
206 select CRYPTO_MANAGER
207 help
208 Quick & dirty crypto test module.
209
210config CRYPTO_SIMD
211 tristate
212 select CRYPTO_CRYPTD
213
214config CRYPTO_GLUE_HELPER_X86
215 tristate
216 depends on X86
Olivier Deprez157378f2022-04-04 15:47:50 +0200217 select CRYPTO_SKCIPHER
Andrew Scullb4b6d4a2019-01-02 15:54:55 +0000218
219config CRYPTO_ENGINE
220 tristate
221
David Brazdil0f672f62019-12-10 10:32:29 +0000222comment "Public-key cryptography"
223
224config CRYPTO_RSA
225 tristate "RSA algorithm"
226 select CRYPTO_AKCIPHER
227 select CRYPTO_MANAGER
228 select MPILIB
229 select ASN1
230 help
231 Generic implementation of the RSA public key algorithm.
232
233config CRYPTO_DH
234 tristate "Diffie-Hellman algorithm"
235 select CRYPTO_KPP
236 select MPILIB
237 help
238 Generic implementation of the Diffie-Hellman algorithm.
239
240config CRYPTO_ECC
241 tristate
Olivier Deprez157378f2022-04-04 15:47:50 +0200242 select CRYPTO_RNG_DEFAULT
David Brazdil0f672f62019-12-10 10:32:29 +0000243
244config CRYPTO_ECDH
245 tristate "ECDH algorithm"
246 select CRYPTO_ECC
247 select CRYPTO_KPP
David Brazdil0f672f62019-12-10 10:32:29 +0000248 help
249 Generic implementation of the ECDH algorithm
250
251config CRYPTO_ECRDSA
252 tristate "EC-RDSA (GOST 34.10) algorithm"
253 select CRYPTO_ECC
254 select CRYPTO_AKCIPHER
255 select CRYPTO_STREEBOG
256 select OID_REGISTRY
257 select ASN1
258 help
259 Elliptic Curve Russian Digital Signature Algorithm (GOST R 34.10-2012,
260 RFC 7091, ISO/IEC 14888-3:2018) is one of the Russian cryptographic
261 standard algorithms (called GOST algorithms). Only signature verification
262 is implemented.
263
Olivier Deprez157378f2022-04-04 15:47:50 +0200264config CRYPTO_SM2
265 tristate "SM2 algorithm"
266 select CRYPTO_SM3
267 select CRYPTO_AKCIPHER
268 select CRYPTO_MANAGER
269 select MPILIB
270 select ASN1
271 help
272 Generic implementation of the SM2 public key algorithm. It was
273 published by State Encryption Management Bureau, China.
274 as specified by OSCCA GM/T 0003.1-2012 -- 0003.5-2012.
275
276 References:
277 https://tools.ietf.org/html/draft-shen-sm2-ecdsa-02
278 http://www.oscca.gov.cn/sca/xxgk/2010-12/17/content_1002386.shtml
279 http://www.gmbz.org.cn/main/bzlb.html
280
281config CRYPTO_CURVE25519
282 tristate "Curve25519 algorithm"
283 select CRYPTO_KPP
284 select CRYPTO_LIB_CURVE25519_GENERIC
285
286config CRYPTO_CURVE25519_X86
287 tristate "x86_64 accelerated Curve25519 scalar multiplication library"
288 depends on X86 && 64BIT
289 select CRYPTO_LIB_CURVE25519_GENERIC
290 select CRYPTO_ARCH_HAVE_LIB_CURVE25519
291
Andrew Scullb4b6d4a2019-01-02 15:54:55 +0000292comment "Authenticated Encryption with Associated Data"
293
294config CRYPTO_CCM
295 tristate "CCM support"
296 select CRYPTO_CTR
297 select CRYPTO_HASH
298 select CRYPTO_AEAD
David Brazdil0f672f62019-12-10 10:32:29 +0000299 select CRYPTO_MANAGER
Andrew Scullb4b6d4a2019-01-02 15:54:55 +0000300 help
301 Support for Counter with CBC MAC. Required for IPsec.
302
303config CRYPTO_GCM
304 tristate "GCM/GMAC support"
305 select CRYPTO_CTR
306 select CRYPTO_AEAD
307 select CRYPTO_GHASH
308 select CRYPTO_NULL
David Brazdil0f672f62019-12-10 10:32:29 +0000309 select CRYPTO_MANAGER
Andrew Scullb4b6d4a2019-01-02 15:54:55 +0000310 help
311 Support for Galois/Counter Mode (GCM) and Galois Message
312 Authentication Code (GMAC). Required for IPSec.
313
314config CRYPTO_CHACHA20POLY1305
315 tristate "ChaCha20-Poly1305 AEAD support"
316 select CRYPTO_CHACHA20
317 select CRYPTO_POLY1305
318 select CRYPTO_AEAD
David Brazdil0f672f62019-12-10 10:32:29 +0000319 select CRYPTO_MANAGER
Andrew Scullb4b6d4a2019-01-02 15:54:55 +0000320 help
321 ChaCha20-Poly1305 AEAD support, RFC7539.
322
323 Support for the AEAD wrapper using the ChaCha20 stream cipher combined
324 with the Poly1305 authenticator. It is defined in RFC7539 for use in
325 IETF protocols.
326
327config CRYPTO_AEGIS128
328 tristate "AEGIS-128 AEAD algorithm"
329 select CRYPTO_AEAD
330 select CRYPTO_AES # for AES S-box tables
331 help
332 Support for the AEGIS-128 dedicated AEAD algorithm.
333
David Brazdil0f672f62019-12-10 10:32:29 +0000334config CRYPTO_AEGIS128_SIMD
335 bool "Support SIMD acceleration for AEGIS-128"
336 depends on CRYPTO_AEGIS128 && ((ARM || ARM64) && KERNEL_MODE_NEON)
337 default y
Andrew Scullb4b6d4a2019-01-02 15:54:55 +0000338
339config CRYPTO_AEGIS128_AESNI_SSE2
340 tristate "AEGIS-128 AEAD algorithm (x86_64 AESNI+SSE2 implementation)"
341 depends on X86 && 64BIT
342 select CRYPTO_AEAD
David Brazdil0f672f62019-12-10 10:32:29 +0000343 select CRYPTO_SIMD
Andrew Scullb4b6d4a2019-01-02 15:54:55 +0000344 help
David Brazdil0f672f62019-12-10 10:32:29 +0000345 AESNI+SSE2 implementation of the AEGIS-128 dedicated AEAD algorithm.
Andrew Scullb4b6d4a2019-01-02 15:54:55 +0000346
347config CRYPTO_SEQIV
348 tristate "Sequence Number IV Generator"
349 select CRYPTO_AEAD
Olivier Deprez157378f2022-04-04 15:47:50 +0200350 select CRYPTO_SKCIPHER
Andrew Scullb4b6d4a2019-01-02 15:54:55 +0000351 select CRYPTO_NULL
352 select CRYPTO_RNG_DEFAULT
David Brazdil0f672f62019-12-10 10:32:29 +0000353 select CRYPTO_MANAGER
Andrew Scullb4b6d4a2019-01-02 15:54:55 +0000354 help
355 This IV generator generates an IV based on a sequence number by
356 xoring it with a salt. This algorithm is mainly useful for CTR
357
358config CRYPTO_ECHAINIV
359 tristate "Encrypted Chain IV Generator"
360 select CRYPTO_AEAD
361 select CRYPTO_NULL
362 select CRYPTO_RNG_DEFAULT
David Brazdil0f672f62019-12-10 10:32:29 +0000363 select CRYPTO_MANAGER
Andrew Scullb4b6d4a2019-01-02 15:54:55 +0000364 help
365 This IV generator generates an IV based on the encryption of
366 a sequence number xored with a salt. This is the default
367 algorithm for CBC.
368
369comment "Block modes"
370
371config CRYPTO_CBC
372 tristate "CBC support"
Olivier Deprez157378f2022-04-04 15:47:50 +0200373 select CRYPTO_SKCIPHER
Andrew Scullb4b6d4a2019-01-02 15:54:55 +0000374 select CRYPTO_MANAGER
375 help
376 CBC: Cipher Block Chaining mode
377 This block cipher algorithm is required for IPSec.
378
379config CRYPTO_CFB
380 tristate "CFB support"
Olivier Deprez157378f2022-04-04 15:47:50 +0200381 select CRYPTO_SKCIPHER
Andrew Scullb4b6d4a2019-01-02 15:54:55 +0000382 select CRYPTO_MANAGER
383 help
384 CFB: Cipher FeedBack mode
385 This block cipher algorithm is required for TPM2 Cryptography.
386
387config CRYPTO_CTR
388 tristate "CTR support"
Olivier Deprez157378f2022-04-04 15:47:50 +0200389 select CRYPTO_SKCIPHER
Andrew Scullb4b6d4a2019-01-02 15:54:55 +0000390 select CRYPTO_MANAGER
391 help
392 CTR: Counter mode
393 This block cipher algorithm is required for IPSec.
394
395config CRYPTO_CTS
396 tristate "CTS support"
Olivier Deprez157378f2022-04-04 15:47:50 +0200397 select CRYPTO_SKCIPHER
David Brazdil0f672f62019-12-10 10:32:29 +0000398 select CRYPTO_MANAGER
Andrew Scullb4b6d4a2019-01-02 15:54:55 +0000399 help
400 CTS: Cipher Text Stealing
401 This is the Cipher Text Stealing mode as described by
David Brazdil0f672f62019-12-10 10:32:29 +0000402 Section 8 of rfc2040 and referenced by rfc3962
403 (rfc3962 includes errata information in its Appendix A) or
404 CBC-CS3 as defined by NIST in Sp800-38A addendum from Oct 2010.
Andrew Scullb4b6d4a2019-01-02 15:54:55 +0000405 This mode is required for Kerberos gss mechanism support
406 for AES encryption.
407
David Brazdil0f672f62019-12-10 10:32:29 +0000408 See: https://csrc.nist.gov/publications/detail/sp/800-38a/addendum/final
409
Andrew Scullb4b6d4a2019-01-02 15:54:55 +0000410config CRYPTO_ECB
411 tristate "ECB support"
Olivier Deprez157378f2022-04-04 15:47:50 +0200412 select CRYPTO_SKCIPHER
Andrew Scullb4b6d4a2019-01-02 15:54:55 +0000413 select CRYPTO_MANAGER
414 help
415 ECB: Electronic CodeBook mode
416 This is the simplest block cipher algorithm. It simply encrypts
417 the input block by block.
418
419config CRYPTO_LRW
420 tristate "LRW support"
Olivier Deprez157378f2022-04-04 15:47:50 +0200421 select CRYPTO_SKCIPHER
Andrew Scullb4b6d4a2019-01-02 15:54:55 +0000422 select CRYPTO_MANAGER
423 select CRYPTO_GF128MUL
424 help
425 LRW: Liskov Rivest Wagner, a tweakable, non malleable, non movable
426 narrow block cipher mode for dm-crypt. Use it with cipher
427 specification string aes-lrw-benbi, the key must be 256, 320 or 384.
428 The first 128, 192 or 256 bits in the key are used for AES and the
429 rest is used to tie each cipher block to its logical position.
430
David Brazdil0f672f62019-12-10 10:32:29 +0000431config CRYPTO_OFB
432 tristate "OFB support"
Olivier Deprez157378f2022-04-04 15:47:50 +0200433 select CRYPTO_SKCIPHER
David Brazdil0f672f62019-12-10 10:32:29 +0000434 select CRYPTO_MANAGER
435 help
436 OFB: the Output Feedback mode makes a block cipher into a synchronous
437 stream cipher. It generates keystream blocks, which are then XORed
438 with the plaintext blocks to get the ciphertext. Flipping a bit in the
439 ciphertext produces a flipped bit in the plaintext at the same
440 location. This property allows many error correcting codes to function
441 normally even when applied before encryption.
442
Andrew Scullb4b6d4a2019-01-02 15:54:55 +0000443config CRYPTO_PCBC
444 tristate "PCBC support"
Olivier Deprez157378f2022-04-04 15:47:50 +0200445 select CRYPTO_SKCIPHER
Andrew Scullb4b6d4a2019-01-02 15:54:55 +0000446 select CRYPTO_MANAGER
447 help
448 PCBC: Propagating Cipher Block Chaining mode
449 This block cipher algorithm is required for RxRPC.
450
451config CRYPTO_XTS
452 tristate "XTS support"
Olivier Deprez157378f2022-04-04 15:47:50 +0200453 select CRYPTO_SKCIPHER
Andrew Scullb4b6d4a2019-01-02 15:54:55 +0000454 select CRYPTO_MANAGER
455 select CRYPTO_ECB
456 help
457 XTS: IEEE1619/D16 narrow block cipher use with aes-xts-plain,
458 key size 256, 384 or 512 bits. This implementation currently
459 can't handle a sectorsize which is not a multiple of 16 bytes.
460
461config CRYPTO_KEYWRAP
462 tristate "Key wrapping support"
Olivier Deprez157378f2022-04-04 15:47:50 +0200463 select CRYPTO_SKCIPHER
David Brazdil0f672f62019-12-10 10:32:29 +0000464 select CRYPTO_MANAGER
Andrew Scullb4b6d4a2019-01-02 15:54:55 +0000465 help
466 Support for key wrapping (NIST SP800-38F / RFC3394) without
467 padding.
468
David Brazdil0f672f62019-12-10 10:32:29 +0000469config CRYPTO_NHPOLY1305
470 tristate
471 select CRYPTO_HASH
Olivier Deprez157378f2022-04-04 15:47:50 +0200472 select CRYPTO_LIB_POLY1305_GENERIC
David Brazdil0f672f62019-12-10 10:32:29 +0000473
474config CRYPTO_NHPOLY1305_SSE2
475 tristate "NHPoly1305 hash function (x86_64 SSE2 implementation)"
476 depends on X86 && 64BIT
477 select CRYPTO_NHPOLY1305
478 help
479 SSE2 optimized implementation of the hash function used by the
480 Adiantum encryption mode.
481
482config CRYPTO_NHPOLY1305_AVX2
483 tristate "NHPoly1305 hash function (x86_64 AVX2 implementation)"
484 depends on X86 && 64BIT
485 select CRYPTO_NHPOLY1305
486 help
487 AVX2 optimized implementation of the hash function used by the
488 Adiantum encryption mode.
489
490config CRYPTO_ADIANTUM
491 tristate "Adiantum support"
492 select CRYPTO_CHACHA20
Olivier Deprez157378f2022-04-04 15:47:50 +0200493 select CRYPTO_LIB_POLY1305_GENERIC
David Brazdil0f672f62019-12-10 10:32:29 +0000494 select CRYPTO_NHPOLY1305
495 select CRYPTO_MANAGER
496 help
497 Adiantum is a tweakable, length-preserving encryption mode
498 designed for fast and secure disk encryption, especially on
499 CPUs without dedicated crypto instructions. It encrypts
500 each sector using the XChaCha12 stream cipher, two passes of
501 an ε-almost-∆-universal hash function, and an invocation of
502 the AES-256 block cipher on a single 16-byte block. On CPUs
503 without AES instructions, Adiantum is much faster than
504 AES-XTS.
505
506 Adiantum's security is provably reducible to that of its
507 underlying stream and block ciphers, subject to a security
508 bound. Unlike XTS, Adiantum is a true wide-block encryption
509 mode, so it actually provides an even stronger notion of
510 security than XTS, subject to the security bound.
511
512 If unsure, say N.
513
514config CRYPTO_ESSIV
515 tristate "ESSIV support for block encryption"
516 select CRYPTO_AUTHENC
517 help
518 Encrypted salt-sector initialization vector (ESSIV) is an IV
519 generation method that is used in some cases by fscrypt and/or
520 dm-crypt. It uses the hash of the block encryption key as the
521 symmetric key for a block encryption pass applied to the input
522 IV, making low entropy IV sources more suitable for block
523 encryption.
524
525 This driver implements a crypto API template that can be
Olivier Deprez0e641232021-09-23 10:07:05 +0200526 instantiated either as an skcipher or as an AEAD (depending on the
David Brazdil0f672f62019-12-10 10:32:29 +0000527 type of the first template argument), and which defers encryption
528 and decryption requests to the encapsulated cipher after applying
Olivier Deprez0e641232021-09-23 10:07:05 +0200529 ESSIV to the input IV. Note that in the AEAD case, it is assumed
David Brazdil0f672f62019-12-10 10:32:29 +0000530 that the keys are presented in the same format used by the authenc
531 template, and that the IV appears at the end of the authenticated
532 associated data (AAD) region (which is how dm-crypt uses it.)
533
534 Note that the use of ESSIV is not recommended for new deployments,
535 and so this only needs to be enabled when interoperability with
536 existing encrypted volumes of filesystems is required, or when
537 building for a particular system that requires it (e.g., when
538 the SoC in question has accelerated CBC but not XTS, making CBC
539 combined with ESSIV the only feasible mode for h/w accelerated
540 block encryption)
541
Andrew Scullb4b6d4a2019-01-02 15:54:55 +0000542comment "Hash modes"
543
544config CRYPTO_CMAC
545 tristate "CMAC support"
546 select CRYPTO_HASH
547 select CRYPTO_MANAGER
548 help
549 Cipher-based Message Authentication Code (CMAC) specified by
550 The National Institute of Standards and Technology (NIST).
551
552 https://tools.ietf.org/html/rfc4493
553 http://csrc.nist.gov/publications/nistpubs/800-38B/SP_800-38B.pdf
554
555config CRYPTO_HMAC
556 tristate "HMAC support"
557 select CRYPTO_HASH
558 select CRYPTO_MANAGER
559 help
560 HMAC: Keyed-Hashing for Message Authentication (RFC2104).
561 This is required for IPSec.
562
563config CRYPTO_XCBC
564 tristate "XCBC support"
565 select CRYPTO_HASH
566 select CRYPTO_MANAGER
567 help
568 XCBC: Keyed-Hashing with encryption algorithm
Olivier Deprez157378f2022-04-04 15:47:50 +0200569 https://www.ietf.org/rfc/rfc3566.txt
Andrew Scullb4b6d4a2019-01-02 15:54:55 +0000570 http://csrc.nist.gov/encryption/modes/proposedmodes/
571 xcbc-mac/xcbc-mac-spec.pdf
572
573config CRYPTO_VMAC
574 tristate "VMAC support"
575 select CRYPTO_HASH
576 select CRYPTO_MANAGER
577 help
578 VMAC is a message authentication algorithm designed for
579 very high speed on 64-bit architectures.
580
581 See also:
Olivier Deprez157378f2022-04-04 15:47:50 +0200582 <https://fastcrypto.org/vmac>
Andrew Scullb4b6d4a2019-01-02 15:54:55 +0000583
584comment "Digest"
585
586config CRYPTO_CRC32C
587 tristate "CRC32c CRC algorithm"
588 select CRYPTO_HASH
589 select CRC32
590 help
591 Castagnoli, et al Cyclic Redundancy-Check Algorithm. Used
592 by iSCSI for header and data digests and by others.
593 See Castagnoli93. Module will be crc32c.
594
595config CRYPTO_CRC32C_INTEL
596 tristate "CRC32c INTEL hardware acceleration"
597 depends on X86
598 select CRYPTO_HASH
599 help
600 In Intel processor with SSE4.2 supported, the processor will
601 support CRC32C implementation using hardware accelerated CRC32
602 instruction. This option will create 'crc32c-intel' module,
603 which will enable any routine to use the CRC32 instruction to
604 gain performance compared with software implementation.
605 Module will be crc32c-intel.
606
607config CRYPTO_CRC32C_VPMSUM
608 tristate "CRC32c CRC algorithm (powerpc64)"
609 depends on PPC64 && ALTIVEC
610 select CRYPTO_HASH
611 select CRC32
612 help
613 CRC32c algorithm implemented using vector polynomial multiply-sum
614 (vpmsum) instructions, introduced in POWER8. Enable on POWER8
615 and newer processors for improved performance.
616
617
618config CRYPTO_CRC32C_SPARC64
619 tristate "CRC32c CRC algorithm (SPARC64)"
620 depends on SPARC64
621 select CRYPTO_HASH
622 select CRC32
623 help
624 CRC32c CRC algorithm implemented using sparc64 crypto instructions,
625 when available.
626
627config CRYPTO_CRC32
628 tristate "CRC32 CRC algorithm"
629 select CRYPTO_HASH
630 select CRC32
631 help
632 CRC-32-IEEE 802.3 cyclic redundancy-check algorithm.
633 Shash crypto api wrappers to crc32_le function.
634
635config CRYPTO_CRC32_PCLMUL
636 tristate "CRC32 PCLMULQDQ hardware acceleration"
637 depends on X86
638 select CRYPTO_HASH
639 select CRC32
640 help
641 From Intel Westmere and AMD Bulldozer processor with SSE4.2
642 and PCLMULQDQ supported, the processor will support
643 CRC32 PCLMULQDQ implementation using hardware accelerated PCLMULQDQ
David Brazdil0f672f62019-12-10 10:32:29 +0000644 instruction. This option will create 'crc32-pclmul' module,
Andrew Scullb4b6d4a2019-01-02 15:54:55 +0000645 which will enable any routine to use the CRC-32-IEEE 802.3 checksum
646 and gain better performance as compared with the table implementation.
647
648config CRYPTO_CRC32_MIPS
649 tristate "CRC32c and CRC32 CRC algorithm (MIPS)"
650 depends on MIPS_CRC_SUPPORT
651 select CRYPTO_HASH
652 help
653 CRC32c and CRC32 CRC algorithms implemented using mips crypto
654 instructions, when available.
655
656
David Brazdil0f672f62019-12-10 10:32:29 +0000657config CRYPTO_XXHASH
658 tristate "xxHash hash algorithm"
659 select CRYPTO_HASH
660 select XXHASH
661 help
662 xxHash non-cryptographic hash algorithm. Extremely fast, working at
663 speeds close to RAM limits.
664
Olivier Deprez157378f2022-04-04 15:47:50 +0200665config CRYPTO_BLAKE2B
666 tristate "BLAKE2b digest algorithm"
667 select CRYPTO_HASH
668 help
669 Implementation of cryptographic hash function BLAKE2b (or just BLAKE2),
670 optimized for 64bit platforms and can produce digests of any size
671 between 1 to 64. The keyed hash is also implemented.
672
673 This module provides the following algorithms:
674
675 - blake2b-160
676 - blake2b-256
677 - blake2b-384
678 - blake2b-512
679
680 See https://blake2.net for further information.
681
682config CRYPTO_BLAKE2S
683 tristate "BLAKE2s digest algorithm"
684 select CRYPTO_LIB_BLAKE2S_GENERIC
685 select CRYPTO_HASH
686 help
687 Implementation of cryptographic hash function BLAKE2s
688 optimized for 8-32bit platforms and can produce digests of any size
689 between 1 to 32. The keyed hash is also implemented.
690
691 This module provides the following algorithms:
692
693 - blake2s-128
694 - blake2s-160
695 - blake2s-224
696 - blake2s-256
697
698 See https://blake2.net for further information.
699
700config CRYPTO_BLAKE2S_X86
701 tristate "BLAKE2s digest algorithm (x86 accelerated version)"
702 depends on X86 && 64BIT
703 select CRYPTO_LIB_BLAKE2S_GENERIC
704 select CRYPTO_ARCH_HAVE_LIB_BLAKE2S
705
Andrew Scullb4b6d4a2019-01-02 15:54:55 +0000706config CRYPTO_CRCT10DIF
707 tristate "CRCT10DIF algorithm"
708 select CRYPTO_HASH
709 help
710 CRC T10 Data Integrity Field computation is being cast as
711 a crypto transform. This allows for faster crc t10 diff
712 transforms to be used if they are available.
713
714config CRYPTO_CRCT10DIF_PCLMUL
715 tristate "CRCT10DIF PCLMULQDQ hardware acceleration"
716 depends on X86 && 64BIT && CRC_T10DIF
717 select CRYPTO_HASH
718 help
719 For x86_64 processors with SSE4.2 and PCLMULQDQ supported,
720 CRC T10 DIF PCLMULQDQ computation can be hardware
721 accelerated PCLMULQDQ instruction. This option will create
David Brazdil0f672f62019-12-10 10:32:29 +0000722 'crct10dif-pclmul' module, which is faster when computing the
Andrew Scullb4b6d4a2019-01-02 15:54:55 +0000723 crct10dif checksum as compared with the generic table implementation.
724
725config CRYPTO_CRCT10DIF_VPMSUM
726 tristate "CRC32T10DIF powerpc64 hardware acceleration"
727 depends on PPC64 && ALTIVEC && CRC_T10DIF
728 select CRYPTO_HASH
729 help
730 CRC10T10DIF algorithm implemented using vector polynomial
731 multiply-sum (vpmsum) instructions, introduced in POWER8. Enable on
732 POWER8 and newer processors for improved performance.
733
734config CRYPTO_VPMSUM_TESTER
735 tristate "Powerpc64 vpmsum hardware acceleration tester"
736 depends on CRYPTO_CRCT10DIF_VPMSUM && CRYPTO_CRC32C_VPMSUM
737 help
738 Stress test for CRC32c and CRC-T10DIF algorithms implemented with
739 POWER8 vpmsum instructions.
740 Unless you are testing these algorithms, you don't need this.
741
742config CRYPTO_GHASH
David Brazdil0f672f62019-12-10 10:32:29 +0000743 tristate "GHASH hash function"
Andrew Scullb4b6d4a2019-01-02 15:54:55 +0000744 select CRYPTO_GF128MUL
745 select CRYPTO_HASH
746 help
David Brazdil0f672f62019-12-10 10:32:29 +0000747 GHASH is the hash function used in GCM (Galois/Counter Mode).
748 It is not a general-purpose cryptographic hash function.
Andrew Scullb4b6d4a2019-01-02 15:54:55 +0000749
750config CRYPTO_POLY1305
751 tristate "Poly1305 authenticator algorithm"
752 select CRYPTO_HASH
Olivier Deprez157378f2022-04-04 15:47:50 +0200753 select CRYPTO_LIB_POLY1305_GENERIC
Andrew Scullb4b6d4a2019-01-02 15:54:55 +0000754 help
755 Poly1305 authenticator algorithm, RFC7539.
756
757 Poly1305 is an authenticator algorithm designed by Daniel J. Bernstein.
758 It is used for the ChaCha20-Poly1305 AEAD, specified in RFC7539 for use
759 in IETF protocols. This is the portable C implementation of Poly1305.
760
761config CRYPTO_POLY1305_X86_64
762 tristate "Poly1305 authenticator algorithm (x86_64/SSE2/AVX2)"
763 depends on X86 && 64BIT
Olivier Deprez157378f2022-04-04 15:47:50 +0200764 select CRYPTO_LIB_POLY1305_GENERIC
765 select CRYPTO_ARCH_HAVE_LIB_POLY1305
Andrew Scullb4b6d4a2019-01-02 15:54:55 +0000766 help
767 Poly1305 authenticator algorithm, RFC7539.
768
769 Poly1305 is an authenticator algorithm designed by Daniel J. Bernstein.
770 It is used for the ChaCha20-Poly1305 AEAD, specified in RFC7539 for use
771 in IETF protocols. This is the x86_64 assembler implementation using SIMD
772 instructions.
773
Olivier Deprez157378f2022-04-04 15:47:50 +0200774config CRYPTO_POLY1305_MIPS
775 tristate "Poly1305 authenticator algorithm (MIPS optimized)"
776 depends on MIPS
777 select CRYPTO_ARCH_HAVE_LIB_POLY1305
778
Andrew Scullb4b6d4a2019-01-02 15:54:55 +0000779config CRYPTO_MD4
780 tristate "MD4 digest algorithm"
781 select CRYPTO_HASH
782 help
783 MD4 message digest algorithm (RFC1320).
784
785config CRYPTO_MD5
786 tristate "MD5 digest algorithm"
787 select CRYPTO_HASH
788 help
789 MD5 message digest algorithm (RFC1321).
790
791config CRYPTO_MD5_OCTEON
792 tristate "MD5 digest algorithm (OCTEON)"
793 depends on CPU_CAVIUM_OCTEON
794 select CRYPTO_MD5
795 select CRYPTO_HASH
796 help
797 MD5 message digest algorithm (RFC1321) implemented
798 using OCTEON crypto instructions, when available.
799
800config CRYPTO_MD5_PPC
801 tristate "MD5 digest algorithm (PPC)"
802 depends on PPC
803 select CRYPTO_HASH
804 help
805 MD5 message digest algorithm (RFC1321) implemented
806 in PPC assembler.
807
808config CRYPTO_MD5_SPARC64
809 tristate "MD5 digest algorithm (SPARC64)"
810 depends on SPARC64
811 select CRYPTO_MD5
812 select CRYPTO_HASH
813 help
814 MD5 message digest algorithm (RFC1321) implemented
815 using sparc64 crypto instructions, when available.
816
817config CRYPTO_MICHAEL_MIC
818 tristate "Michael MIC keyed digest algorithm"
819 select CRYPTO_HASH
820 help
821 Michael MIC is used for message integrity protection in TKIP
822 (IEEE 802.11i). This algorithm is required for TKIP, but it
823 should not be used for other purposes because of the weakness
824 of the algorithm.
825
826config CRYPTO_RMD128
827 tristate "RIPEMD-128 digest algorithm"
828 select CRYPTO_HASH
829 help
830 RIPEMD-128 (ISO/IEC 10118-3:2004).
831
832 RIPEMD-128 is a 128-bit cryptographic hash function. It should only
833 be used as a secure replacement for RIPEMD. For other use cases,
834 RIPEMD-160 should be used.
835
836 Developed by Hans Dobbertin, Antoon Bosselaers and Bart Preneel.
Olivier Deprez157378f2022-04-04 15:47:50 +0200837 See <https://homes.esat.kuleuven.be/~bosselae/ripemd160.html>
Andrew Scullb4b6d4a2019-01-02 15:54:55 +0000838
839config CRYPTO_RMD160
840 tristate "RIPEMD-160 digest algorithm"
841 select CRYPTO_HASH
842 help
843 RIPEMD-160 (ISO/IEC 10118-3:2004).
844
845 RIPEMD-160 is a 160-bit cryptographic hash function. It is intended
846 to be used as a secure replacement for the 128-bit hash functions
847 MD4, MD5 and it's predecessor RIPEMD
848 (not to be confused with RIPEMD-128).
849
850 It's speed is comparable to SHA1 and there are no known attacks
851 against RIPEMD-160.
852
853 Developed by Hans Dobbertin, Antoon Bosselaers and Bart Preneel.
Olivier Deprez157378f2022-04-04 15:47:50 +0200854 See <https://homes.esat.kuleuven.be/~bosselae/ripemd160.html>
Andrew Scullb4b6d4a2019-01-02 15:54:55 +0000855
856config CRYPTO_RMD256
857 tristate "RIPEMD-256 digest algorithm"
858 select CRYPTO_HASH
859 help
860 RIPEMD-256 is an optional extension of RIPEMD-128 with a
861 256 bit hash. It is intended for applications that require
862 longer hash-results, without needing a larger security level
863 (than RIPEMD-128).
864
865 Developed by Hans Dobbertin, Antoon Bosselaers and Bart Preneel.
Olivier Deprez157378f2022-04-04 15:47:50 +0200866 See <https://homes.esat.kuleuven.be/~bosselae/ripemd160.html>
Andrew Scullb4b6d4a2019-01-02 15:54:55 +0000867
868config CRYPTO_RMD320
869 tristate "RIPEMD-320 digest algorithm"
870 select CRYPTO_HASH
871 help
872 RIPEMD-320 is an optional extension of RIPEMD-160 with a
873 320 bit hash. It is intended for applications that require
874 longer hash-results, without needing a larger security level
875 (than RIPEMD-160).
876
877 Developed by Hans Dobbertin, Antoon Bosselaers and Bart Preneel.
Olivier Deprez157378f2022-04-04 15:47:50 +0200878 See <https://homes.esat.kuleuven.be/~bosselae/ripemd160.html>
Andrew Scullb4b6d4a2019-01-02 15:54:55 +0000879
880config CRYPTO_SHA1
881 tristate "SHA1 digest algorithm"
882 select CRYPTO_HASH
883 help
884 SHA-1 secure hash standard (FIPS 180-1/DFIPS 180-2).
885
886config CRYPTO_SHA1_SSSE3
887 tristate "SHA1 digest algorithm (SSSE3/AVX/AVX2/SHA-NI)"
888 depends on X86 && 64BIT
889 select CRYPTO_SHA1
890 select CRYPTO_HASH
891 help
892 SHA-1 secure hash standard (FIPS 180-1/DFIPS 180-2) implemented
893 using Supplemental SSE3 (SSSE3) instructions or Advanced Vector
894 Extensions (AVX/AVX2) or SHA-NI(SHA Extensions New Instructions),
895 when available.
896
897config CRYPTO_SHA256_SSSE3
898 tristate "SHA256 digest algorithm (SSSE3/AVX/AVX2/SHA-NI)"
899 depends on X86 && 64BIT
900 select CRYPTO_SHA256
901 select CRYPTO_HASH
902 help
903 SHA-256 secure hash standard (DFIPS 180-2) implemented
904 using Supplemental SSE3 (SSSE3) instructions, or Advanced Vector
905 Extensions version 1 (AVX1), or Advanced Vector Extensions
906 version 2 (AVX2) instructions, or SHA-NI (SHA Extensions New
907 Instructions) when available.
908
909config CRYPTO_SHA512_SSSE3
910 tristate "SHA512 digest algorithm (SSSE3/AVX/AVX2)"
911 depends on X86 && 64BIT
912 select CRYPTO_SHA512
913 select CRYPTO_HASH
914 help
915 SHA-512 secure hash standard (DFIPS 180-2) implemented
916 using Supplemental SSE3 (SSSE3) instructions, or Advanced Vector
917 Extensions version 1 (AVX1), or Advanced Vector Extensions
918 version 2 (AVX2) instructions, when available.
919
920config CRYPTO_SHA1_OCTEON
921 tristate "SHA1 digest algorithm (OCTEON)"
922 depends on CPU_CAVIUM_OCTEON
923 select CRYPTO_SHA1
924 select CRYPTO_HASH
925 help
926 SHA-1 secure hash standard (FIPS 180-1/DFIPS 180-2) implemented
927 using OCTEON crypto instructions, when available.
928
929config CRYPTO_SHA1_SPARC64
930 tristate "SHA1 digest algorithm (SPARC64)"
931 depends on SPARC64
932 select CRYPTO_SHA1
933 select CRYPTO_HASH
934 help
935 SHA-1 secure hash standard (FIPS 180-1/DFIPS 180-2) implemented
936 using sparc64 crypto instructions, when available.
937
938config CRYPTO_SHA1_PPC
939 tristate "SHA1 digest algorithm (powerpc)"
940 depends on PPC
941 help
942 This is the powerpc hardware accelerated implementation of the
943 SHA-1 secure hash standard (FIPS 180-1/DFIPS 180-2).
944
945config CRYPTO_SHA1_PPC_SPE
946 tristate "SHA1 digest algorithm (PPC SPE)"
947 depends on PPC && SPE
948 help
949 SHA-1 secure hash standard (DFIPS 180-4) implemented
950 using powerpc SPE SIMD instruction set.
951
Andrew Scullb4b6d4a2019-01-02 15:54:55 +0000952config CRYPTO_SHA256
953 tristate "SHA224 and SHA256 digest algorithm"
954 select CRYPTO_HASH
David Brazdil0f672f62019-12-10 10:32:29 +0000955 select CRYPTO_LIB_SHA256
Andrew Scullb4b6d4a2019-01-02 15:54:55 +0000956 help
957 SHA256 secure hash standard (DFIPS 180-2).
958
959 This version of SHA implements a 256 bit hash with 128 bits of
960 security against collision attacks.
961
962 This code also includes SHA-224, a 224 bit hash with 112 bits
963 of security against collision attacks.
964
965config CRYPTO_SHA256_PPC_SPE
966 tristate "SHA224 and SHA256 digest algorithm (PPC SPE)"
967 depends on PPC && SPE
968 select CRYPTO_SHA256
969 select CRYPTO_HASH
970 help
971 SHA224 and SHA256 secure hash standard (DFIPS 180-2)
972 implemented using powerpc SPE SIMD instruction set.
973
974config CRYPTO_SHA256_OCTEON
975 tristate "SHA224 and SHA256 digest algorithm (OCTEON)"
976 depends on CPU_CAVIUM_OCTEON
977 select CRYPTO_SHA256
978 select CRYPTO_HASH
979 help
980 SHA-256 secure hash standard (DFIPS 180-2) implemented
981 using OCTEON crypto instructions, when available.
982
983config CRYPTO_SHA256_SPARC64
984 tristate "SHA224 and SHA256 digest algorithm (SPARC64)"
985 depends on SPARC64
986 select CRYPTO_SHA256
987 select CRYPTO_HASH
988 help
989 SHA-256 secure hash standard (DFIPS 180-2) implemented
990 using sparc64 crypto instructions, when available.
991
992config CRYPTO_SHA512
993 tristate "SHA384 and SHA512 digest algorithms"
994 select CRYPTO_HASH
995 help
996 SHA512 secure hash standard (DFIPS 180-2).
997
998 This version of SHA implements a 512 bit hash with 256 bits of
999 security against collision attacks.
1000
1001 This code also includes SHA-384, a 384 bit hash with 192 bits
1002 of security against collision attacks.
1003
1004config CRYPTO_SHA512_OCTEON
1005 tristate "SHA384 and SHA512 digest algorithms (OCTEON)"
1006 depends on CPU_CAVIUM_OCTEON
1007 select CRYPTO_SHA512
1008 select CRYPTO_HASH
1009 help
1010 SHA-512 secure hash standard (DFIPS 180-2) implemented
1011 using OCTEON crypto instructions, when available.
1012
1013config CRYPTO_SHA512_SPARC64
1014 tristate "SHA384 and SHA512 digest algorithm (SPARC64)"
1015 depends on SPARC64
1016 select CRYPTO_SHA512
1017 select CRYPTO_HASH
1018 help
1019 SHA-512 secure hash standard (DFIPS 180-2) implemented
1020 using sparc64 crypto instructions, when available.
1021
1022config CRYPTO_SHA3
1023 tristate "SHA3 digest algorithm"
1024 select CRYPTO_HASH
1025 help
1026 SHA-3 secure hash standard (DFIPS 202). It's based on
1027 cryptographic sponge function family called Keccak.
1028
1029 References:
1030 http://keccak.noekeon.org/
1031
1032config CRYPTO_SM3
1033 tristate "SM3 digest algorithm"
1034 select CRYPTO_HASH
1035 help
1036 SM3 secure hash function as defined by OSCCA GM/T 0004-2012 SM3).
1037 It is part of the Chinese Commercial Cryptography suite.
1038
1039 References:
1040 http://www.oscca.gov.cn/UpFile/20101222141857786.pdf
1041 https://datatracker.ietf.org/doc/html/draft-shen-sm3-hash
1042
David Brazdil0f672f62019-12-10 10:32:29 +00001043config CRYPTO_STREEBOG
1044 tristate "Streebog Hash Function"
1045 select CRYPTO_HASH
1046 help
1047 Streebog Hash Function (GOST R 34.11-2012, RFC 6986) is one of the Russian
1048 cryptographic standard algorithms (called GOST algorithms).
1049 This setting enables two hash algorithms with 256 and 512 bits output.
1050
1051 References:
1052 https://tc26.ru/upload/iblock/fed/feddbb4d26b685903faa2ba11aea43f6.pdf
1053 https://tools.ietf.org/html/rfc6986
1054
Andrew Scullb4b6d4a2019-01-02 15:54:55 +00001055config CRYPTO_TGR192
1056 tristate "Tiger digest algorithms"
1057 select CRYPTO_HASH
1058 help
1059 Tiger hash algorithm 192, 160 and 128-bit hashes
1060
1061 Tiger is a hash function optimized for 64-bit processors while
1062 still having decent performance on 32-bit processors.
1063 Tiger was developed by Ross Anderson and Eli Biham.
1064
1065 See also:
Olivier Deprez157378f2022-04-04 15:47:50 +02001066 <https://www.cs.technion.ac.il/~biham/Reports/Tiger/>.
Andrew Scullb4b6d4a2019-01-02 15:54:55 +00001067
1068config CRYPTO_WP512
1069 tristate "Whirlpool digest algorithms"
1070 select CRYPTO_HASH
1071 help
1072 Whirlpool hash algorithm 512, 384 and 256-bit hashes
1073
1074 Whirlpool-512 is part of the NESSIE cryptographic primitives.
1075 Whirlpool will be part of the ISO/IEC 10118-3:2003(E) standard
1076
1077 See also:
1078 <http://www.larc.usp.br/~pbarreto/WhirlpoolPage.html>
1079
1080config CRYPTO_GHASH_CLMUL_NI_INTEL
David Brazdil0f672f62019-12-10 10:32:29 +00001081 tristate "GHASH hash function (CLMUL-NI accelerated)"
Andrew Scullb4b6d4a2019-01-02 15:54:55 +00001082 depends on X86 && 64BIT
1083 select CRYPTO_CRYPTD
1084 help
David Brazdil0f672f62019-12-10 10:32:29 +00001085 This is the x86_64 CLMUL-NI accelerated implementation of
1086 GHASH, the hash function used in GCM (Galois/Counter mode).
Andrew Scullb4b6d4a2019-01-02 15:54:55 +00001087
1088comment "Ciphers"
1089
1090config CRYPTO_AES
1091 tristate "AES cipher algorithms"
1092 select CRYPTO_ALGAPI
David Brazdil0f672f62019-12-10 10:32:29 +00001093 select CRYPTO_LIB_AES
Andrew Scullb4b6d4a2019-01-02 15:54:55 +00001094 help
1095 AES cipher algorithms (FIPS-197). AES uses the Rijndael
1096 algorithm.
1097
1098 Rijndael appears to be consistently a very good performer in
1099 both hardware and software across a wide range of computing
1100 environments regardless of its use in feedback or non-feedback
1101 modes. Its key setup time is excellent, and its key agility is
1102 good. Rijndael's very low memory requirements make it very well
1103 suited for restricted-space environments, in which it also
1104 demonstrates excellent performance. Rijndael's operations are
1105 among the easiest to defend against power and timing attacks.
1106
1107 The AES specifies three key sizes: 128, 192 and 256 bits
1108
1109 See <http://csrc.nist.gov/CryptoToolkit/aes/> for more information.
1110
1111config CRYPTO_AES_TI
1112 tristate "Fixed time AES cipher"
1113 select CRYPTO_ALGAPI
David Brazdil0f672f62019-12-10 10:32:29 +00001114 select CRYPTO_LIB_AES
Andrew Scullb4b6d4a2019-01-02 15:54:55 +00001115 help
1116 This is a generic implementation of AES that attempts to eliminate
1117 data dependent latencies as much as possible without affecting
1118 performance too much. It is intended for use by the generic CCM
1119 and GCM drivers, and other CTR or CMAC/XCBC based modes that rely
1120 solely on encryption (although decryption is supported as well, but
1121 with a more dramatic performance hit)
1122
1123 Instead of using 16 lookup tables of 1 KB each, (8 for encryption and
1124 8 for decryption), this implementation only uses just two S-boxes of
1125 256 bytes each, and attempts to eliminate data dependent latencies by
1126 prefetching the entire table into the cache at the start of each
David Brazdil0f672f62019-12-10 10:32:29 +00001127 block. Interrupts are also disabled to avoid races where cachelines
1128 are evicted when the CPU is interrupted to do something else.
Andrew Scullb4b6d4a2019-01-02 15:54:55 +00001129
1130config CRYPTO_AES_NI_INTEL
1131 tristate "AES cipher algorithms (AES-NI)"
1132 depends on X86
1133 select CRYPTO_AEAD
David Brazdil0f672f62019-12-10 10:32:29 +00001134 select CRYPTO_LIB_AES
Andrew Scullb4b6d4a2019-01-02 15:54:55 +00001135 select CRYPTO_ALGAPI
Olivier Deprez157378f2022-04-04 15:47:50 +02001136 select CRYPTO_SKCIPHER
Andrew Scullb4b6d4a2019-01-02 15:54:55 +00001137 select CRYPTO_GLUE_HELPER_X86 if 64BIT
1138 select CRYPTO_SIMD
1139 help
1140 Use Intel AES-NI instructions for AES algorithm.
1141
1142 AES cipher algorithms (FIPS-197). AES uses the Rijndael
1143 algorithm.
1144
1145 Rijndael appears to be consistently a very good performer in
1146 both hardware and software across a wide range of computing
1147 environments regardless of its use in feedback or non-feedback
1148 modes. Its key setup time is excellent, and its key agility is
1149 good. Rijndael's very low memory requirements make it very well
1150 suited for restricted-space environments, in which it also
1151 demonstrates excellent performance. Rijndael's operations are
1152 among the easiest to defend against power and timing attacks.
1153
1154 The AES specifies three key sizes: 128, 192 and 256 bits
1155
1156 See <http://csrc.nist.gov/encryption/aes/> for more information.
1157
1158 In addition to AES cipher algorithm support, the acceleration
1159 for some popular block cipher mode is supported too, including
David Brazdil0f672f62019-12-10 10:32:29 +00001160 ECB, CBC, LRW, XTS. The 64 bit version has additional
Andrew Scullb4b6d4a2019-01-02 15:54:55 +00001161 acceleration for CTR.
1162
1163config CRYPTO_AES_SPARC64
1164 tristate "AES cipher algorithms (SPARC64)"
1165 depends on SPARC64
Olivier Deprez157378f2022-04-04 15:47:50 +02001166 select CRYPTO_SKCIPHER
Andrew Scullb4b6d4a2019-01-02 15:54:55 +00001167 help
1168 Use SPARC64 crypto opcodes for AES algorithm.
1169
1170 AES cipher algorithms (FIPS-197). AES uses the Rijndael
1171 algorithm.
1172
1173 Rijndael appears to be consistently a very good performer in
1174 both hardware and software across a wide range of computing
1175 environments regardless of its use in feedback or non-feedback
1176 modes. Its key setup time is excellent, and its key agility is
1177 good. Rijndael's very low memory requirements make it very well
1178 suited for restricted-space environments, in which it also
1179 demonstrates excellent performance. Rijndael's operations are
1180 among the easiest to defend against power and timing attacks.
1181
1182 The AES specifies three key sizes: 128, 192 and 256 bits
1183
1184 See <http://csrc.nist.gov/encryption/aes/> for more information.
1185
1186 In addition to AES cipher algorithm support, the acceleration
1187 for some popular block cipher mode is supported too, including
1188 ECB and CBC.
1189
1190config CRYPTO_AES_PPC_SPE
1191 tristate "AES cipher algorithms (PPC SPE)"
1192 depends on PPC && SPE
Olivier Deprez157378f2022-04-04 15:47:50 +02001193 select CRYPTO_SKCIPHER
Andrew Scullb4b6d4a2019-01-02 15:54:55 +00001194 help
1195 AES cipher algorithms (FIPS-197). Additionally the acceleration
1196 for popular block cipher modes ECB, CBC, CTR and XTS is supported.
1197 This module should only be used for low power (router) devices
1198 without hardware AES acceleration (e.g. caam crypto). It reduces the
1199 size of the AES tables from 16KB to 8KB + 256 bytes and mitigates
1200 timining attacks. Nevertheless it might be not as secure as other
1201 architecture specific assembler implementations that work on 1KB
1202 tables or 256 bytes S-boxes.
1203
1204config CRYPTO_ANUBIS
1205 tristate "Anubis cipher algorithm"
Olivier Deprez157378f2022-04-04 15:47:50 +02001206 depends on CRYPTO_USER_API_ENABLE_OBSOLETE
Andrew Scullb4b6d4a2019-01-02 15:54:55 +00001207 select CRYPTO_ALGAPI
1208 help
1209 Anubis cipher algorithm.
1210
1211 Anubis is a variable key length cipher which can use keys from
1212 128 bits to 320 bits in length. It was evaluated as a entrant
1213 in the NESSIE competition.
1214
1215 See also:
1216 <https://www.cosic.esat.kuleuven.be/nessie/reports/>
1217 <http://www.larc.usp.br/~pbarreto/AnubisPage.html>
1218
1219config CRYPTO_ARC4
1220 tristate "ARC4 cipher algorithm"
Olivier Deprez157378f2022-04-04 15:47:50 +02001221 depends on CRYPTO_USER_API_ENABLE_OBSOLETE
1222 select CRYPTO_SKCIPHER
David Brazdil0f672f62019-12-10 10:32:29 +00001223 select CRYPTO_LIB_ARC4
Andrew Scullb4b6d4a2019-01-02 15:54:55 +00001224 help
1225 ARC4 cipher algorithm.
1226
1227 ARC4 is a stream cipher using keys ranging from 8 bits to 2048
1228 bits in length. This algorithm is required for driver-based
1229 WEP, but it should not be for other purposes because of the
1230 weakness of the algorithm.
1231
1232config CRYPTO_BLOWFISH
1233 tristate "Blowfish cipher algorithm"
1234 select CRYPTO_ALGAPI
1235 select CRYPTO_BLOWFISH_COMMON
1236 help
1237 Blowfish cipher algorithm, by Bruce Schneier.
1238
1239 This is a variable key length cipher which can use keys from 32
1240 bits to 448 bits in length. It's fast, simple and specifically
1241 designed for use on "large microprocessors".
1242
1243 See also:
Olivier Deprez157378f2022-04-04 15:47:50 +02001244 <https://www.schneier.com/blowfish.html>
Andrew Scullb4b6d4a2019-01-02 15:54:55 +00001245
1246config CRYPTO_BLOWFISH_COMMON
1247 tristate
1248 help
1249 Common parts of the Blowfish cipher algorithm shared by the
1250 generic c and the assembler implementations.
1251
1252 See also:
Olivier Deprez157378f2022-04-04 15:47:50 +02001253 <https://www.schneier.com/blowfish.html>
Andrew Scullb4b6d4a2019-01-02 15:54:55 +00001254
1255config CRYPTO_BLOWFISH_X86_64
1256 tristate "Blowfish cipher algorithm (x86_64)"
1257 depends on X86 && 64BIT
Olivier Deprez157378f2022-04-04 15:47:50 +02001258 select CRYPTO_SKCIPHER
Andrew Scullb4b6d4a2019-01-02 15:54:55 +00001259 select CRYPTO_BLOWFISH_COMMON
1260 help
1261 Blowfish cipher algorithm (x86_64), by Bruce Schneier.
1262
1263 This is a variable key length cipher which can use keys from 32
1264 bits to 448 bits in length. It's fast, simple and specifically
1265 designed for use on "large microprocessors".
1266
1267 See also:
Olivier Deprez157378f2022-04-04 15:47:50 +02001268 <https://www.schneier.com/blowfish.html>
Andrew Scullb4b6d4a2019-01-02 15:54:55 +00001269
1270config CRYPTO_CAMELLIA
1271 tristate "Camellia cipher algorithms"
1272 depends on CRYPTO
1273 select CRYPTO_ALGAPI
1274 help
1275 Camellia cipher algorithms module.
1276
1277 Camellia is a symmetric key block cipher developed jointly
1278 at NTT and Mitsubishi Electric Corporation.
1279
1280 The Camellia specifies three key sizes: 128, 192 and 256 bits.
1281
1282 See also:
1283 <https://info.isl.ntt.co.jp/crypt/eng/camellia/index_s.html>
1284
1285config CRYPTO_CAMELLIA_X86_64
1286 tristate "Camellia cipher algorithm (x86_64)"
1287 depends on X86 && 64BIT
1288 depends on CRYPTO
Olivier Deprez157378f2022-04-04 15:47:50 +02001289 select CRYPTO_SKCIPHER
Andrew Scullb4b6d4a2019-01-02 15:54:55 +00001290 select CRYPTO_GLUE_HELPER_X86
1291 help
1292 Camellia cipher algorithm module (x86_64).
1293
1294 Camellia is a symmetric key block cipher developed jointly
1295 at NTT and Mitsubishi Electric Corporation.
1296
1297 The Camellia specifies three key sizes: 128, 192 and 256 bits.
1298
1299 See also:
1300 <https://info.isl.ntt.co.jp/crypt/eng/camellia/index_s.html>
1301
1302config CRYPTO_CAMELLIA_AESNI_AVX_X86_64
1303 tristate "Camellia cipher algorithm (x86_64/AES-NI/AVX)"
1304 depends on X86 && 64BIT
1305 depends on CRYPTO
Olivier Deprez157378f2022-04-04 15:47:50 +02001306 select CRYPTO_SKCIPHER
Andrew Scullb4b6d4a2019-01-02 15:54:55 +00001307 select CRYPTO_CAMELLIA_X86_64
1308 select CRYPTO_GLUE_HELPER_X86
1309 select CRYPTO_SIMD
1310 select CRYPTO_XTS
1311 help
1312 Camellia cipher algorithm module (x86_64/AES-NI/AVX).
1313
1314 Camellia is a symmetric key block cipher developed jointly
1315 at NTT and Mitsubishi Electric Corporation.
1316
1317 The Camellia specifies three key sizes: 128, 192 and 256 bits.
1318
1319 See also:
1320 <https://info.isl.ntt.co.jp/crypt/eng/camellia/index_s.html>
1321
1322config CRYPTO_CAMELLIA_AESNI_AVX2_X86_64
1323 tristate "Camellia cipher algorithm (x86_64/AES-NI/AVX2)"
1324 depends on X86 && 64BIT
1325 depends on CRYPTO
1326 select CRYPTO_CAMELLIA_AESNI_AVX_X86_64
1327 help
1328 Camellia cipher algorithm module (x86_64/AES-NI/AVX2).
1329
1330 Camellia is a symmetric key block cipher developed jointly
1331 at NTT and Mitsubishi Electric Corporation.
1332
1333 The Camellia specifies three key sizes: 128, 192 and 256 bits.
1334
1335 See also:
1336 <https://info.isl.ntt.co.jp/crypt/eng/camellia/index_s.html>
1337
1338config CRYPTO_CAMELLIA_SPARC64
1339 tristate "Camellia cipher algorithm (SPARC64)"
1340 depends on SPARC64
1341 depends on CRYPTO
1342 select CRYPTO_ALGAPI
Olivier Deprez157378f2022-04-04 15:47:50 +02001343 select CRYPTO_SKCIPHER
Andrew Scullb4b6d4a2019-01-02 15:54:55 +00001344 help
1345 Camellia cipher algorithm module (SPARC64).
1346
1347 Camellia is a symmetric key block cipher developed jointly
1348 at NTT and Mitsubishi Electric Corporation.
1349
1350 The Camellia specifies three key sizes: 128, 192 and 256 bits.
1351
1352 See also:
1353 <https://info.isl.ntt.co.jp/crypt/eng/camellia/index_s.html>
1354
1355config CRYPTO_CAST_COMMON
1356 tristate
1357 help
1358 Common parts of the CAST cipher algorithms shared by the
1359 generic c and the assembler implementations.
1360
1361config CRYPTO_CAST5
1362 tristate "CAST5 (CAST-128) cipher algorithm"
1363 select CRYPTO_ALGAPI
1364 select CRYPTO_CAST_COMMON
1365 help
1366 The CAST5 encryption algorithm (synonymous with CAST-128) is
1367 described in RFC2144.
1368
1369config CRYPTO_CAST5_AVX_X86_64
1370 tristate "CAST5 (CAST-128) cipher algorithm (x86_64/AVX)"
1371 depends on X86 && 64BIT
Olivier Deprez157378f2022-04-04 15:47:50 +02001372 select CRYPTO_SKCIPHER
Andrew Scullb4b6d4a2019-01-02 15:54:55 +00001373 select CRYPTO_CAST5
1374 select CRYPTO_CAST_COMMON
1375 select CRYPTO_SIMD
1376 help
1377 The CAST5 encryption algorithm (synonymous with CAST-128) is
1378 described in RFC2144.
1379
1380 This module provides the Cast5 cipher algorithm that processes
1381 sixteen blocks parallel using the AVX instruction set.
1382
1383config CRYPTO_CAST6
1384 tristate "CAST6 (CAST-256) cipher algorithm"
1385 select CRYPTO_ALGAPI
1386 select CRYPTO_CAST_COMMON
1387 help
1388 The CAST6 encryption algorithm (synonymous with CAST-256) is
1389 described in RFC2612.
1390
1391config CRYPTO_CAST6_AVX_X86_64
1392 tristate "CAST6 (CAST-256) cipher algorithm (x86_64/AVX)"
1393 depends on X86 && 64BIT
Olivier Deprez157378f2022-04-04 15:47:50 +02001394 select CRYPTO_SKCIPHER
Andrew Scullb4b6d4a2019-01-02 15:54:55 +00001395 select CRYPTO_CAST6
1396 select CRYPTO_CAST_COMMON
1397 select CRYPTO_GLUE_HELPER_X86
1398 select CRYPTO_SIMD
1399 select CRYPTO_XTS
1400 help
1401 The CAST6 encryption algorithm (synonymous with CAST-256) is
1402 described in RFC2612.
1403
1404 This module provides the Cast6 cipher algorithm that processes
1405 eight blocks parallel using the AVX instruction set.
1406
1407config CRYPTO_DES
1408 tristate "DES and Triple DES EDE cipher algorithms"
1409 select CRYPTO_ALGAPI
David Brazdil0f672f62019-12-10 10:32:29 +00001410 select CRYPTO_LIB_DES
Andrew Scullb4b6d4a2019-01-02 15:54:55 +00001411 help
1412 DES cipher algorithm (FIPS 46-2), and Triple DES EDE (FIPS 46-3).
1413
1414config CRYPTO_DES_SPARC64
1415 tristate "DES and Triple DES EDE cipher algorithms (SPARC64)"
1416 depends on SPARC64
1417 select CRYPTO_ALGAPI
David Brazdil0f672f62019-12-10 10:32:29 +00001418 select CRYPTO_LIB_DES
Olivier Deprez157378f2022-04-04 15:47:50 +02001419 select CRYPTO_SKCIPHER
Andrew Scullb4b6d4a2019-01-02 15:54:55 +00001420 help
1421 DES cipher algorithm (FIPS 46-2), and Triple DES EDE (FIPS 46-3),
1422 optimized using SPARC64 crypto opcodes.
1423
1424config CRYPTO_DES3_EDE_X86_64
1425 tristate "Triple DES EDE cipher algorithm (x86-64)"
1426 depends on X86 && 64BIT
Olivier Deprez157378f2022-04-04 15:47:50 +02001427 select CRYPTO_SKCIPHER
David Brazdil0f672f62019-12-10 10:32:29 +00001428 select CRYPTO_LIB_DES
Andrew Scullb4b6d4a2019-01-02 15:54:55 +00001429 help
1430 Triple DES EDE (FIPS 46-3) algorithm.
1431
1432 This module provides implementation of the Triple DES EDE cipher
1433 algorithm that is optimized for x86-64 processors. Two versions of
1434 algorithm are provided; regular processing one input block and
1435 one that processes three blocks parallel.
1436
1437config CRYPTO_FCRYPT
1438 tristate "FCrypt cipher algorithm"
1439 select CRYPTO_ALGAPI
Olivier Deprez157378f2022-04-04 15:47:50 +02001440 select CRYPTO_SKCIPHER
Andrew Scullb4b6d4a2019-01-02 15:54:55 +00001441 help
1442 FCrypt algorithm used by RxRPC.
1443
1444config CRYPTO_KHAZAD
1445 tristate "Khazad cipher algorithm"
Olivier Deprez157378f2022-04-04 15:47:50 +02001446 depends on CRYPTO_USER_API_ENABLE_OBSOLETE
Andrew Scullb4b6d4a2019-01-02 15:54:55 +00001447 select CRYPTO_ALGAPI
1448 help
1449 Khazad cipher algorithm.
1450
1451 Khazad was a finalist in the initial NESSIE competition. It is
1452 an algorithm optimized for 64-bit processors with good performance
1453 on 32-bit processors. Khazad uses an 128 bit key size.
1454
1455 See also:
1456 <http://www.larc.usp.br/~pbarreto/KhazadPage.html>
1457
1458config CRYPTO_SALSA20
1459 tristate "Salsa20 stream cipher algorithm"
Olivier Deprez157378f2022-04-04 15:47:50 +02001460 select CRYPTO_SKCIPHER
Andrew Scullb4b6d4a2019-01-02 15:54:55 +00001461 help
1462 Salsa20 stream cipher algorithm.
1463
1464 Salsa20 is a stream cipher submitted to eSTREAM, the ECRYPT
Olivier Deprez157378f2022-04-04 15:47:50 +02001465 Stream Cipher Project. See <https://www.ecrypt.eu.org/stream/>
Andrew Scullb4b6d4a2019-01-02 15:54:55 +00001466
1467 The Salsa20 stream cipher algorithm is designed by Daniel J.
Olivier Deprez157378f2022-04-04 15:47:50 +02001468 Bernstein <djb@cr.yp.to>. See <https://cr.yp.to/snuffle.html>
Andrew Scullb4b6d4a2019-01-02 15:54:55 +00001469
1470config CRYPTO_CHACHA20
David Brazdil0f672f62019-12-10 10:32:29 +00001471 tristate "ChaCha stream cipher algorithms"
Olivier Deprez157378f2022-04-04 15:47:50 +02001472 select CRYPTO_LIB_CHACHA_GENERIC
1473 select CRYPTO_SKCIPHER
Andrew Scullb4b6d4a2019-01-02 15:54:55 +00001474 help
David Brazdil0f672f62019-12-10 10:32:29 +00001475 The ChaCha20, XChaCha20, and XChaCha12 stream cipher algorithms.
Andrew Scullb4b6d4a2019-01-02 15:54:55 +00001476
1477 ChaCha20 is a 256-bit high-speed stream cipher designed by Daniel J.
1478 Bernstein and further specified in RFC7539 for use in IETF protocols.
David Brazdil0f672f62019-12-10 10:32:29 +00001479 This is the portable C implementation of ChaCha20. See also:
Olivier Deprez157378f2022-04-04 15:47:50 +02001480 <https://cr.yp.to/chacha/chacha-20080128.pdf>
Andrew Scullb4b6d4a2019-01-02 15:54:55 +00001481
David Brazdil0f672f62019-12-10 10:32:29 +00001482 XChaCha20 is the application of the XSalsa20 construction to ChaCha20
1483 rather than to Salsa20. XChaCha20 extends ChaCha20's nonce length
1484 from 64 bits (or 96 bits using the RFC7539 convention) to 192 bits,
1485 while provably retaining ChaCha20's security. See also:
1486 <https://cr.yp.to/snuffle/xsalsa-20081128.pdf>
1487
1488 XChaCha12 is XChaCha20 reduced to 12 rounds, with correspondingly
1489 reduced security margin but increased performance. It can be needed
1490 in some performance-sensitive scenarios.
1491
Andrew Scullb4b6d4a2019-01-02 15:54:55 +00001492config CRYPTO_CHACHA20_X86_64
David Brazdil0f672f62019-12-10 10:32:29 +00001493 tristate "ChaCha stream cipher algorithms (x86_64/SSSE3/AVX2/AVX-512VL)"
Andrew Scullb4b6d4a2019-01-02 15:54:55 +00001494 depends on X86 && 64BIT
Olivier Deprez157378f2022-04-04 15:47:50 +02001495 select CRYPTO_SKCIPHER
1496 select CRYPTO_LIB_CHACHA_GENERIC
1497 select CRYPTO_ARCH_HAVE_LIB_CHACHA
Andrew Scullb4b6d4a2019-01-02 15:54:55 +00001498 help
David Brazdil0f672f62019-12-10 10:32:29 +00001499 SSSE3, AVX2, and AVX-512VL optimized implementations of the ChaCha20,
1500 XChaCha20, and XChaCha12 stream ciphers.
Andrew Scullb4b6d4a2019-01-02 15:54:55 +00001501
Olivier Deprez157378f2022-04-04 15:47:50 +02001502config CRYPTO_CHACHA_MIPS
1503 tristate "ChaCha stream cipher algorithms (MIPS 32r2 optimized)"
1504 depends on CPU_MIPS32_R2
1505 select CRYPTO_SKCIPHER
1506 select CRYPTO_ARCH_HAVE_LIB_CHACHA
1507
Andrew Scullb4b6d4a2019-01-02 15:54:55 +00001508config CRYPTO_SEED
1509 tristate "SEED cipher algorithm"
Olivier Deprez157378f2022-04-04 15:47:50 +02001510 depends on CRYPTO_USER_API_ENABLE_OBSOLETE
Andrew Scullb4b6d4a2019-01-02 15:54:55 +00001511 select CRYPTO_ALGAPI
1512 help
1513 SEED cipher algorithm (RFC4269).
1514
1515 SEED is a 128-bit symmetric key block cipher that has been
1516 developed by KISA (Korea Information Security Agency) as a
1517 national standard encryption algorithm of the Republic of Korea.
1518 It is a 16 round block cipher with the key size of 128 bit.
1519
1520 See also:
1521 <http://www.kisa.or.kr/kisa/seed/jsp/seed_eng.jsp>
1522
1523config CRYPTO_SERPENT
1524 tristate "Serpent cipher algorithm"
1525 select CRYPTO_ALGAPI
1526 help
1527 Serpent cipher algorithm, by Anderson, Biham & Knudsen.
1528
1529 Keys are allowed to be from 0 to 256 bits in length, in steps
1530 of 8 bits. Also includes the 'Tnepres' algorithm, a reversed
1531 variant of Serpent for compatibility with old kerneli.org code.
1532
1533 See also:
Olivier Deprez157378f2022-04-04 15:47:50 +02001534 <https://www.cl.cam.ac.uk/~rja14/serpent.html>
Andrew Scullb4b6d4a2019-01-02 15:54:55 +00001535
1536config CRYPTO_SERPENT_SSE2_X86_64
1537 tristate "Serpent cipher algorithm (x86_64/SSE2)"
1538 depends on X86 && 64BIT
Olivier Deprez157378f2022-04-04 15:47:50 +02001539 select CRYPTO_SKCIPHER
Andrew Scullb4b6d4a2019-01-02 15:54:55 +00001540 select CRYPTO_GLUE_HELPER_X86
1541 select CRYPTO_SERPENT
1542 select CRYPTO_SIMD
1543 help
1544 Serpent cipher algorithm, by Anderson, Biham & Knudsen.
1545
1546 Keys are allowed to be from 0 to 256 bits in length, in steps
1547 of 8 bits.
1548
1549 This module provides Serpent cipher algorithm that processes eight
1550 blocks parallel using SSE2 instruction set.
1551
1552 See also:
Olivier Deprez157378f2022-04-04 15:47:50 +02001553 <https://www.cl.cam.ac.uk/~rja14/serpent.html>
Andrew Scullb4b6d4a2019-01-02 15:54:55 +00001554
1555config CRYPTO_SERPENT_SSE2_586
1556 tristate "Serpent cipher algorithm (i586/SSE2)"
1557 depends on X86 && !64BIT
Olivier Deprez157378f2022-04-04 15:47:50 +02001558 select CRYPTO_SKCIPHER
Andrew Scullb4b6d4a2019-01-02 15:54:55 +00001559 select CRYPTO_GLUE_HELPER_X86
1560 select CRYPTO_SERPENT
1561 select CRYPTO_SIMD
1562 help
1563 Serpent cipher algorithm, by Anderson, Biham & Knudsen.
1564
1565 Keys are allowed to be from 0 to 256 bits in length, in steps
1566 of 8 bits.
1567
1568 This module provides Serpent cipher algorithm that processes four
1569 blocks parallel using SSE2 instruction set.
1570
1571 See also:
Olivier Deprez157378f2022-04-04 15:47:50 +02001572 <https://www.cl.cam.ac.uk/~rja14/serpent.html>
Andrew Scullb4b6d4a2019-01-02 15:54:55 +00001573
1574config CRYPTO_SERPENT_AVX_X86_64
1575 tristate "Serpent cipher algorithm (x86_64/AVX)"
1576 depends on X86 && 64BIT
Olivier Deprez157378f2022-04-04 15:47:50 +02001577 select CRYPTO_SKCIPHER
Andrew Scullb4b6d4a2019-01-02 15:54:55 +00001578 select CRYPTO_GLUE_HELPER_X86
1579 select CRYPTO_SERPENT
1580 select CRYPTO_SIMD
1581 select CRYPTO_XTS
1582 help
1583 Serpent cipher algorithm, by Anderson, Biham & Knudsen.
1584
1585 Keys are allowed to be from 0 to 256 bits in length, in steps
1586 of 8 bits.
1587
1588 This module provides the Serpent cipher algorithm that processes
1589 eight blocks parallel using the AVX instruction set.
1590
1591 See also:
Olivier Deprez157378f2022-04-04 15:47:50 +02001592 <https://www.cl.cam.ac.uk/~rja14/serpent.html>
Andrew Scullb4b6d4a2019-01-02 15:54:55 +00001593
1594config CRYPTO_SERPENT_AVX2_X86_64
1595 tristate "Serpent cipher algorithm (x86_64/AVX2)"
1596 depends on X86 && 64BIT
1597 select CRYPTO_SERPENT_AVX_X86_64
1598 help
1599 Serpent cipher algorithm, by Anderson, Biham & Knudsen.
1600
1601 Keys are allowed to be from 0 to 256 bits in length, in steps
1602 of 8 bits.
1603
1604 This module provides Serpent cipher algorithm that processes 16
1605 blocks parallel using AVX2 instruction set.
1606
1607 See also:
Olivier Deprez157378f2022-04-04 15:47:50 +02001608 <https://www.cl.cam.ac.uk/~rja14/serpent.html>
Andrew Scullb4b6d4a2019-01-02 15:54:55 +00001609
1610config CRYPTO_SM4
1611 tristate "SM4 cipher algorithm"
1612 select CRYPTO_ALGAPI
1613 help
1614 SM4 cipher algorithms (OSCCA GB/T 32907-2016).
1615
1616 SM4 (GBT.32907-2016) is a cryptographic standard issued by the
1617 Organization of State Commercial Administration of China (OSCCA)
1618 as an authorized cryptographic algorithms for the use within China.
1619
1620 SMS4 was originally created for use in protecting wireless
1621 networks, and is mandated in the Chinese National Standard for
1622 Wireless LAN WAPI (Wired Authentication and Privacy Infrastructure)
1623 (GB.15629.11-2003).
1624
1625 The latest SM4 standard (GBT.32907-2016) was proposed by OSCCA and
1626 standardized through TC 260 of the Standardization Administration
1627 of the People's Republic of China (SAC).
1628
1629 The input, output, and key of SMS4 are each 128 bits.
1630
1631 See also: <https://eprint.iacr.org/2008/329.pdf>
1632
1633 If unsure, say N.
1634
1635config CRYPTO_TEA
1636 tristate "TEA, XTEA and XETA cipher algorithms"
Olivier Deprez157378f2022-04-04 15:47:50 +02001637 depends on CRYPTO_USER_API_ENABLE_OBSOLETE
Andrew Scullb4b6d4a2019-01-02 15:54:55 +00001638 select CRYPTO_ALGAPI
1639 help
1640 TEA cipher algorithm.
1641
1642 Tiny Encryption Algorithm is a simple cipher that uses
1643 many rounds for security. It is very fast and uses
1644 little memory.
1645
1646 Xtendend Tiny Encryption Algorithm is a modification to
1647 the TEA algorithm to address a potential key weakness
1648 in the TEA algorithm.
1649
1650 Xtendend Encryption Tiny Algorithm is a mis-implementation
1651 of the XTEA algorithm for compatibility purposes.
1652
1653config CRYPTO_TWOFISH
1654 tristate "Twofish cipher algorithm"
1655 select CRYPTO_ALGAPI
1656 select CRYPTO_TWOFISH_COMMON
1657 help
1658 Twofish cipher algorithm.
1659
1660 Twofish was submitted as an AES (Advanced Encryption Standard)
1661 candidate cipher by researchers at CounterPane Systems. It is a
1662 16 round block cipher supporting key sizes of 128, 192, and 256
1663 bits.
1664
1665 See also:
Olivier Deprez157378f2022-04-04 15:47:50 +02001666 <https://www.schneier.com/twofish.html>
Andrew Scullb4b6d4a2019-01-02 15:54:55 +00001667
1668config CRYPTO_TWOFISH_COMMON
1669 tristate
1670 help
1671 Common parts of the Twofish cipher algorithm shared by the
1672 generic c and the assembler implementations.
1673
1674config CRYPTO_TWOFISH_586
1675 tristate "Twofish cipher algorithms (i586)"
1676 depends on (X86 || UML_X86) && !64BIT
1677 select CRYPTO_ALGAPI
1678 select CRYPTO_TWOFISH_COMMON
1679 help
1680 Twofish cipher algorithm.
1681
1682 Twofish was submitted as an AES (Advanced Encryption Standard)
1683 candidate cipher by researchers at CounterPane Systems. It is a
1684 16 round block cipher supporting key sizes of 128, 192, and 256
1685 bits.
1686
1687 See also:
Olivier Deprez157378f2022-04-04 15:47:50 +02001688 <https://www.schneier.com/twofish.html>
Andrew Scullb4b6d4a2019-01-02 15:54:55 +00001689
1690config CRYPTO_TWOFISH_X86_64
1691 tristate "Twofish cipher algorithm (x86_64)"
1692 depends on (X86 || UML_X86) && 64BIT
1693 select CRYPTO_ALGAPI
1694 select CRYPTO_TWOFISH_COMMON
1695 help
1696 Twofish cipher algorithm (x86_64).
1697
1698 Twofish was submitted as an AES (Advanced Encryption Standard)
1699 candidate cipher by researchers at CounterPane Systems. It is a
1700 16 round block cipher supporting key sizes of 128, 192, and 256
1701 bits.
1702
1703 See also:
Olivier Deprez157378f2022-04-04 15:47:50 +02001704 <https://www.schneier.com/twofish.html>
Andrew Scullb4b6d4a2019-01-02 15:54:55 +00001705
1706config CRYPTO_TWOFISH_X86_64_3WAY
1707 tristate "Twofish cipher algorithm (x86_64, 3-way parallel)"
1708 depends on X86 && 64BIT
Olivier Deprez157378f2022-04-04 15:47:50 +02001709 select CRYPTO_SKCIPHER
Andrew Scullb4b6d4a2019-01-02 15:54:55 +00001710 select CRYPTO_TWOFISH_COMMON
1711 select CRYPTO_TWOFISH_X86_64
1712 select CRYPTO_GLUE_HELPER_X86
1713 help
1714 Twofish cipher algorithm (x86_64, 3-way parallel).
1715
1716 Twofish was submitted as an AES (Advanced Encryption Standard)
1717 candidate cipher by researchers at CounterPane Systems. It is a
1718 16 round block cipher supporting key sizes of 128, 192, and 256
1719 bits.
1720
1721 This module provides Twofish cipher algorithm that processes three
1722 blocks parallel, utilizing resources of out-of-order CPUs better.
1723
1724 See also:
Olivier Deprez157378f2022-04-04 15:47:50 +02001725 <https://www.schneier.com/twofish.html>
Andrew Scullb4b6d4a2019-01-02 15:54:55 +00001726
1727config CRYPTO_TWOFISH_AVX_X86_64
1728 tristate "Twofish cipher algorithm (x86_64/AVX)"
1729 depends on X86 && 64BIT
Olivier Deprez157378f2022-04-04 15:47:50 +02001730 select CRYPTO_SKCIPHER
Andrew Scullb4b6d4a2019-01-02 15:54:55 +00001731 select CRYPTO_GLUE_HELPER_X86
1732 select CRYPTO_SIMD
1733 select CRYPTO_TWOFISH_COMMON
1734 select CRYPTO_TWOFISH_X86_64
1735 select CRYPTO_TWOFISH_X86_64_3WAY
1736 help
1737 Twofish cipher algorithm (x86_64/AVX).
1738
1739 Twofish was submitted as an AES (Advanced Encryption Standard)
1740 candidate cipher by researchers at CounterPane Systems. It is a
1741 16 round block cipher supporting key sizes of 128, 192, and 256
1742 bits.
1743
1744 This module provides the Twofish cipher algorithm that processes
1745 eight blocks parallel using the AVX Instruction Set.
1746
1747 See also:
Olivier Deprez157378f2022-04-04 15:47:50 +02001748 <https://www.schneier.com/twofish.html>
Andrew Scullb4b6d4a2019-01-02 15:54:55 +00001749
1750comment "Compression"
1751
1752config CRYPTO_DEFLATE
1753 tristate "Deflate compression algorithm"
1754 select CRYPTO_ALGAPI
1755 select CRYPTO_ACOMP2
1756 select ZLIB_INFLATE
1757 select ZLIB_DEFLATE
1758 help
1759 This is the Deflate algorithm (RFC1951), specified for use in
1760 IPSec with the IPCOMP protocol (RFC3173, RFC2394).
1761
1762 You will most probably want this if using IPSec.
1763
1764config CRYPTO_LZO
1765 tristate "LZO compression algorithm"
1766 select CRYPTO_ALGAPI
1767 select CRYPTO_ACOMP2
1768 select LZO_COMPRESS
1769 select LZO_DECOMPRESS
1770 help
1771 This is the LZO algorithm.
1772
1773config CRYPTO_842
1774 tristate "842 compression algorithm"
1775 select CRYPTO_ALGAPI
1776 select CRYPTO_ACOMP2
1777 select 842_COMPRESS
1778 select 842_DECOMPRESS
1779 help
1780 This is the 842 algorithm.
1781
1782config CRYPTO_LZ4
1783 tristate "LZ4 compression algorithm"
1784 select CRYPTO_ALGAPI
1785 select CRYPTO_ACOMP2
1786 select LZ4_COMPRESS
1787 select LZ4_DECOMPRESS
1788 help
1789 This is the LZ4 algorithm.
1790
1791config CRYPTO_LZ4HC
1792 tristate "LZ4HC compression algorithm"
1793 select CRYPTO_ALGAPI
1794 select CRYPTO_ACOMP2
1795 select LZ4HC_COMPRESS
1796 select LZ4_DECOMPRESS
1797 help
1798 This is the LZ4 high compression mode algorithm.
1799
1800config CRYPTO_ZSTD
1801 tristate "Zstd compression algorithm"
1802 select CRYPTO_ALGAPI
1803 select CRYPTO_ACOMP2
1804 select ZSTD_COMPRESS
1805 select ZSTD_DECOMPRESS
1806 help
1807 This is the zstd algorithm.
1808
1809comment "Random Number Generation"
1810
1811config CRYPTO_ANSI_CPRNG
1812 tristate "Pseudo Random Number Generation for Cryptographic modules"
1813 select CRYPTO_AES
1814 select CRYPTO_RNG
1815 help
1816 This option enables the generic pseudo random number generator
1817 for cryptographic modules. Uses the Algorithm specified in
1818 ANSI X9.31 A.2.4. Note that this option must be enabled if
1819 CRYPTO_FIPS is selected
1820
1821menuconfig CRYPTO_DRBG_MENU
1822 tristate "NIST SP800-90A DRBG"
1823 help
1824 NIST SP800-90A compliant DRBG. In the following submenu, one or
1825 more of the DRBG types must be selected.
1826
1827if CRYPTO_DRBG_MENU
1828
1829config CRYPTO_DRBG_HMAC
1830 bool
1831 default y
1832 select CRYPTO_HMAC
1833 select CRYPTO_SHA256
1834
1835config CRYPTO_DRBG_HASH
1836 bool "Enable Hash DRBG"
1837 select CRYPTO_SHA256
1838 help
1839 Enable the Hash DRBG variant as defined in NIST SP800-90A.
1840
1841config CRYPTO_DRBG_CTR
1842 bool "Enable CTR DRBG"
1843 select CRYPTO_AES
Olivier Deprez157378f2022-04-04 15:47:50 +02001844 select CRYPTO_CTR
Andrew Scullb4b6d4a2019-01-02 15:54:55 +00001845 help
1846 Enable the CTR DRBG variant as defined in NIST SP800-90A.
1847
1848config CRYPTO_DRBG
1849 tristate
1850 default CRYPTO_DRBG_MENU
1851 select CRYPTO_RNG
1852 select CRYPTO_JITTERENTROPY
1853
1854endif # if CRYPTO_DRBG_MENU
1855
1856config CRYPTO_JITTERENTROPY
1857 tristate "Jitterentropy Non-Deterministic Random Number Generator"
1858 select CRYPTO_RNG
1859 help
1860 The Jitterentropy RNG is a noise that is intended
1861 to provide seed to another RNG. The RNG does not
1862 perform any cryptographic whitening of the generated
1863 random numbers. This Jitterentropy RNG registers with
1864 the kernel crypto API and can be used by any caller.
1865
1866config CRYPTO_USER_API
1867 tristate
1868
1869config CRYPTO_USER_API_HASH
1870 tristate "User-space interface for hash algorithms"
1871 depends on NET
1872 select CRYPTO_HASH
1873 select CRYPTO_USER_API
1874 help
1875 This option enables the user-spaces interface for hash
1876 algorithms.
1877
1878config CRYPTO_USER_API_SKCIPHER
1879 tristate "User-space interface for symmetric key cipher algorithms"
1880 depends on NET
Olivier Deprez157378f2022-04-04 15:47:50 +02001881 select CRYPTO_SKCIPHER
Andrew Scullb4b6d4a2019-01-02 15:54:55 +00001882 select CRYPTO_USER_API
1883 help
1884 This option enables the user-spaces interface for symmetric
1885 key cipher algorithms.
1886
1887config CRYPTO_USER_API_RNG
1888 tristate "User-space interface for random number generator algorithms"
1889 depends on NET
1890 select CRYPTO_RNG
1891 select CRYPTO_USER_API
1892 help
1893 This option enables the user-spaces interface for random
1894 number generator algorithms.
1895
Olivier Deprez157378f2022-04-04 15:47:50 +02001896config CRYPTO_USER_API_RNG_CAVP
1897 bool "Enable CAVP testing of DRBG"
1898 depends on CRYPTO_USER_API_RNG && CRYPTO_DRBG
1899 help
1900 This option enables extra API for CAVP testing via the user-space
1901 interface: resetting of DRBG entropy, and providing Additional Data.
1902 This should only be enabled for CAVP testing. You should say
1903 no unless you know what this is.
1904
Andrew Scullb4b6d4a2019-01-02 15:54:55 +00001905config CRYPTO_USER_API_AEAD
1906 tristate "User-space interface for AEAD cipher algorithms"
1907 depends on NET
1908 select CRYPTO_AEAD
Olivier Deprez157378f2022-04-04 15:47:50 +02001909 select CRYPTO_SKCIPHER
Andrew Scullb4b6d4a2019-01-02 15:54:55 +00001910 select CRYPTO_NULL
1911 select CRYPTO_USER_API
1912 help
1913 This option enables the user-spaces interface for AEAD
1914 cipher algorithms.
1915
Olivier Deprez157378f2022-04-04 15:47:50 +02001916config CRYPTO_USER_API_ENABLE_OBSOLETE
1917 bool "Enable obsolete cryptographic algorithms for userspace"
1918 depends on CRYPTO_USER_API
1919 default y
1920 help
1921 Allow obsolete cryptographic algorithms to be selected that have
1922 already been phased out from internal use by the kernel, and are
1923 only useful for userspace clients that still rely on them.
1924
David Brazdil0f672f62019-12-10 10:32:29 +00001925config CRYPTO_STATS
1926 bool "Crypto usage statistics for User-space"
1927 depends on CRYPTO_USER
1928 help
1929 This option enables the gathering of crypto stats.
1930 This will collect:
1931 - encrypt/decrypt size and numbers of symmeric operations
1932 - compress/decompress size and numbers of compress operations
1933 - size and numbers of hash operations
1934 - encrypt/decrypt/sign/verify numbers for asymmetric operations
1935 - generate/seed numbers for rng operations
1936
Andrew Scullb4b6d4a2019-01-02 15:54:55 +00001937config CRYPTO_HASH_INFO
1938 bool
1939
1940source "drivers/crypto/Kconfig"
David Brazdil0f672f62019-12-10 10:32:29 +00001941source "crypto/asymmetric_keys/Kconfig"
1942source "certs/Kconfig"
Andrew Scullb4b6d4a2019-01-02 15:54:55 +00001943
1944endif # if CRYPTO