]> git.proxmox.com Git - mirror_ubuntu-zesty-kernel.git/blame - crypto/Kconfig
crypto: mv_cesa - fix for hash finalisation with data
[mirror_ubuntu-zesty-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 119config CRYPTO_GF128MUL
08c70fc3 120 tristate "GF(2^128) multiplication functions"
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
6a0962b2 311 select CRC32
4a49b499 312 help
584fffc8
SS
313 Castagnoli, et al Cyclic Redundancy-Check Algorithm. Used
314 by iSCSI for header and data digests and by others.
69c35efc 315 See Castagnoli93. Module will be crc32c.
4a49b499 316
8cb51ba8
AZ
317config CRYPTO_CRC32C_INTEL
318 tristate "CRC32c INTEL hardware acceleration"
319 depends on X86
320 select CRYPTO_HASH
321 help
322 In Intel processor with SSE4.2 supported, the processor will
323 support CRC32C implementation using hardware accelerated CRC32
324 instruction. This option will create 'crc32c-intel' module,
325 which will enable any routine to use the CRC32 instruction to
326 gain performance compared with software implementation.
327 Module will be crc32c-intel.
328
2cdc6899
HY
329config CRYPTO_GHASH
330 tristate "GHASH digest algorithm"
2cdc6899
HY
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_CRYPTD
479 help
480 GHASH is message digest algorithm for GCM (Galois/Counter Mode).
481 The implementation is accelerated by CLMUL-NI of Intel.
482
584fffc8 483comment "Ciphers"
1da177e4
LT
484
485config CRYPTO_AES
486 tristate "AES cipher algorithms"
cce9e06d 487 select CRYPTO_ALGAPI
1da177e4 488 help
584fffc8 489 AES cipher algorithms (FIPS-197). AES uses the Rijndael
1da177e4
LT
490 algorithm.
491
492 Rijndael appears to be consistently a very good performer in
584fffc8
SS
493 both hardware and software across a wide range of computing
494 environments regardless of its use in feedback or non-feedback
495 modes. Its key setup time is excellent, and its key agility is
496 good. Rijndael's very low memory requirements make it very well
497 suited for restricted-space environments, in which it also
498 demonstrates excellent performance. Rijndael's operations are
499 among the easiest to defend against power and timing attacks.
1da177e4 500
584fffc8 501 The AES specifies three key sizes: 128, 192 and 256 bits
1da177e4
LT
502
503 See <http://csrc.nist.gov/CryptoToolkit/aes/> for more information.
504
505config CRYPTO_AES_586
506 tristate "AES cipher algorithms (i586)"
cce9e06d
HX
507 depends on (X86 || UML_X86) && !64BIT
508 select CRYPTO_ALGAPI
5157dea8 509 select CRYPTO_AES
1da177e4 510 help
584fffc8 511 AES cipher algorithms (FIPS-197). AES uses the Rijndael
1da177e4
LT
512 algorithm.
513
514 Rijndael appears to be consistently a very good performer in
584fffc8
SS
515 both hardware and software across a wide range of computing
516 environments regardless of its use in feedback or non-feedback
517 modes. Its key setup time is excellent, and its key agility is
518 good. Rijndael's very low memory requirements make it very well
519 suited for restricted-space environments, in which it also
520 demonstrates excellent performance. Rijndael's operations are
521 among the easiest to defend against power and timing attacks.
1da177e4 522
584fffc8 523 The AES specifies three key sizes: 128, 192 and 256 bits
a2a892a2
AS
524
525 See <http://csrc.nist.gov/encryption/aes/> for more information.
526
527config CRYPTO_AES_X86_64
528 tristate "AES cipher algorithms (x86_64)"
cce9e06d
HX
529 depends on (X86 || UML_X86) && 64BIT
530 select CRYPTO_ALGAPI
81190b32 531 select CRYPTO_AES
a2a892a2 532 help
584fffc8 533 AES cipher algorithms (FIPS-197). AES uses the Rijndael
a2a892a2
AS
534 algorithm.
535
536 Rijndael appears to be consistently a very good performer in
584fffc8
SS
537 both hardware and software across a wide range of computing
538 environments regardless of its use in feedback or non-feedback
539 modes. Its key setup time is excellent, and its key agility is
54b6a1bd
HY
540 good. Rijndael's very low memory requirements make it very well
541 suited for restricted-space environments, in which it also
542 demonstrates excellent performance. Rijndael's operations are
543 among the easiest to defend against power and timing attacks.
544
545 The AES specifies three key sizes: 128, 192 and 256 bits
546
547 See <http://csrc.nist.gov/encryption/aes/> for more information.
548
549config CRYPTO_AES_NI_INTEL
550 tristate "AES cipher algorithms (AES-NI)"
8af00860 551 depends on X86
0d258efb
MK
552 select CRYPTO_AES_X86_64 if 64BIT
553 select CRYPTO_AES_586 if !64BIT
54b6a1bd
HY
554 select CRYPTO_CRYPTD
555 select CRYPTO_ALGAPI
556 help
557 Use Intel AES-NI instructions for AES algorithm.
558
559 AES cipher algorithms (FIPS-197). AES uses the Rijndael
560 algorithm.
561
562 Rijndael appears to be consistently a very good performer in
563 both hardware and software across a wide range of computing
564 environments regardless of its use in feedback or non-feedback
565 modes. Its key setup time is excellent, and its key agility is
584fffc8
SS
566 good. Rijndael's very low memory requirements make it very well
567 suited for restricted-space environments, in which it also
568 demonstrates excellent performance. Rijndael's operations are
569 among the easiest to defend against power and timing attacks.
a2a892a2 570
584fffc8 571 The AES specifies three key sizes: 128, 192 and 256 bits
1da177e4
LT
572
573 See <http://csrc.nist.gov/encryption/aes/> for more information.
574
0d258efb
MK
575 In addition to AES cipher algorithm support, the acceleration
576 for some popular block cipher mode is supported too, including
577 ECB, CBC, LRW, PCBC, XTS. The 64 bit version has additional
578 acceleration for CTR.
2cf4ac8b 579
584fffc8
SS
580config CRYPTO_ANUBIS
581 tristate "Anubis cipher algorithm"
582 select CRYPTO_ALGAPI
583 help
584 Anubis cipher algorithm.
585
586 Anubis is a variable key length cipher which can use keys from
587 128 bits to 320 bits in length. It was evaluated as a entrant
588 in the NESSIE competition.
589
590 See also:
6d8de74c
JM
591 <https://www.cosic.esat.kuleuven.be/nessie/reports/>
592 <http://www.larc.usp.br/~pbarreto/AnubisPage.html>
584fffc8
SS
593
594config CRYPTO_ARC4
595 tristate "ARC4 cipher algorithm"
596 select CRYPTO_ALGAPI
597 help
598 ARC4 cipher algorithm.
599
600 ARC4 is a stream cipher using keys ranging from 8 bits to 2048
601 bits in length. This algorithm is required for driver-based
602 WEP, but it should not be for other purposes because of the
603 weakness of the algorithm.
604
605config CRYPTO_BLOWFISH
606 tristate "Blowfish cipher algorithm"
607 select CRYPTO_ALGAPI
52ba867c 608 select CRYPTO_BLOWFISH_COMMON
584fffc8
SS
609 help
610 Blowfish cipher algorithm, by Bruce Schneier.
611
612 This is a variable key length cipher which can use keys from 32
613 bits to 448 bits in length. It's fast, simple and specifically
614 designed for use on "large microprocessors".
615
616 See also:
617 <http://www.schneier.com/blowfish.html>
618
52ba867c
JK
619config CRYPTO_BLOWFISH_COMMON
620 tristate
621 help
622 Common parts of the Blowfish cipher algorithm shared by the
623 generic c and the assembler implementations.
624
625 See also:
626 <http://www.schneier.com/blowfish.html>
627
64b94cea
JK
628config CRYPTO_BLOWFISH_X86_64
629 tristate "Blowfish cipher algorithm (x86_64)"
f21a7c19 630 depends on X86 && 64BIT
64b94cea
JK
631 select CRYPTO_ALGAPI
632 select CRYPTO_BLOWFISH_COMMON
633 help
634 Blowfish cipher algorithm (x86_64), by Bruce Schneier.
635
636 This is a variable key length cipher which can use keys from 32
637 bits to 448 bits in length. It's fast, simple and specifically
638 designed for use on "large microprocessors".
639
640 See also:
641 <http://www.schneier.com/blowfish.html>
642
584fffc8
SS
643config CRYPTO_CAMELLIA
644 tristate "Camellia cipher algorithms"
645 depends on CRYPTO
646 select CRYPTO_ALGAPI
647 help
648 Camellia cipher algorithms module.
649
650 Camellia is a symmetric key block cipher developed jointly
651 at NTT and Mitsubishi Electric Corporation.
652
653 The Camellia specifies three key sizes: 128, 192 and 256 bits.
654
655 See also:
656 <https://info.isl.ntt.co.jp/crypt/eng/camellia/index_s.html>
657
0b95ec56
JK
658config CRYPTO_CAMELLIA_X86_64
659 tristate "Camellia cipher algorithm (x86_64)"
f21a7c19 660 depends on X86 && 64BIT
0b95ec56
JK
661 depends on CRYPTO
662 select CRYPTO_ALGAPI
663 select CRYPTO_LRW
664 select CRYPTO_XTS
665 help
666 Camellia cipher algorithm module (x86_64).
667
668 Camellia is a symmetric key block cipher developed jointly
669 at NTT and Mitsubishi Electric Corporation.
670
671 The Camellia specifies three key sizes: 128, 192 and 256 bits.
672
673 See also:
674 <https://info.isl.ntt.co.jp/crypt/eng/camellia/index_s.html>
675
1da177e4
LT
676config CRYPTO_CAST5
677 tristate "CAST5 (CAST-128) cipher algorithm"
cce9e06d 678 select CRYPTO_ALGAPI
1da177e4
LT
679 help
680 The CAST5 encryption algorithm (synonymous with CAST-128) is
681 described in RFC2144.
682
683config CRYPTO_CAST6
684 tristate "CAST6 (CAST-256) cipher algorithm"
cce9e06d 685 select CRYPTO_ALGAPI
1da177e4
LT
686 help
687 The CAST6 encryption algorithm (synonymous with CAST-256) is
688 described in RFC2612.
689
584fffc8
SS
690config CRYPTO_DES
691 tristate "DES and Triple DES EDE cipher algorithms"
cce9e06d 692 select CRYPTO_ALGAPI
1da177e4 693 help
584fffc8 694 DES cipher algorithm (FIPS 46-2), and Triple DES EDE (FIPS 46-3).
fb4f10ed 695
584fffc8
SS
696config CRYPTO_FCRYPT
697 tristate "FCrypt cipher algorithm"
cce9e06d 698 select CRYPTO_ALGAPI
584fffc8 699 select CRYPTO_BLKCIPHER
1da177e4 700 help
584fffc8 701 FCrypt algorithm used by RxRPC.
1da177e4
LT
702
703config CRYPTO_KHAZAD
704 tristate "Khazad cipher algorithm"
cce9e06d 705 select CRYPTO_ALGAPI
1da177e4
LT
706 help
707 Khazad cipher algorithm.
708
709 Khazad was a finalist in the initial NESSIE competition. It is
710 an algorithm optimized for 64-bit processors with good performance
711 on 32-bit processors. Khazad uses an 128 bit key size.
712
713 See also:
6d8de74c 714 <http://www.larc.usp.br/~pbarreto/KhazadPage.html>
1da177e4 715
2407d608
TSH
716config CRYPTO_SALSA20
717 tristate "Salsa20 stream cipher algorithm (EXPERIMENTAL)"
718 depends on EXPERIMENTAL
719 select CRYPTO_BLKCIPHER
720 help
721 Salsa20 stream cipher algorithm.
722
723 Salsa20 is a stream cipher submitted to eSTREAM, the ECRYPT
724 Stream Cipher Project. See <http://www.ecrypt.eu.org/stream/>
974e4b75
TSH
725
726 The Salsa20 stream cipher algorithm is designed by Daniel J.
727 Bernstein <djb@cr.yp.to>. See <http://cr.yp.to/snuffle.html>
728
729config CRYPTO_SALSA20_586
730 tristate "Salsa20 stream cipher algorithm (i586) (EXPERIMENTAL)"
731 depends on (X86 || UML_X86) && !64BIT
732 depends on EXPERIMENTAL
733 select CRYPTO_BLKCIPHER
974e4b75
TSH
734 help
735 Salsa20 stream cipher algorithm.
736
737 Salsa20 is a stream cipher submitted to eSTREAM, the ECRYPT
738 Stream Cipher Project. See <http://www.ecrypt.eu.org/stream/>
9a7dafbb
TSH
739
740 The Salsa20 stream cipher algorithm is designed by Daniel J.
741 Bernstein <djb@cr.yp.to>. See <http://cr.yp.to/snuffle.html>
742
743config CRYPTO_SALSA20_X86_64
744 tristate "Salsa20 stream cipher algorithm (x86_64) (EXPERIMENTAL)"
745 depends on (X86 || UML_X86) && 64BIT
746 depends on EXPERIMENTAL
747 select CRYPTO_BLKCIPHER
9a7dafbb
TSH
748 help
749 Salsa20 stream cipher algorithm.
750
751 Salsa20 is a stream cipher submitted to eSTREAM, the ECRYPT
752 Stream Cipher Project. See <http://www.ecrypt.eu.org/stream/>
2407d608
TSH
753
754 The Salsa20 stream cipher algorithm is designed by Daniel J.
755 Bernstein <djb@cr.yp.to>. See <http://cr.yp.to/snuffle.html>
1da177e4 756
584fffc8
SS
757config CRYPTO_SEED
758 tristate "SEED cipher algorithm"
cce9e06d 759 select CRYPTO_ALGAPI
1da177e4 760 help
584fffc8 761 SEED cipher algorithm (RFC4269).
1da177e4 762
584fffc8
SS
763 SEED is a 128-bit symmetric key block cipher that has been
764 developed by KISA (Korea Information Security Agency) as a
765 national standard encryption algorithm of the Republic of Korea.
766 It is a 16 round block cipher with the key size of 128 bit.
767
768 See also:
769 <http://www.kisa.or.kr/kisa/seed/jsp/seed_eng.jsp>
770
771config CRYPTO_SERPENT
772 tristate "Serpent cipher algorithm"
cce9e06d 773 select CRYPTO_ALGAPI
1da177e4 774 help
584fffc8 775 Serpent cipher algorithm, by Anderson, Biham & Knudsen.
1da177e4 776
584fffc8
SS
777 Keys are allowed to be from 0 to 256 bits in length, in steps
778 of 8 bits. Also includes the 'Tnepres' algorithm, a reversed
779 variant of Serpent for compatibility with old kerneli.org code.
780
781 See also:
782 <http://www.cl.cam.ac.uk/~rja14/serpent.html>
783
937c30d7
JK
784config CRYPTO_SERPENT_SSE2_X86_64
785 tristate "Serpent cipher algorithm (x86_64/SSE2)"
786 depends on X86 && 64BIT
787 select CRYPTO_ALGAPI
341975bf 788 select CRYPTO_CRYPTD
937c30d7 789 select CRYPTO_SERPENT
feaf0cfc
JK
790 select CRYPTO_LRW
791 select CRYPTO_XTS
937c30d7
JK
792 help
793 Serpent cipher algorithm, by Anderson, Biham & Knudsen.
794
795 Keys are allowed to be from 0 to 256 bits in length, in steps
796 of 8 bits.
797
798 This module provides Serpent cipher algorithm that processes eigth
799 blocks parallel using SSE2 instruction set.
800
801 See also:
802 <http://www.cl.cam.ac.uk/~rja14/serpent.html>
803
251496db
JK
804config CRYPTO_SERPENT_SSE2_586
805 tristate "Serpent cipher algorithm (i586/SSE2)"
806 depends on X86 && !64BIT
807 select CRYPTO_ALGAPI
341975bf 808 select CRYPTO_CRYPTD
251496db 809 select CRYPTO_SERPENT
feaf0cfc
JK
810 select CRYPTO_LRW
811 select CRYPTO_XTS
251496db
JK
812 help
813 Serpent cipher algorithm, by Anderson, Biham & Knudsen.
814
815 Keys are allowed to be from 0 to 256 bits in length, in steps
816 of 8 bits.
817
818 This module provides Serpent cipher algorithm that processes four
819 blocks parallel using SSE2 instruction set.
820
821 See also:
822 <http://www.cl.cam.ac.uk/~rja14/serpent.html>
823
584fffc8
SS
824config CRYPTO_TEA
825 tristate "TEA, XTEA and XETA cipher algorithms"
cce9e06d 826 select CRYPTO_ALGAPI
1da177e4 827 help
584fffc8 828 TEA cipher algorithm.
1da177e4 829
584fffc8
SS
830 Tiny Encryption Algorithm is a simple cipher that uses
831 many rounds for security. It is very fast and uses
832 little memory.
833
834 Xtendend Tiny Encryption Algorithm is a modification to
835 the TEA algorithm to address a potential key weakness
836 in the TEA algorithm.
837
838 Xtendend Encryption Tiny Algorithm is a mis-implementation
839 of the XTEA algorithm for compatibility purposes.
840
841config CRYPTO_TWOFISH
842 tristate "Twofish cipher algorithm"
04ac7db3 843 select CRYPTO_ALGAPI
584fffc8 844 select CRYPTO_TWOFISH_COMMON
04ac7db3 845 help
584fffc8 846 Twofish cipher algorithm.
04ac7db3 847
584fffc8
SS
848 Twofish was submitted as an AES (Advanced Encryption Standard)
849 candidate cipher by researchers at CounterPane Systems. It is a
850 16 round block cipher supporting key sizes of 128, 192, and 256
851 bits.
04ac7db3 852
584fffc8
SS
853 See also:
854 <http://www.schneier.com/twofish.html>
855
856config CRYPTO_TWOFISH_COMMON
857 tristate
858 help
859 Common parts of the Twofish cipher algorithm shared by the
860 generic c and the assembler implementations.
861
862config CRYPTO_TWOFISH_586
863 tristate "Twofish cipher algorithms (i586)"
864 depends on (X86 || UML_X86) && !64BIT
865 select CRYPTO_ALGAPI
866 select CRYPTO_TWOFISH_COMMON
867 help
868 Twofish cipher algorithm.
869
870 Twofish was submitted as an AES (Advanced Encryption Standard)
871 candidate cipher by researchers at CounterPane Systems. It is a
872 16 round block cipher supporting key sizes of 128, 192, and 256
873 bits.
04ac7db3
NT
874
875 See also:
584fffc8 876 <http://www.schneier.com/twofish.html>
04ac7db3 877
584fffc8
SS
878config CRYPTO_TWOFISH_X86_64
879 tristate "Twofish cipher algorithm (x86_64)"
880 depends on (X86 || UML_X86) && 64BIT
cce9e06d 881 select CRYPTO_ALGAPI
584fffc8 882 select CRYPTO_TWOFISH_COMMON
1da177e4 883 help
584fffc8 884 Twofish cipher algorithm (x86_64).
1da177e4 885
584fffc8
SS
886 Twofish was submitted as an AES (Advanced Encryption Standard)
887 candidate cipher by researchers at CounterPane Systems. It is a
888 16 round block cipher supporting key sizes of 128, 192, and 256
889 bits.
890
891 See also:
892 <http://www.schneier.com/twofish.html>
893
8280daad
JK
894config CRYPTO_TWOFISH_X86_64_3WAY
895 tristate "Twofish cipher algorithm (x86_64, 3-way parallel)"
f21a7c19 896 depends on X86 && 64BIT
8280daad
JK
897 select CRYPTO_ALGAPI
898 select CRYPTO_TWOFISH_COMMON
899 select CRYPTO_TWOFISH_X86_64
e7cda5d2
JK
900 select CRYPTO_LRW
901 select CRYPTO_XTS
8280daad
JK
902 help
903 Twofish cipher algorithm (x86_64, 3-way parallel).
904
905 Twofish was submitted as an AES (Advanced Encryption Standard)
906 candidate cipher by researchers at CounterPane Systems. It is a
907 16 round block cipher supporting key sizes of 128, 192, and 256
908 bits.
909
910 This module provides Twofish cipher algorithm that processes three
911 blocks parallel, utilizing resources of out-of-order CPUs better.
912
913 See also:
914 <http://www.schneier.com/twofish.html>
915
584fffc8
SS
916comment "Compression"
917
918config CRYPTO_DEFLATE
919 tristate "Deflate compression algorithm"
920 select CRYPTO_ALGAPI
921 select ZLIB_INFLATE
922 select ZLIB_DEFLATE
3c09f17c 923 help
584fffc8
SS
924 This is the Deflate algorithm (RFC1951), specified for use in
925 IPSec with the IPCOMP protocol (RFC3173, RFC2394).
926
927 You will most probably want this if using IPSec.
3c09f17c 928
bf68e65e
GU
929config CRYPTO_ZLIB
930 tristate "Zlib compression algorithm"
931 select CRYPTO_PCOMP
932 select ZLIB_INFLATE
933 select ZLIB_DEFLATE
934 select NLATTR
935 help
936 This is the zlib algorithm.
937
0b77abb3
ZS
938config CRYPTO_LZO
939 tristate "LZO compression algorithm"
940 select CRYPTO_ALGAPI
941 select LZO_COMPRESS
942 select LZO_DECOMPRESS
943 help
944 This is the LZO algorithm.
945
17f0f4a4
NH
946comment "Random Number Generation"
947
948config CRYPTO_ANSI_CPRNG
949 tristate "Pseudo Random Number Generation for Cryptographic modules"
4e4ed83b 950 default m
17f0f4a4
NH
951 select CRYPTO_AES
952 select CRYPTO_RNG
17f0f4a4
NH
953 help
954 This option enables the generic pseudo random number generator
955 for cryptographic modules. Uses the Algorithm specified in
7dd607e8
JK
956 ANSI X9.31 A.2.4. Note that this option must be enabled if
957 CRYPTO_FIPS is selected
17f0f4a4 958
03c8efc1
HX
959config CRYPTO_USER_API
960 tristate
961
fe869cdb
HX
962config CRYPTO_USER_API_HASH
963 tristate "User-space interface for hash algorithms"
7451708f 964 depends on NET
fe869cdb
HX
965 select CRYPTO_HASH
966 select CRYPTO_USER_API
967 help
968 This option enables the user-spaces interface for hash
969 algorithms.
970
8ff59090
HX
971config CRYPTO_USER_API_SKCIPHER
972 tristate "User-space interface for symmetric key cipher algorithms"
7451708f 973 depends on NET
8ff59090
HX
974 select CRYPTO_BLKCIPHER
975 select CRYPTO_USER_API
976 help
977 This option enables the user-spaces interface for symmetric
978 key cipher algorithms.
979
1da177e4 980source "drivers/crypto/Kconfig"
1da177e4 981
cce9e06d 982endif # if CRYPTO