2 # Generic algorithms support
8 # async_tx api: hardware offloaded memory transfer/transform support
10 source "crypto/async_tx/Kconfig"
13 # Cryptographic API Configuration
16 tristate "Cryptographic API"
18 This option provides the core Cryptographic API.
22 comment "Crypto core or helper"
27 This option provides the API for cryptographic algorithms.
33 config CRYPTO_BLKCIPHER
42 tristate "Cryptographic algorithm manager"
45 Create default cryptographic template instantiations such as
48 config CRYPTO_GF128MUL
49 tristate "GF(2^128) multiplication functions (EXPERIMENTAL)"
50 depends on EXPERIMENTAL
52 Efficient table driven implementation of multiplications in the
53 field GF(2^128). This is needed by some cypher modes. This
54 option will be selected automatically if you select such a
55 cipher mode. Only select this option by hand if you expect to load
56 an external module that requires these functions.
59 tristate "Null algorithms"
61 select CRYPTO_BLKCIPHER
63 These are 'Null' algorithms, used by IPsec, which do nothing.
66 tristate "Software async crypto daemon"
67 select CRYPTO_BLKCIPHER
70 This is a generic software asynchronous crypto daemon that
71 converts an arbitrary synchronous software crypto algorithm
72 into an asynchronous algorithm that executes in a kernel thread.
75 tristate "Authenc support"
77 select CRYPTO_BLKCIPHER
81 Authenc: Combined mode wrapper for IPsec.
82 This is required for IPSec.
85 tristate "Testing module"
89 select CRYPTO_BLKCIPHER
91 Quick & dirty crypto test module.
93 comment "Authenticated Encryption with Associated Data"
96 tristate "CCM support"
100 Support for Counter with CBC MAC. Required for IPsec.
103 tristate "GCM/GMAC support"
106 select CRYPTO_GF128MUL
108 Support for Galois/Counter Mode (GCM) and Galois Message
109 Authentication Code (GMAC). Required for IPSec.
112 tristate "Sequence Number IV Generator"
114 select CRYPTO_BLKCIPHER
116 This IV generator generates an IV based on a sequence number by
117 xoring it with a salt. This algorithm is mainly useful for CTR
119 comment "Block modes"
122 tristate "CBC support"
123 select CRYPTO_BLKCIPHER
124 select CRYPTO_MANAGER
126 CBC: Cipher Block Chaining mode
127 This block cipher algorithm is required for IPSec.
130 tristate "CTR support"
131 select CRYPTO_BLKCIPHER
133 select CRYPTO_MANAGER
136 This block cipher algorithm is required for IPSec.
139 tristate "CTS support"
140 select CRYPTO_BLKCIPHER
142 CTS: Cipher Text Stealing
143 This is the Cipher Text Stealing mode as described by
144 Section 8 of rfc2040 and referenced by rfc3962.
145 (rfc3962 includes errata information in its Appendix A)
146 This mode is required for Kerberos gss mechanism support
150 tristate "ECB support"
151 select CRYPTO_BLKCIPHER
152 select CRYPTO_MANAGER
154 ECB: Electronic CodeBook mode
155 This is the simplest block cipher algorithm. It simply encrypts
156 the input block by block.
159 tristate "LRW support (EXPERIMENTAL)"
160 depends on EXPERIMENTAL
161 select CRYPTO_BLKCIPHER
162 select CRYPTO_MANAGER
163 select CRYPTO_GF128MUL
165 LRW: Liskov Rivest Wagner, a tweakable, non malleable, non movable
166 narrow block cipher mode for dm-crypt. Use it with cipher
167 specification string aes-lrw-benbi, the key must be 256, 320 or 384.
168 The first 128, 192 or 256 bits in the key are used for AES and the
169 rest is used to tie each cipher block to its logical position.
172 tristate "PCBC support"
173 select CRYPTO_BLKCIPHER
174 select CRYPTO_MANAGER
176 PCBC: Propagating Cipher Block Chaining mode
177 This block cipher algorithm is required for RxRPC.
180 tristate "XTS support (EXPERIMENTAL)"
181 depends on EXPERIMENTAL
182 select CRYPTO_BLKCIPHER
183 select CRYPTO_MANAGER
184 select CRYPTO_GF128MUL
186 XTS: IEEE1619/D16 narrow block cipher use with aes-xts-plain,
187 key size 256, 384 or 512 bits. This implementation currently
188 can't handle a sectorsize which is not a multiple of 16 bytes.
193 tristate "HMAC support"
195 select CRYPTO_MANAGER
197 HMAC: Keyed-Hashing for Message Authentication (RFC2104).
198 This is required for IPSec.
201 tristate "XCBC support"
202 depends on EXPERIMENTAL
204 select CRYPTO_MANAGER
206 XCBC: Keyed-Hashing with encryption algorithm
207 http://www.ietf.org/rfc/rfc3566.txt
208 http://csrc.nist.gov/encryption/modes/proposedmodes/
209 xcbc-mac/xcbc-mac-spec.pdf
214 tristate "CRC32c CRC algorithm"
218 Castagnoli, et al Cyclic Redundancy-Check Algorithm. Used
219 by iSCSI for header and data digests and by others.
220 See Castagnoli93. This implementation uses lib/libcrc32c.
221 Module will be crc32c.
224 tristate "MD4 digest algorithm"
227 MD4 message digest algorithm (RFC1320).
230 tristate "MD5 digest algorithm"
233 MD5 message digest algorithm (RFC1321).
235 config CRYPTO_MICHAEL_MIC
236 tristate "Michael MIC keyed digest algorithm"
239 Michael MIC is used for message integrity protection in TKIP
240 (IEEE 802.11i). This algorithm is required for TKIP, but it
241 should not be used for other purposes because of the weakness
245 tristate "SHA1 digest algorithm"
248 SHA-1 secure hash standard (FIPS 180-1/DFIPS 180-2).
251 tristate "SHA224 and SHA256 digest algorithm"
254 SHA256 secure hash standard (DFIPS 180-2).
256 This version of SHA implements a 256 bit hash with 128 bits of
257 security against collision attacks.
259 This code also includes SHA-224, a 224 bit hash with 112 bits
260 of security against collision attacks.
263 tristate "SHA384 and SHA512 digest algorithms"
266 SHA512 secure hash standard (DFIPS 180-2).
268 This version of SHA implements a 512 bit hash with 256 bits of
269 security against collision attacks.
271 This code also includes SHA-384, a 384 bit hash with 192 bits
272 of security against collision attacks.
275 tristate "Tiger digest algorithms"
278 Tiger hash algorithm 192, 160 and 128-bit hashes
280 Tiger is a hash function optimized for 64-bit processors while
281 still having decent performance on 32-bit processors.
282 Tiger was developed by Ross Anderson and Eli Biham.
285 <http://www.cs.technion.ac.il/~biham/Reports/Tiger/>.
288 tristate "Whirlpool digest algorithms"
291 Whirlpool hash algorithm 512, 384 and 256-bit hashes
293 Whirlpool-512 is part of the NESSIE cryptographic primitives.
294 Whirlpool will be part of the ISO/IEC 10118-3:2003(E) standard
297 <http://planeta.terra.com.br/informatica/paulobarreto/WhirlpoolPage.html>
302 tristate "AES cipher algorithms"
305 AES cipher algorithms (FIPS-197). AES uses the Rijndael
308 Rijndael appears to be consistently a very good performer in
309 both hardware and software across a wide range of computing
310 environments regardless of its use in feedback or non-feedback
311 modes. Its key setup time is excellent, and its key agility is
312 good. Rijndael's very low memory requirements make it very well
313 suited for restricted-space environments, in which it also
314 demonstrates excellent performance. Rijndael's operations are
315 among the easiest to defend against power and timing attacks.
317 The AES specifies three key sizes: 128, 192 and 256 bits
319 See <http://csrc.nist.gov/CryptoToolkit/aes/> for more information.
321 config CRYPTO_AES_586
322 tristate "AES cipher algorithms (i586)"
323 depends on (X86 || UML_X86) && !64BIT
327 AES cipher algorithms (FIPS-197). AES uses the Rijndael
330 Rijndael appears to be consistently a very good performer in
331 both hardware and software across a wide range of computing
332 environments regardless of its use in feedback or non-feedback
333 modes. Its key setup time is excellent, and its key agility is
334 good. Rijndael's very low memory requirements make it very well
335 suited for restricted-space environments, in which it also
336 demonstrates excellent performance. Rijndael's operations are
337 among the easiest to defend against power and timing attacks.
339 The AES specifies three key sizes: 128, 192 and 256 bits
341 See <http://csrc.nist.gov/encryption/aes/> for more information.
343 config CRYPTO_AES_X86_64
344 tristate "AES cipher algorithms (x86_64)"
345 depends on (X86 || UML_X86) && 64BIT
349 AES cipher algorithms (FIPS-197). AES uses the Rijndael
352 Rijndael appears to be consistently a very good performer in
353 both hardware and software across a wide range of computing
354 environments regardless of its use in feedback or non-feedback
355 modes. Its key setup time is excellent, and its key agility is
356 good. Rijndael's very low memory requirements make it very well
357 suited for restricted-space environments, in which it also
358 demonstrates excellent performance. Rijndael's operations are
359 among the easiest to defend against power and timing attacks.
361 The AES specifies three key sizes: 128, 192 and 256 bits
363 See <http://csrc.nist.gov/encryption/aes/> for more information.
366 tristate "Anubis cipher algorithm"
369 Anubis cipher algorithm.
371 Anubis is a variable key length cipher which can use keys from
372 128 bits to 320 bits in length. It was evaluated as a entrant
373 in the NESSIE competition.
376 <https://www.cosic.esat.kuleuven.ac.be/nessie/reports/>
377 <http://planeta.terra.com.br/informatica/paulobarreto/AnubisPage.html>
380 tristate "ARC4 cipher algorithm"
383 ARC4 cipher algorithm.
385 ARC4 is a stream cipher using keys ranging from 8 bits to 2048
386 bits in length. This algorithm is required for driver-based
387 WEP, but it should not be for other purposes because of the
388 weakness of the algorithm.
390 config CRYPTO_BLOWFISH
391 tristate "Blowfish cipher algorithm"
394 Blowfish cipher algorithm, by Bruce Schneier.
396 This is a variable key length cipher which can use keys from 32
397 bits to 448 bits in length. It's fast, simple and specifically
398 designed for use on "large microprocessors".
401 <http://www.schneier.com/blowfish.html>
403 config CRYPTO_CAMELLIA
404 tristate "Camellia cipher algorithms"
408 Camellia cipher algorithms module.
410 Camellia is a symmetric key block cipher developed jointly
411 at NTT and Mitsubishi Electric Corporation.
413 The Camellia specifies three key sizes: 128, 192 and 256 bits.
416 <https://info.isl.ntt.co.jp/crypt/eng/camellia/index_s.html>
419 tristate "CAST5 (CAST-128) cipher algorithm"
422 The CAST5 encryption algorithm (synonymous with CAST-128) is
423 described in RFC2144.
426 tristate "CAST6 (CAST-256) cipher algorithm"
429 The CAST6 encryption algorithm (synonymous with CAST-256) is
430 described in RFC2612.
433 tristate "DES and Triple DES EDE cipher algorithms"
436 DES cipher algorithm (FIPS 46-2), and Triple DES EDE (FIPS 46-3).
439 tristate "FCrypt cipher algorithm"
441 select CRYPTO_BLKCIPHER
443 FCrypt algorithm used by RxRPC.
446 tristate "Khazad cipher algorithm"
449 Khazad cipher algorithm.
451 Khazad was a finalist in the initial NESSIE competition. It is
452 an algorithm optimized for 64-bit processors with good performance
453 on 32-bit processors. Khazad uses an 128 bit key size.
456 <http://planeta.terra.com.br/informatica/paulobarreto/KhazadPage.html>
458 config CRYPTO_SALSA20
459 tristate "Salsa20 stream cipher algorithm (EXPERIMENTAL)"
460 depends on EXPERIMENTAL
461 select CRYPTO_BLKCIPHER
463 Salsa20 stream cipher algorithm.
465 Salsa20 is a stream cipher submitted to eSTREAM, the ECRYPT
466 Stream Cipher Project. See <http://www.ecrypt.eu.org/stream/>
468 The Salsa20 stream cipher algorithm is designed by Daniel J.
469 Bernstein <djb@cr.yp.to>. See <http://cr.yp.to/snuffle.html>
471 config CRYPTO_SALSA20_586
472 tristate "Salsa20 stream cipher algorithm (i586) (EXPERIMENTAL)"
473 depends on (X86 || UML_X86) && !64BIT
474 depends on EXPERIMENTAL
475 select CRYPTO_BLKCIPHER
477 Salsa20 stream cipher algorithm.
479 Salsa20 is a stream cipher submitted to eSTREAM, the ECRYPT
480 Stream Cipher Project. See <http://www.ecrypt.eu.org/stream/>
482 The Salsa20 stream cipher algorithm is designed by Daniel J.
483 Bernstein <djb@cr.yp.to>. See <http://cr.yp.to/snuffle.html>
485 config CRYPTO_SALSA20_X86_64
486 tristate "Salsa20 stream cipher algorithm (x86_64) (EXPERIMENTAL)"
487 depends on (X86 || UML_X86) && 64BIT
488 depends on EXPERIMENTAL
489 select CRYPTO_BLKCIPHER
491 Salsa20 stream cipher algorithm.
493 Salsa20 is a stream cipher submitted to eSTREAM, the ECRYPT
494 Stream Cipher Project. See <http://www.ecrypt.eu.org/stream/>
496 The Salsa20 stream cipher algorithm is designed by Daniel J.
497 Bernstein <djb@cr.yp.to>. See <http://cr.yp.to/snuffle.html>
500 tristate "SEED cipher algorithm"
503 SEED cipher algorithm (RFC4269).
505 SEED is a 128-bit symmetric key block cipher that has been
506 developed by KISA (Korea Information Security Agency) as a
507 national standard encryption algorithm of the Republic of Korea.
508 It is a 16 round block cipher with the key size of 128 bit.
511 <http://www.kisa.or.kr/kisa/seed/jsp/seed_eng.jsp>
513 config CRYPTO_SERPENT
514 tristate "Serpent cipher algorithm"
517 Serpent cipher algorithm, by Anderson, Biham & Knudsen.
519 Keys are allowed to be from 0 to 256 bits in length, in steps
520 of 8 bits. Also includes the 'Tnepres' algorithm, a reversed
521 variant of Serpent for compatibility with old kerneli.org code.
524 <http://www.cl.cam.ac.uk/~rja14/serpent.html>
527 tristate "TEA, XTEA and XETA cipher algorithms"
530 TEA cipher algorithm.
532 Tiny Encryption Algorithm is a simple cipher that uses
533 many rounds for security. It is very fast and uses
536 Xtendend Tiny Encryption Algorithm is a modification to
537 the TEA algorithm to address a potential key weakness
538 in the TEA algorithm.
540 Xtendend Encryption Tiny Algorithm is a mis-implementation
541 of the XTEA algorithm for compatibility purposes.
543 config CRYPTO_TWOFISH
544 tristate "Twofish cipher algorithm"
546 select CRYPTO_TWOFISH_COMMON
548 Twofish cipher algorithm.
550 Twofish was submitted as an AES (Advanced Encryption Standard)
551 candidate cipher by researchers at CounterPane Systems. It is a
552 16 round block cipher supporting key sizes of 128, 192, and 256
556 <http://www.schneier.com/twofish.html>
558 config CRYPTO_TWOFISH_COMMON
561 Common parts of the Twofish cipher algorithm shared by the
562 generic c and the assembler implementations.
564 config CRYPTO_TWOFISH_586
565 tristate "Twofish cipher algorithms (i586)"
566 depends on (X86 || UML_X86) && !64BIT
568 select CRYPTO_TWOFISH_COMMON
570 Twofish cipher algorithm.
572 Twofish was submitted as an AES (Advanced Encryption Standard)
573 candidate cipher by researchers at CounterPane Systems. It is a
574 16 round block cipher supporting key sizes of 128, 192, and 256
578 <http://www.schneier.com/twofish.html>
580 config CRYPTO_TWOFISH_X86_64
581 tristate "Twofish cipher algorithm (x86_64)"
582 depends on (X86 || UML_X86) && 64BIT
584 select CRYPTO_TWOFISH_COMMON
586 Twofish cipher algorithm (x86_64).
588 Twofish was submitted as an AES (Advanced Encryption Standard)
589 candidate cipher by researchers at CounterPane Systems. It is a
590 16 round block cipher supporting key sizes of 128, 192, and 256
594 <http://www.schneier.com/twofish.html>
596 comment "Compression"
598 config CRYPTO_DEFLATE
599 tristate "Deflate compression algorithm"
604 This is the Deflate algorithm (RFC1951), specified for use in
605 IPSec with the IPCOMP protocol (RFC3173, RFC2394).
607 You will most probably want this if using IPSec.
610 tristate "LZO compression algorithm"
613 select LZO_DECOMPRESS
615 This is the LZO algorithm.
617 source "drivers/crypto/Kconfig"