]> git.proxmox.com Git - mirror_ubuntu-bionic-kernel.git/blame - crypto/Kconfig
crypto: serpent-sse2 - remove unneeded LRW/XTS #ifdefs
[mirror_ubuntu-bionic-kernel.git] / crypto / Kconfig
CommitLineData
685784aa
DW
1#
2# Generic algorithms support
3#
4config XOR_BLOCKS
5 tristate
6
1da177e4 7#
9bc89cd8 8# async_tx api: hardware offloaded memory transfer/transform support
1da177e4 9#
9bc89cd8 10source "crypto/async_tx/Kconfig"
1da177e4 11
9bc89cd8
DW
12#
13# Cryptographic API Configuration
14#
2e290f43 15menuconfig CRYPTO
c3715cb9 16 tristate "Cryptographic API"
1da177e4
LT
17 help
18 This option provides the core Cryptographic API.
19
cce9e06d
HX
20if CRYPTO
21
584fffc8
SS
22comment "Crypto core or helper"
23
ccb778e1
NH
24config CRYPTO_FIPS
25 bool "FIPS 200 compliance"
e84c5480 26 depends on CRYPTO_ANSI_CPRNG && !CRYPTO_MANAGER_DISABLE_TESTS
ccb778e1
NH
27 help
28 This options enables the fips boot option which is
29 required if you want to system to operate in a FIPS 200
30 certification. You should say no unless you know what
e84c5480 31 this is.
ccb778e1 32
cce9e06d
HX
33config CRYPTO_ALGAPI
34 tristate
6a0fcbb4 35 select CRYPTO_ALGAPI2
cce9e06d
HX
36 help
37 This option provides the API for cryptographic algorithms.
38
6a0fcbb4
HX
39config CRYPTO_ALGAPI2
40 tristate
41
1ae97820
HX
42config CRYPTO_AEAD
43 tristate
6a0fcbb4 44 select CRYPTO_AEAD2
1ae97820
HX
45 select CRYPTO_ALGAPI
46
6a0fcbb4
HX
47config CRYPTO_AEAD2
48 tristate
49 select CRYPTO_ALGAPI2
50
5cde0af2
HX
51config CRYPTO_BLKCIPHER
52 tristate
6a0fcbb4 53 select CRYPTO_BLKCIPHER2
5cde0af2 54 select CRYPTO_ALGAPI
6a0fcbb4
HX
55
56config CRYPTO_BLKCIPHER2
57 tristate
58 select CRYPTO_ALGAPI2
59 select CRYPTO_RNG2
0a2e821d 60 select CRYPTO_WORKQUEUE
5cde0af2 61
055bcee3
HX
62config CRYPTO_HASH
63 tristate
6a0fcbb4 64 select CRYPTO_HASH2
055bcee3
HX
65 select CRYPTO_ALGAPI
66
6a0fcbb4
HX
67config CRYPTO_HASH2
68 tristate
69 select CRYPTO_ALGAPI2
70
17f0f4a4
NH
71config CRYPTO_RNG
72 tristate
6a0fcbb4 73 select CRYPTO_RNG2
17f0f4a4
NH
74 select CRYPTO_ALGAPI
75
6a0fcbb4
HX
76config CRYPTO_RNG2
77 tristate
78 select CRYPTO_ALGAPI2
79
a1d2f095 80config CRYPTO_PCOMP
bc94e596
HX
81 tristate
82 select CRYPTO_PCOMP2
83 select CRYPTO_ALGAPI
84
85config CRYPTO_PCOMP2
a1d2f095
GU
86 tristate
87 select CRYPTO_ALGAPI2
88
2b8c19db
HX
89config CRYPTO_MANAGER
90 tristate "Cryptographic algorithm manager"
6a0fcbb4 91 select CRYPTO_MANAGER2
2b8c19db
HX
92 help
93 Create default cryptographic template instantiations such as
94 cbc(aes).
95
6a0fcbb4
HX
96config CRYPTO_MANAGER2
97 def_tristate CRYPTO_MANAGER || (CRYPTO_MANAGER!=n && CRYPTO_ALGAPI=y)
98 select CRYPTO_AEAD2
99 select CRYPTO_HASH2
100 select CRYPTO_BLKCIPHER2
bc94e596 101 select CRYPTO_PCOMP2
6a0fcbb4 102
a38f7907
SK
103config CRYPTO_USER
104 tristate "Userspace cryptographic algorithm configuration"
5db017aa 105 depends on NET
a38f7907
SK
106 select CRYPTO_MANAGER
107 help
d19978f5 108 Userspace configuration for cryptographic instantiations such as
a38f7907
SK
109 cbc(aes).
110
326a6346
HX
111config CRYPTO_MANAGER_DISABLE_TESTS
112 bool "Disable run-time self tests"
00ca28a5
HX
113 default y
114 depends on CRYPTO_MANAGER2
0b767f96 115 help
326a6346
HX
116 Disable run-time self tests that normally take place at
117 algorithm registration.
0b767f96 118
584fffc8
SS
119config CRYPTO_GF128MUL
120 tristate "GF(2^128) multiplication functions (EXPERIMENTAL)"
333b0d7e 121 help
584fffc8
SS
122 Efficient table driven implementation of multiplications in the
123 field GF(2^128). This is needed by some cypher modes. This
124 option will be selected automatically if you select such a
125 cipher mode. Only select this option by hand if you expect to load
126 an external module that requires these functions.
333b0d7e 127
1da177e4
LT
128config CRYPTO_NULL
129 tristate "Null algorithms"
cce9e06d 130 select CRYPTO_ALGAPI
c8620c25 131 select CRYPTO_BLKCIPHER
d35d2454 132 select CRYPTO_HASH
1da177e4
LT
133 help
134 These are 'Null' algorithms, used by IPsec, which do nothing.
135
5068c7a8
SK
136config CRYPTO_PCRYPT
137 tristate "Parallel crypto engine (EXPERIMENTAL)"
138 depends on SMP && EXPERIMENTAL
139 select PADATA
140 select CRYPTO_MANAGER
141 select CRYPTO_AEAD
142 help
143 This converts an arbitrary crypto algorithm into a parallel
144 algorithm that executes in kernel threads.
145
25c38d3f
HY
146config CRYPTO_WORKQUEUE
147 tristate
148
584fffc8
SS
149config CRYPTO_CRYPTD
150 tristate "Software async crypto daemon"
151 select CRYPTO_BLKCIPHER
b8a28251 152 select CRYPTO_HASH
584fffc8 153 select CRYPTO_MANAGER
254eff77 154 select CRYPTO_WORKQUEUE
1da177e4 155 help
584fffc8
SS
156 This is a generic software asynchronous crypto daemon that
157 converts an arbitrary synchronous software crypto algorithm
158 into an asynchronous algorithm that executes in a kernel thread.
1da177e4 159
584fffc8
SS
160config CRYPTO_AUTHENC
161 tristate "Authenc support"
162 select CRYPTO_AEAD
163 select CRYPTO_BLKCIPHER
164 select CRYPTO_MANAGER
165 select CRYPTO_HASH
1da177e4 166 help
584fffc8
SS
167 Authenc: Combined mode wrapper for IPsec.
168 This is required for IPSec.
1da177e4 169
584fffc8
SS
170config CRYPTO_TEST
171 tristate "Testing module"
172 depends on m
da7f033d 173 select CRYPTO_MANAGER
1da177e4 174 help
584fffc8 175 Quick & dirty crypto test module.
1da177e4 176
584fffc8 177comment "Authenticated Encryption with Associated Data"
cd12fb90 178
584fffc8
SS
179config CRYPTO_CCM
180 tristate "CCM support"
181 select CRYPTO_CTR
182 select CRYPTO_AEAD
1da177e4 183 help
584fffc8 184 Support for Counter with CBC MAC. Required for IPsec.
1da177e4 185
584fffc8
SS
186config CRYPTO_GCM
187 tristate "GCM/GMAC support"
188 select CRYPTO_CTR
189 select CRYPTO_AEAD
9382d97a 190 select CRYPTO_GHASH
1da177e4 191 help
584fffc8
SS
192 Support for Galois/Counter Mode (GCM) and Galois Message
193 Authentication Code (GMAC). Required for IPSec.
1da177e4 194
584fffc8
SS
195config CRYPTO_SEQIV
196 tristate "Sequence Number IV Generator"
197 select CRYPTO_AEAD
198 select CRYPTO_BLKCIPHER
a0f000ec 199 select CRYPTO_RNG
1da177e4 200 help
584fffc8
SS
201 This IV generator generates an IV based on a sequence number by
202 xoring it with a salt. This algorithm is mainly useful for CTR
1da177e4 203
584fffc8 204comment "Block modes"
c494e070 205
584fffc8
SS
206config CRYPTO_CBC
207 tristate "CBC support"
db131ef9 208 select CRYPTO_BLKCIPHER
43518407 209 select CRYPTO_MANAGER
db131ef9 210 help
584fffc8
SS
211 CBC: Cipher Block Chaining mode
212 This block cipher algorithm is required for IPSec.
db131ef9 213
584fffc8
SS
214config CRYPTO_CTR
215 tristate "CTR support"
db131ef9 216 select CRYPTO_BLKCIPHER
584fffc8 217 select CRYPTO_SEQIV
43518407 218 select CRYPTO_MANAGER
db131ef9 219 help
584fffc8 220 CTR: Counter mode
db131ef9
HX
221 This block cipher algorithm is required for IPSec.
222
584fffc8
SS
223config CRYPTO_CTS
224 tristate "CTS support"
225 select CRYPTO_BLKCIPHER
226 help
227 CTS: Cipher Text Stealing
228 This is the Cipher Text Stealing mode as described by
229 Section 8 of rfc2040 and referenced by rfc3962.
230 (rfc3962 includes errata information in its Appendix A)
231 This mode is required for Kerberos gss mechanism support
232 for AES encryption.
233
234config CRYPTO_ECB
235 tristate "ECB support"
91652be5
DH
236 select CRYPTO_BLKCIPHER
237 select CRYPTO_MANAGER
91652be5 238 help
584fffc8
SS
239 ECB: Electronic CodeBook mode
240 This is the simplest block cipher algorithm. It simply encrypts
241 the input block by block.
91652be5 242
64470f1b 243config CRYPTO_LRW
2470a2b2 244 tristate "LRW support"
64470f1b
RS
245 select CRYPTO_BLKCIPHER
246 select CRYPTO_MANAGER
247 select CRYPTO_GF128MUL
248 help
249 LRW: Liskov Rivest Wagner, a tweakable, non malleable, non movable
250 narrow block cipher mode for dm-crypt. Use it with cipher
251 specification string aes-lrw-benbi, the key must be 256, 320 or 384.
252 The first 128, 192 or 256 bits in the key are used for AES and the
253 rest is used to tie each cipher block to its logical position.
254
584fffc8
SS
255config CRYPTO_PCBC
256 tristate "PCBC support"
257 select CRYPTO_BLKCIPHER
258 select CRYPTO_MANAGER
259 help
260 PCBC: Propagating Cipher Block Chaining mode
261 This block cipher algorithm is required for RxRPC.
262
f19f5111 263config CRYPTO_XTS
5bcf8e6d 264 tristate "XTS support"
f19f5111
RS
265 select CRYPTO_BLKCIPHER
266 select CRYPTO_MANAGER
267 select CRYPTO_GF128MUL
268 help
269 XTS: IEEE1619/D16 narrow block cipher use with aes-xts-plain,
270 key size 256, 384 or 512 bits. This implementation currently
271 can't handle a sectorsize which is not a multiple of 16 bytes.
272
584fffc8
SS
273comment "Hash modes"
274
275config CRYPTO_HMAC
276 tristate "HMAC support"
277 select CRYPTO_HASH
23e353c8 278 select CRYPTO_MANAGER
23e353c8 279 help
584fffc8
SS
280 HMAC: Keyed-Hashing for Message Authentication (RFC2104).
281 This is required for IPSec.
23e353c8 282
584fffc8
SS
283config CRYPTO_XCBC
284 tristate "XCBC support"
285 depends on EXPERIMENTAL
286 select CRYPTO_HASH
287 select CRYPTO_MANAGER
76cb9521 288 help
584fffc8
SS
289 XCBC: Keyed-Hashing with encryption algorithm
290 http://www.ietf.org/rfc/rfc3566.txt
291 http://csrc.nist.gov/encryption/modes/proposedmodes/
292 xcbc-mac/xcbc-mac-spec.pdf
76cb9521 293
f1939f7c
SW
294config CRYPTO_VMAC
295 tristate "VMAC support"
296 depends on EXPERIMENTAL
297 select CRYPTO_HASH
298 select CRYPTO_MANAGER
299 help
300 VMAC is a message authentication algorithm designed for
301 very high speed on 64-bit architectures.
302
303 See also:
304 <http://fastcrypto.org/vmac>
305
584fffc8 306comment "Digest"
28db8e3e 307
584fffc8
SS
308config CRYPTO_CRC32C
309 tristate "CRC32c CRC algorithm"
5773a3e6 310 select CRYPTO_HASH
4a49b499 311 help
584fffc8
SS
312 Castagnoli, et al Cyclic Redundancy-Check Algorithm. Used
313 by iSCSI for header and data digests and by others.
69c35efc 314 See Castagnoli93. Module will be crc32c.
4a49b499 315
8cb51ba8
AZ
316config CRYPTO_CRC32C_INTEL
317 tristate "CRC32c INTEL hardware acceleration"
318 depends on X86
319 select CRYPTO_HASH
320 help
321 In Intel processor with SSE4.2 supported, the processor will
322 support CRC32C implementation using hardware accelerated CRC32
323 instruction. This option will create 'crc32c-intel' module,
324 which will enable any routine to use the CRC32 instruction to
325 gain performance compared with software implementation.
326 Module will be crc32c-intel.
327
2cdc6899
HY
328config CRYPTO_GHASH
329 tristate "GHASH digest algorithm"
330 select CRYPTO_SHASH
331 select CRYPTO_GF128MUL
332 help
333 GHASH is message digest algorithm for GCM (Galois/Counter Mode).
334
584fffc8
SS
335config CRYPTO_MD4
336 tristate "MD4 digest algorithm"
808a1763 337 select CRYPTO_HASH
124b53d0 338 help
584fffc8 339 MD4 message digest algorithm (RFC1320).
124b53d0 340
584fffc8
SS
341config CRYPTO_MD5
342 tristate "MD5 digest algorithm"
14b75ba7 343 select CRYPTO_HASH
1da177e4 344 help
584fffc8 345 MD5 message digest algorithm (RFC1321).
1da177e4 346
584fffc8
SS
347config CRYPTO_MICHAEL_MIC
348 tristate "Michael MIC keyed digest algorithm"
19e2bf14 349 select CRYPTO_HASH
90831639 350 help
584fffc8
SS
351 Michael MIC is used for message integrity protection in TKIP
352 (IEEE 802.11i). This algorithm is required for TKIP, but it
353 should not be used for other purposes because of the weakness
354 of the algorithm.
90831639 355
82798f90 356config CRYPTO_RMD128
b6d44341 357 tristate "RIPEMD-128 digest algorithm"
7c4468bc 358 select CRYPTO_HASH
b6d44341
AB
359 help
360 RIPEMD-128 (ISO/IEC 10118-3:2004).
82798f90 361
b6d44341 362 RIPEMD-128 is a 128-bit cryptographic hash function. It should only
35ed4b35 363 be used as a secure replacement for RIPEMD. For other use cases,
b6d44341 364 RIPEMD-160 should be used.
82798f90 365
b6d44341 366 Developed by Hans Dobbertin, Antoon Bosselaers and Bart Preneel.
6d8de74c 367 See <http://homes.esat.kuleuven.be/~bosselae/ripemd160.html>
82798f90
AKR
368
369config CRYPTO_RMD160
b6d44341 370 tristate "RIPEMD-160 digest algorithm"
e5835fba 371 select CRYPTO_HASH
b6d44341
AB
372 help
373 RIPEMD-160 (ISO/IEC 10118-3:2004).
82798f90 374
b6d44341
AB
375 RIPEMD-160 is a 160-bit cryptographic hash function. It is intended
376 to be used as a secure replacement for the 128-bit hash functions
377 MD4, MD5 and it's predecessor RIPEMD
378 (not to be confused with RIPEMD-128).
82798f90 379
b6d44341
AB
380 It's speed is comparable to SHA1 and there are no known attacks
381 against RIPEMD-160.
534fe2c1 382
b6d44341 383 Developed by Hans Dobbertin, Antoon Bosselaers and Bart Preneel.
6d8de74c 384 See <http://homes.esat.kuleuven.be/~bosselae/ripemd160.html>
534fe2c1
AKR
385
386config CRYPTO_RMD256
b6d44341 387 tristate "RIPEMD-256 digest algorithm"
d8a5e2e9 388 select CRYPTO_HASH
b6d44341
AB
389 help
390 RIPEMD-256 is an optional extension of RIPEMD-128 with a
391 256 bit hash. It is intended for applications that require
392 longer hash-results, without needing a larger security level
393 (than RIPEMD-128).
534fe2c1 394
b6d44341 395 Developed by Hans Dobbertin, Antoon Bosselaers and Bart Preneel.
6d8de74c 396 See <http://homes.esat.kuleuven.be/~bosselae/ripemd160.html>
534fe2c1
AKR
397
398config CRYPTO_RMD320
b6d44341 399 tristate "RIPEMD-320 digest algorithm"
3b8efb4c 400 select CRYPTO_HASH
b6d44341
AB
401 help
402 RIPEMD-320 is an optional extension of RIPEMD-160 with a
403 320 bit hash. It is intended for applications that require
404 longer hash-results, without needing a larger security level
405 (than RIPEMD-160).
534fe2c1 406
b6d44341 407 Developed by Hans Dobbertin, Antoon Bosselaers and Bart Preneel.
6d8de74c 408 See <http://homes.esat.kuleuven.be/~bosselae/ripemd160.html>
82798f90 409
584fffc8
SS
410config CRYPTO_SHA1
411 tristate "SHA1 digest algorithm"
54ccb367 412 select CRYPTO_HASH
1da177e4 413 help
584fffc8 414 SHA-1 secure hash standard (FIPS 180-1/DFIPS 180-2).
1da177e4 415
66be8951
MK
416config CRYPTO_SHA1_SSSE3
417 tristate "SHA1 digest algorithm (SSSE3/AVX)"
418 depends on X86 && 64BIT
419 select CRYPTO_SHA1
420 select CRYPTO_HASH
421 help
422 SHA-1 secure hash standard (FIPS 180-1/DFIPS 180-2) implemented
423 using Supplemental SSE3 (SSSE3) instructions or Advanced Vector
424 Extensions (AVX), when available.
425
584fffc8
SS
426config CRYPTO_SHA256
427 tristate "SHA224 and SHA256 digest algorithm"
50e109b5 428 select CRYPTO_HASH
1da177e4 429 help
584fffc8 430 SHA256 secure hash standard (DFIPS 180-2).
1da177e4 431
584fffc8
SS
432 This version of SHA implements a 256 bit hash with 128 bits of
433 security against collision attacks.
2729bb42 434
b6d44341
AB
435 This code also includes SHA-224, a 224 bit hash with 112 bits
436 of security against collision attacks.
584fffc8
SS
437
438config CRYPTO_SHA512
439 tristate "SHA384 and SHA512 digest algorithms"
bd9d20db 440 select CRYPTO_HASH
b9f535ff 441 help
584fffc8 442 SHA512 secure hash standard (DFIPS 180-2).
b9f535ff 443
584fffc8
SS
444 This version of SHA implements a 512 bit hash with 256 bits of
445 security against collision attacks.
b9f535ff 446
584fffc8
SS
447 This code also includes SHA-384, a 384 bit hash with 192 bits
448 of security against collision attacks.
b9f535ff 449
584fffc8
SS
450config CRYPTO_TGR192
451 tristate "Tiger digest algorithms"
f63fbd3d 452 select CRYPTO_HASH
eaf44088 453 help
584fffc8 454 Tiger hash algorithm 192, 160 and 128-bit hashes
eaf44088 455
584fffc8
SS
456 Tiger is a hash function optimized for 64-bit processors while
457 still having decent performance on 32-bit processors.
458 Tiger was developed by Ross Anderson and Eli Biham.
eaf44088
JF
459
460 See also:
584fffc8 461 <http://www.cs.technion.ac.il/~biham/Reports/Tiger/>.
eaf44088 462
584fffc8
SS
463config CRYPTO_WP512
464 tristate "Whirlpool digest algorithms"
4946510b 465 select CRYPTO_HASH
1da177e4 466 help
584fffc8 467 Whirlpool hash algorithm 512, 384 and 256-bit hashes
1da177e4 468
584fffc8
SS
469 Whirlpool-512 is part of the NESSIE cryptographic primitives.
470 Whirlpool will be part of the ISO/IEC 10118-3:2003(E) standard
1da177e4
LT
471
472 See also:
6d8de74c 473 <http://www.larc.usp.br/~pbarreto/WhirlpoolPage.html>
584fffc8 474
0e1227d3
HY
475config CRYPTO_GHASH_CLMUL_NI_INTEL
476 tristate "GHASH digest algorithm (CLMUL-NI accelerated)"
8af00860 477 depends on X86 && 64BIT
0e1227d3
HY
478 select CRYPTO_SHASH
479 select CRYPTO_CRYPTD
480 help
481 GHASH is message digest algorithm for GCM (Galois/Counter Mode).
482 The implementation is accelerated by CLMUL-NI of Intel.
483
584fffc8 484comment "Ciphers"
1da177e4
LT
485
486config CRYPTO_AES
487 tristate "AES cipher algorithms"
cce9e06d 488 select CRYPTO_ALGAPI
1da177e4 489 help
584fffc8 490 AES cipher algorithms (FIPS-197). AES uses the Rijndael
1da177e4
LT
491 algorithm.
492
493 Rijndael appears to be consistently a very good performer in
584fffc8
SS
494 both hardware and software across a wide range of computing
495 environments regardless of its use in feedback or non-feedback
496 modes. Its key setup time is excellent, and its key agility is
497 good. Rijndael's very low memory requirements make it very well
498 suited for restricted-space environments, in which it also
499 demonstrates excellent performance. Rijndael's operations are
500 among the easiest to defend against power and timing attacks.
1da177e4 501
584fffc8 502 The AES specifies three key sizes: 128, 192 and 256 bits
1da177e4
LT
503
504 See <http://csrc.nist.gov/CryptoToolkit/aes/> for more information.
505
506config CRYPTO_AES_586
507 tristate "AES cipher algorithms (i586)"
cce9e06d
HX
508 depends on (X86 || UML_X86) && !64BIT
509 select CRYPTO_ALGAPI
5157dea8 510 select CRYPTO_AES
1da177e4 511 help
584fffc8 512 AES cipher algorithms (FIPS-197). AES uses the Rijndael
1da177e4
LT
513 algorithm.
514
515 Rijndael appears to be consistently a very good performer in
584fffc8
SS
516 both hardware and software across a wide range of computing
517 environments regardless of its use in feedback or non-feedback
518 modes. Its key setup time is excellent, and its key agility is
519 good. Rijndael's very low memory requirements make it very well
520 suited for restricted-space environments, in which it also
521 demonstrates excellent performance. Rijndael's operations are
522 among the easiest to defend against power and timing attacks.
1da177e4 523
584fffc8 524 The AES specifies three key sizes: 128, 192 and 256 bits
a2a892a2
AS
525
526 See <http://csrc.nist.gov/encryption/aes/> for more information.
527
528config CRYPTO_AES_X86_64
529 tristate "AES cipher algorithms (x86_64)"
cce9e06d
HX
530 depends on (X86 || UML_X86) && 64BIT
531 select CRYPTO_ALGAPI
81190b32 532 select CRYPTO_AES
a2a892a2 533 help
584fffc8 534 AES cipher algorithms (FIPS-197). AES uses the Rijndael
a2a892a2
AS
535 algorithm.
536
537 Rijndael appears to be consistently a very good performer in
584fffc8
SS
538 both hardware and software across a wide range of computing
539 environments regardless of its use in feedback or non-feedback
540 modes. Its key setup time is excellent, and its key agility is
54b6a1bd
HY
541 good. Rijndael's very low memory requirements make it very well
542 suited for restricted-space environments, in which it also
543 demonstrates excellent performance. Rijndael's operations are
544 among the easiest to defend against power and timing attacks.
545
546 The AES specifies three key sizes: 128, 192 and 256 bits
547
548 See <http://csrc.nist.gov/encryption/aes/> for more information.
549
550config CRYPTO_AES_NI_INTEL
551 tristate "AES cipher algorithms (AES-NI)"
8af00860 552 depends on X86
0d258efb
MK
553 select CRYPTO_AES_X86_64 if 64BIT
554 select CRYPTO_AES_586 if !64BIT
54b6a1bd
HY
555 select CRYPTO_CRYPTD
556 select CRYPTO_ALGAPI
557 help
558 Use Intel AES-NI instructions for AES algorithm.
559
560 AES cipher algorithms (FIPS-197). AES uses the Rijndael
561 algorithm.
562
563 Rijndael appears to be consistently a very good performer in
564 both hardware and software across a wide range of computing
565 environments regardless of its use in feedback or non-feedback
566 modes. Its key setup time is excellent, and its key agility is
584fffc8
SS
567 good. Rijndael's very low memory requirements make it very well
568 suited for restricted-space environments, in which it also
569 demonstrates excellent performance. Rijndael's operations are
570 among the easiest to defend against power and timing attacks.
a2a892a2 571
584fffc8 572 The AES specifies three key sizes: 128, 192 and 256 bits
1da177e4
LT
573
574 See <http://csrc.nist.gov/encryption/aes/> for more information.
575
0d258efb
MK
576 In addition to AES cipher algorithm support, the acceleration
577 for some popular block cipher mode is supported too, including
578 ECB, CBC, LRW, PCBC, XTS. The 64 bit version has additional
579 acceleration for CTR.
2cf4ac8b 580
584fffc8
SS
581config CRYPTO_ANUBIS
582 tristate "Anubis cipher algorithm"
583 select CRYPTO_ALGAPI
584 help
585 Anubis cipher algorithm.
586
587 Anubis is a variable key length cipher which can use keys from
588 128 bits to 320 bits in length. It was evaluated as a entrant
589 in the NESSIE competition.
590
591 See also:
6d8de74c
JM
592 <https://www.cosic.esat.kuleuven.be/nessie/reports/>
593 <http://www.larc.usp.br/~pbarreto/AnubisPage.html>
584fffc8
SS
594
595config CRYPTO_ARC4
596 tristate "ARC4 cipher algorithm"
597 select CRYPTO_ALGAPI
598 help
599 ARC4 cipher algorithm.
600
601 ARC4 is a stream cipher using keys ranging from 8 bits to 2048
602 bits in length. This algorithm is required for driver-based
603 WEP, but it should not be for other purposes because of the
604 weakness of the algorithm.
605
606config CRYPTO_BLOWFISH
607 tristate "Blowfish cipher algorithm"
608 select CRYPTO_ALGAPI
52ba867c 609 select CRYPTO_BLOWFISH_COMMON
584fffc8
SS
610 help
611 Blowfish cipher algorithm, by Bruce Schneier.
612
613 This is a variable key length cipher which can use keys from 32
614 bits to 448 bits in length. It's fast, simple and specifically
615 designed for use on "large microprocessors".
616
617 See also:
618 <http://www.schneier.com/blowfish.html>
619
52ba867c
JK
620config CRYPTO_BLOWFISH_COMMON
621 tristate
622 help
623 Common parts of the Blowfish cipher algorithm shared by the
624 generic c and the assembler implementations.
625
626 See also:
627 <http://www.schneier.com/blowfish.html>
628
64b94cea
JK
629config CRYPTO_BLOWFISH_X86_64
630 tristate "Blowfish cipher algorithm (x86_64)"
631 depends on (X86 || UML_X86) && 64BIT
632 select CRYPTO_ALGAPI
633 select CRYPTO_BLOWFISH_COMMON
634 help
635 Blowfish cipher algorithm (x86_64), by Bruce Schneier.
636
637 This is a variable key length cipher which can use keys from 32
638 bits to 448 bits in length. It's fast, simple and specifically
639 designed for use on "large microprocessors".
640
641 See also:
642 <http://www.schneier.com/blowfish.html>
643
584fffc8
SS
644config CRYPTO_CAMELLIA
645 tristate "Camellia cipher algorithms"
646 depends on CRYPTO
647 select CRYPTO_ALGAPI
648 help
649 Camellia cipher algorithms module.
650
651 Camellia is a symmetric key block cipher developed jointly
652 at NTT and Mitsubishi Electric Corporation.
653
654 The Camellia specifies three key sizes: 128, 192 and 256 bits.
655
656 See also:
657 <https://info.isl.ntt.co.jp/crypt/eng/camellia/index_s.html>
658
1da177e4
LT
659config CRYPTO_CAST5
660 tristate "CAST5 (CAST-128) cipher algorithm"
cce9e06d 661 select CRYPTO_ALGAPI
1da177e4
LT
662 help
663 The CAST5 encryption algorithm (synonymous with CAST-128) is
664 described in RFC2144.
665
666config CRYPTO_CAST6
667 tristate "CAST6 (CAST-256) cipher algorithm"
cce9e06d 668 select CRYPTO_ALGAPI
1da177e4
LT
669 help
670 The CAST6 encryption algorithm (synonymous with CAST-256) is
671 described in RFC2612.
672
584fffc8
SS
673config CRYPTO_DES
674 tristate "DES and Triple DES EDE cipher algorithms"
cce9e06d 675 select CRYPTO_ALGAPI
1da177e4 676 help
584fffc8 677 DES cipher algorithm (FIPS 46-2), and Triple DES EDE (FIPS 46-3).
fb4f10ed 678
584fffc8
SS
679config CRYPTO_FCRYPT
680 tristate "FCrypt cipher algorithm"
cce9e06d 681 select CRYPTO_ALGAPI
584fffc8 682 select CRYPTO_BLKCIPHER
1da177e4 683 help
584fffc8 684 FCrypt algorithm used by RxRPC.
1da177e4
LT
685
686config CRYPTO_KHAZAD
687 tristate "Khazad cipher algorithm"
cce9e06d 688 select CRYPTO_ALGAPI
1da177e4
LT
689 help
690 Khazad cipher algorithm.
691
692 Khazad was a finalist in the initial NESSIE competition. It is
693 an algorithm optimized for 64-bit processors with good performance
694 on 32-bit processors. Khazad uses an 128 bit key size.
695
696 See also:
6d8de74c 697 <http://www.larc.usp.br/~pbarreto/KhazadPage.html>
1da177e4 698
2407d608
TSH
699config CRYPTO_SALSA20
700 tristate "Salsa20 stream cipher algorithm (EXPERIMENTAL)"
701 depends on EXPERIMENTAL
702 select CRYPTO_BLKCIPHER
703 help
704 Salsa20 stream cipher algorithm.
705
706 Salsa20 is a stream cipher submitted to eSTREAM, the ECRYPT
707 Stream Cipher Project. See <http://www.ecrypt.eu.org/stream/>
974e4b75
TSH
708
709 The Salsa20 stream cipher algorithm is designed by Daniel J.
710 Bernstein <djb@cr.yp.to>. See <http://cr.yp.to/snuffle.html>
711
712config CRYPTO_SALSA20_586
713 tristate "Salsa20 stream cipher algorithm (i586) (EXPERIMENTAL)"
714 depends on (X86 || UML_X86) && !64BIT
715 depends on EXPERIMENTAL
716 select CRYPTO_BLKCIPHER
974e4b75
TSH
717 help
718 Salsa20 stream cipher algorithm.
719
720 Salsa20 is a stream cipher submitted to eSTREAM, the ECRYPT
721 Stream Cipher Project. See <http://www.ecrypt.eu.org/stream/>
9a7dafbb
TSH
722
723 The Salsa20 stream cipher algorithm is designed by Daniel J.
724 Bernstein <djb@cr.yp.to>. See <http://cr.yp.to/snuffle.html>
725
726config CRYPTO_SALSA20_X86_64
727 tristate "Salsa20 stream cipher algorithm (x86_64) (EXPERIMENTAL)"
728 depends on (X86 || UML_X86) && 64BIT
729 depends on EXPERIMENTAL
730 select CRYPTO_BLKCIPHER
9a7dafbb
TSH
731 help
732 Salsa20 stream cipher algorithm.
733
734 Salsa20 is a stream cipher submitted to eSTREAM, the ECRYPT
735 Stream Cipher Project. See <http://www.ecrypt.eu.org/stream/>
2407d608
TSH
736
737 The Salsa20 stream cipher algorithm is designed by Daniel J.
738 Bernstein <djb@cr.yp.to>. See <http://cr.yp.to/snuffle.html>
1da177e4 739
584fffc8
SS
740config CRYPTO_SEED
741 tristate "SEED cipher algorithm"
cce9e06d 742 select CRYPTO_ALGAPI
1da177e4 743 help
584fffc8 744 SEED cipher algorithm (RFC4269).
1da177e4 745
584fffc8
SS
746 SEED is a 128-bit symmetric key block cipher that has been
747 developed by KISA (Korea Information Security Agency) as a
748 national standard encryption algorithm of the Republic of Korea.
749 It is a 16 round block cipher with the key size of 128 bit.
750
751 See also:
752 <http://www.kisa.or.kr/kisa/seed/jsp/seed_eng.jsp>
753
754config CRYPTO_SERPENT
755 tristate "Serpent cipher algorithm"
cce9e06d 756 select CRYPTO_ALGAPI
1da177e4 757 help
584fffc8 758 Serpent cipher algorithm, by Anderson, Biham & Knudsen.
1da177e4 759
584fffc8
SS
760 Keys are allowed to be from 0 to 256 bits in length, in steps
761 of 8 bits. Also includes the 'Tnepres' algorithm, a reversed
762 variant of Serpent for compatibility with old kerneli.org code.
763
764 See also:
765 <http://www.cl.cam.ac.uk/~rja14/serpent.html>
766
937c30d7
JK
767config CRYPTO_SERPENT_SSE2_X86_64
768 tristate "Serpent cipher algorithm (x86_64/SSE2)"
769 depends on X86 && 64BIT
770 select CRYPTO_ALGAPI
341975bf 771 select CRYPTO_CRYPTD
937c30d7 772 select CRYPTO_SERPENT
feaf0cfc
JK
773 select CRYPTO_LRW
774 select CRYPTO_XTS
937c30d7
JK
775 help
776 Serpent cipher algorithm, by Anderson, Biham & Knudsen.
777
778 Keys are allowed to be from 0 to 256 bits in length, in steps
779 of 8 bits.
780
781 This module provides Serpent cipher algorithm that processes eigth
782 blocks parallel using SSE2 instruction set.
783
784 See also:
785 <http://www.cl.cam.ac.uk/~rja14/serpent.html>
786
251496db
JK
787config CRYPTO_SERPENT_SSE2_586
788 tristate "Serpent cipher algorithm (i586/SSE2)"
789 depends on X86 && !64BIT
790 select CRYPTO_ALGAPI
341975bf 791 select CRYPTO_CRYPTD
251496db 792 select CRYPTO_SERPENT
feaf0cfc
JK
793 select CRYPTO_LRW
794 select CRYPTO_XTS
251496db
JK
795 help
796 Serpent cipher algorithm, by Anderson, Biham & Knudsen.
797
798 Keys are allowed to be from 0 to 256 bits in length, in steps
799 of 8 bits.
800
801 This module provides Serpent cipher algorithm that processes four
802 blocks parallel using SSE2 instruction set.
803
804 See also:
805 <http://www.cl.cam.ac.uk/~rja14/serpent.html>
806
584fffc8
SS
807config CRYPTO_TEA
808 tristate "TEA, XTEA and XETA cipher algorithms"
cce9e06d 809 select CRYPTO_ALGAPI
1da177e4 810 help
584fffc8 811 TEA cipher algorithm.
1da177e4 812
584fffc8
SS
813 Tiny Encryption Algorithm is a simple cipher that uses
814 many rounds for security. It is very fast and uses
815 little memory.
816
817 Xtendend Tiny Encryption Algorithm is a modification to
818 the TEA algorithm to address a potential key weakness
819 in the TEA algorithm.
820
821 Xtendend Encryption Tiny Algorithm is a mis-implementation
822 of the XTEA algorithm for compatibility purposes.
823
824config CRYPTO_TWOFISH
825 tristate "Twofish cipher algorithm"
04ac7db3 826 select CRYPTO_ALGAPI
584fffc8 827 select CRYPTO_TWOFISH_COMMON
04ac7db3 828 help
584fffc8 829 Twofish cipher algorithm.
04ac7db3 830
584fffc8
SS
831 Twofish was submitted as an AES (Advanced Encryption Standard)
832 candidate cipher by researchers at CounterPane Systems. It is a
833 16 round block cipher supporting key sizes of 128, 192, and 256
834 bits.
04ac7db3 835
584fffc8
SS
836 See also:
837 <http://www.schneier.com/twofish.html>
838
839config CRYPTO_TWOFISH_COMMON
840 tristate
841 help
842 Common parts of the Twofish cipher algorithm shared by the
843 generic c and the assembler implementations.
844
845config CRYPTO_TWOFISH_586
846 tristate "Twofish cipher algorithms (i586)"
847 depends on (X86 || UML_X86) && !64BIT
848 select CRYPTO_ALGAPI
849 select CRYPTO_TWOFISH_COMMON
850 help
851 Twofish cipher algorithm.
852
853 Twofish was submitted as an AES (Advanced Encryption Standard)
854 candidate cipher by researchers at CounterPane Systems. It is a
855 16 round block cipher supporting key sizes of 128, 192, and 256
856 bits.
04ac7db3
NT
857
858 See also:
584fffc8 859 <http://www.schneier.com/twofish.html>
04ac7db3 860
584fffc8
SS
861config CRYPTO_TWOFISH_X86_64
862 tristate "Twofish cipher algorithm (x86_64)"
863 depends on (X86 || UML_X86) && 64BIT
cce9e06d 864 select CRYPTO_ALGAPI
584fffc8 865 select CRYPTO_TWOFISH_COMMON
1da177e4 866 help
584fffc8 867 Twofish cipher algorithm (x86_64).
1da177e4 868
584fffc8
SS
869 Twofish was submitted as an AES (Advanced Encryption Standard)
870 candidate cipher by researchers at CounterPane Systems. It is a
871 16 round block cipher supporting key sizes of 128, 192, and 256
872 bits.
873
874 See also:
875 <http://www.schneier.com/twofish.html>
876
8280daad
JK
877config CRYPTO_TWOFISH_X86_64_3WAY
878 tristate "Twofish cipher algorithm (x86_64, 3-way parallel)"
879 depends on (X86 || UML_X86) && 64BIT
880 select CRYPTO_ALGAPI
881 select CRYPTO_TWOFISH_COMMON
882 select CRYPTO_TWOFISH_X86_64
e7cda5d2
JK
883 select CRYPTO_LRW
884 select CRYPTO_XTS
8280daad
JK
885 help
886 Twofish cipher algorithm (x86_64, 3-way parallel).
887
888 Twofish was submitted as an AES (Advanced Encryption Standard)
889 candidate cipher by researchers at CounterPane Systems. It is a
890 16 round block cipher supporting key sizes of 128, 192, and 256
891 bits.
892
893 This module provides Twofish cipher algorithm that processes three
894 blocks parallel, utilizing resources of out-of-order CPUs better.
895
896 See also:
897 <http://www.schneier.com/twofish.html>
898
584fffc8
SS
899comment "Compression"
900
901config CRYPTO_DEFLATE
902 tristate "Deflate compression algorithm"
903 select CRYPTO_ALGAPI
904 select ZLIB_INFLATE
905 select ZLIB_DEFLATE
3c09f17c 906 help
584fffc8
SS
907 This is the Deflate algorithm (RFC1951), specified for use in
908 IPSec with the IPCOMP protocol (RFC3173, RFC2394).
909
910 You will most probably want this if using IPSec.
3c09f17c 911
bf68e65e
GU
912config CRYPTO_ZLIB
913 tristate "Zlib compression algorithm"
914 select CRYPTO_PCOMP
915 select ZLIB_INFLATE
916 select ZLIB_DEFLATE
917 select NLATTR
918 help
919 This is the zlib algorithm.
920
0b77abb3
ZS
921config CRYPTO_LZO
922 tristate "LZO compression algorithm"
923 select CRYPTO_ALGAPI
924 select LZO_COMPRESS
925 select LZO_DECOMPRESS
926 help
927 This is the LZO algorithm.
928
17f0f4a4
NH
929comment "Random Number Generation"
930
931config CRYPTO_ANSI_CPRNG
932 tristate "Pseudo Random Number Generation for Cryptographic modules"
4e4ed83b 933 default m
17f0f4a4
NH
934 select CRYPTO_AES
935 select CRYPTO_RNG
17f0f4a4
NH
936 help
937 This option enables the generic pseudo random number generator
938 for cryptographic modules. Uses the Algorithm specified in
7dd607e8
JK
939 ANSI X9.31 A.2.4. Note that this option must be enabled if
940 CRYPTO_FIPS is selected
17f0f4a4 941
03c8efc1
HX
942config CRYPTO_USER_API
943 tristate
944
fe869cdb
HX
945config CRYPTO_USER_API_HASH
946 tristate "User-space interface for hash algorithms"
7451708f 947 depends on NET
fe869cdb
HX
948 select CRYPTO_HASH
949 select CRYPTO_USER_API
950 help
951 This option enables the user-spaces interface for hash
952 algorithms.
953
8ff59090
HX
954config CRYPTO_USER_API_SKCIPHER
955 tristate "User-space interface for symmetric key cipher algorithms"
7451708f 956 depends on NET
8ff59090
HX
957 select CRYPTO_BLKCIPHER
958 select CRYPTO_USER_API
959 help
960 This option enables the user-spaces interface for symmetric
961 key cipher algorithms.
962
1da177e4 963source "drivers/crypto/Kconfig"
1da177e4 964
cce9e06d 965endif # if CRYPTO