1 # This file is part of the OpenADK project. OpenADK is copyrighted
2 # material, please see the LICENCE file in the top-level directory.
6 config ADK_LINUX_KERNEL_CRYPTO
9 config ADK_LINUX_KERNEL_CRYPTO_HW
12 config ADK_LINUX_KERNEL_XOR_BLOCKS
15 comment "Hardware cryptography"
17 menu "Hardware crypto devices"
18 depends on ADK_TARGET_WITH_PCI || ADK_TARGET_WITH_MINIPCI || ADK_TARGET_WITH_GEODE_CRYPTO
20 config ADK_LINUX_KERNEL_CRYPTO_DEV_GEODE
21 tristate "Support for the Geode LX/GX AES engine"
22 select ADK_LINUX_KERNEL_CRYPTO
23 select ADK_LINUX_KERNEL_CRYPTO_HW
24 select ADK_LINUX_KERNEL_CRYPTO_ECB
25 select ADK_LINUX_KERNEL_CRYPTO_CBC
26 depends on ADK_TARGET_WITH_GEODE_CRYPTO
27 default y if ADK_TARGET_WITH_GEODE_CRYPTO
30 Say 'Y' here to use the AMD Geode LX processor on-board AES
31 engine for the CryptoAPI AES algorithm.
33 config ADK_LINUX_KERNEL_CRYPTO_DEV_HIFN_795X
34 tristate "Driver for HIFN 795x crypto accelerator chips"
35 depends on ADK_TARGET_WITH_PCI || ADK_TARGET_WITH_MINIPCI
36 select ADK_LINUX_KERNEL_CRYPTO
37 select ADK_LINUX_KERNEL_CRYPTO_HW
38 select ADK_LINUX_KERNEL_CRYPTO_DES
41 This option allows you to have support for HIFN 795x crypto adapters.
45 comment "Software cryptography support"
47 menu "Crypto core / Block and Hash modes"
49 config ADK_LINUX_KERNEL_CRYPTO_PCOMP
51 select ADK_LINUX_KERNEL_CRYPTO_PCOMP2
52 select ADK_LINUX_KERNEL_CRYPTO_ALGAPI
54 config ADK_LINUX_KERNEL_CRYPTO_PCOMP2
56 select ADK_LINUX_KERNEL_CRYPTO_ALGAPI2
58 config ADK_LINUX_KERNEL_CRYPTO_ALGAPI
60 select ADK_LINUX_KERNEL_CRYPTO_ALGAPI2
62 config ADK_LINUX_KERNEL_CRYPTO_ALGAPI2
65 config ADK_LINUX_KERNEL_CRYPTO_AEAD
67 select ADK_LINUX_KERNEL_CRYPTO_AEAD2
68 select ADK_LINUX_KERNEL_CRYPTO_ALGAPI
70 config ADK_LINUX_KERNEL_CRYPTO_AEAD2
72 select ADK_LINUX_KERNEL_CRYPTO_ALGAPI2
74 config ADK_LINUX_KERNEL_CRYPTO_HASH
76 select ADK_LINUX_KERNEL_CRYPTO
77 select ADK_LINUX_KERNEL_CRYPTO_ALGAPI
78 select ADK_LINUX_KERNEL_CRYPTO_HASH2
79 select ADK_LINUX_KERNEL_CRYPTO_ALGAPI
81 config ADK_LINUX_KERNEL_CRYPTO_HASH2
82 select ADK_LINUX_KERNEL_CRYPTO_ALGAPI2
85 config ADK_LINUX_KERNEL_CRYPTO_BLKCIPHER
87 select ADK_LINUX_KERNEL_CRYPTO_BLKCIPHER2
88 select ADK_LINUX_KERNEL_CRYPTO_ALGAPI
90 config ADK_LINUX_KERNEL_CRYPTO_BLKCIPHER2
92 select ADK_LINUX_KERNEL_CRYPTO_ALGAPI2
93 select ADK_LINUX_KERNEL_CRYPTO_RNG2
94 select ADK_LINUX_KERNEL_CRYPTO_WORKQUEUE
96 config ADK_LINUX_KERNEL_CRYPTO_WORKQUEUE
99 config ADK_LINUX_KERNEL_CRYPTO_RNG
101 select ADK_LINUX_KERNEL_CRYPTO_RNG2
102 select ADK_LINUX_KERNEL_CRYPTO_ALGAPI
104 config ADK_LINUX_KERNEL_CRYPTO_RNG2
106 select ADK_LINUX_KERNEL_CRYPTO_ALGAPI2
109 config ADK_LINUX_KERNEL_CRYPTO_MANAGER
111 select ADK_LINUX_KERNEL_CRYPTO_MANAGER2
113 config ADK_LINUX_KERNEL_CRYPTO_MANAGER2
114 def_tristate ADK_LINUX_KERNEL_CRYPTO_MANAGER || (ADK_LINUX_KERNEL_CRYPTO_MANAGER!=n && ADK_LINUX_KERNEL_CRYPTO_ALGAPI=y)
115 select ADK_LINUX_KERNEL_CRYPTO_AEAD2
116 select ADK_LINUX_KERNEL_CRYPTO_HASH2
117 select ADK_LINUX_KERNEL_CRYPTO_BLKCIPHER2
118 select ADK_LINUX_KERNEL_CRYPTO_PCOMP2
120 config ADK_LINUX_KERNEL_CRYPTO_AUTHENC
121 tristate "AuthENC (IPsec)"
122 select ADK_LINUX_KERNEL_CRYPTO_AEAD
123 select ADK_LINUX_KERNEL_CRYPTO_BLKCIPHER
124 select ADK_LINUX_KERNEL_CRYPTO_MANAGER
125 select ADK_LINUX_KERNEL_CRYPTO_HASH
128 config ADK_LINUX_KERNEL_CRYPTO_SEQIV
129 tristate "Sequence Number IV Generator"
130 select ADK_LINUX_KERNEL_CRYPTO_AEAD
131 select ADK_LINUX_KERNEL_CRYPTO_BLKCIPHER
132 select ADK_LINUX_KERNEL_CRYPTO_RNG
135 This IV generator generates an IV based on a sequence number by
136 xoring it with a salt. This algorithm is mainly useful for CTR
138 config ADK_LINUX_KERNEL_CRYPTO_CTS
139 tristate "CTS support"
140 select ADK_LINUX_KERNEL_CRYPTO_BLKCIPHER
143 CTS: Cipher Text Stealing
144 This is the Cipher Text Stealing mode as described by
145 Section 8 of rfc2040 and referenced by rfc3962.
146 (rfc3962 includes errata information in its Appendix A)
147 This mode is required for Kerberos gss mechanism support
150 config ADK_LINUX_KERNEL_CRYPTO_CBC
151 tristate "CBC support"
152 select ADK_LINUX_KERNEL_CRYPTO_BLKCIPHER
153 select ADK_LINUX_KERNEL_CRYPTO_MANAGER
156 CBC: Cipher Block Chaining mode
157 This block cipher algorithm is required for IPSec.
159 config ADK_LINUX_KERNEL_CRYPTO_CCM
160 tristate "CCM support"
161 select ADK_LINUX_KERNEL_CRYPTO_CTR
162 select ADK_LINUX_KERNEL_CRYPTO_AEAD
165 Support for Counter with CBC MAC. Required for IPsec.
167 config ADK_LINUX_KERNEL_CRYPTO_GCM
168 tristate "GCM support"
169 select ADK_LINUX_KERNEL_CRYPTO_CTR
170 select ADK_LINUX_KERNEL_CRYPTO_AEAD
171 select ADK_LINUX_KERNEL_CRYPTO_GHASH
172 select ADK_LINUX_KERNEL_CRYPTO_NULL
175 Support for Galois/Counter Mode (GCM) and Galois Message
176 Authentication Code (GMAC). Required for IPSec.
178 config ADK_LINUX_KERNEL_CRYPTO_CTR
179 tristate "CTR support"
180 select ADK_LINUX_KERNEL_CRYPTO_BLKCIPHER
181 select ADK_LINUX_KERNEL_CRYPTO_SEQIV
182 select ADK_LINUX_KERNEL_CRYPTO_MANAGER
186 This block cipher algorithm is required for IPSec.
188 config ADK_LINUX_KERNEL_CRYPTO_ECB
189 tristate "ECB support"
190 select ADK_LINUX_KERNEL_CRYPTO_BLKCIPHER
191 select ADK_LINUX_KERNEL_CRYPTO_MANAGER
194 ECB: Electronic CodeBook mode
195 This is the simplest block cipher algorithm. It simply encrypts
196 the input block by block.
198 config ADK_LINUX_KERNEL_CRYPTO_XTS
199 tristate "XTS support"
200 select ADK_LINUX_KERNEL_CRYPTO_BLKCIPHER
201 select ADK_LINUX_KERNEL_CRYPTO_MANAGER
205 config ADK_LINUX_KERNEL_CRYPTO_HMAC
206 tristate "HMAC support"
207 select ADK_LINUX_KERNEL_CRYPTO_HASH
208 select ADK_LINUX_KERNEL_CRYPTO_MANAGER
211 HMAC: Keyed-Hashing for Message Authentication (RFC2104).
212 This is required for IPSec.
214 config ADK_LINUX_KERNEL_CRYPTO_XCBC
215 tristate "XCBC support"
216 select ADK_LINUX_KERNEL_CRYPTO_HASH
217 select ADK_LINUX_KERNEL_CRYPTO_MANAGER
220 XCBC: Keyed-Hashing with encryption algorithm
224 menu "Digest algorithms"
226 config ADK_LINUX_KERNEL_CRYPTO_MD4
227 tristate "MD4 digest algorithm"
228 select ADK_LINUX_KERNEL_CRYPTO_HASH
231 MD4 message digest algorithm (RFC1320).
233 config ADK_LINUX_KERNEL_CRYPTO_MD5
234 tristate "MD5 digest algorithm"
235 select ADK_LINUX_KERNEL_CRYPTO_HASH
238 MD5 message digest algorithm (RFC1321).
240 config ADK_LINUX_KERNEL_CRYPTO_SHA1
241 tristate "SHA1 digest algorithm"
242 select ADK_LINUX_KERNEL_CRYPTO_HASH
245 SHA-1 secure hash standard (FIPS 180-1/DFIPS 180-2).
247 config ADK_LINUX_KERNEL_CRYPTO_SHA256
248 tristate "SHA256 digest algorithm"
249 select ADK_LINUX_KERNEL_CRYPTO_HASH
252 SHA256 secure hash standard (DFIPS 180-2).
254 This version of SHA implements a 256 bit hash with 128 bits of
255 security against collision attacks.
257 config ADK_LINUX_KERNEL_CRYPTO_SHA512
258 tristate "SHA512 digest algorithm"
259 select ADK_LINUX_KERNEL_CRYPTO_HASH
262 SHA512 secure hash standard (DFIPS 180-2).
264 This version of SHA implements a 512 bit hash with 256 bits of
265 security against collision attacks.
267 This code also includes SHA-384, a 384 bit hash with 192 bits
268 of security against collision attacks.
270 config ADK_LINUX_KERNEL_CRYPTO_WP512
271 tristate "Whirlpool digest algorithms"
272 select ADK_LINUX_KERNEL_CRYPTO_HASH
275 Whirlpool hash algorithm 512, 384 and 256-bit hashes
277 Whirlpool-512 is part of the NESSIE cryptographic primitives.
278 Whirlpool will be part of the ISO/IEC 10118-3:2003(E) standard
281 <http://planeta.terra.com.br/informatica/paulobarreto/WhirlpoolPage.html>
283 config ADK_LINUX_KERNEL_CRYPTO_TGR192
284 tristate "Tiger digest algorithms"
285 select ADK_LINUX_KERNEL_CRYPTO_HASH
288 Tiger hash algorithm 192, 160 and 128-bit hashes
290 Tiger is a hash function optimized for 64-bit processors while
291 still having decent performance on 32-bit processors.
292 Tiger was developed by Ross Anderson and Eli Biham.
295 <http://www.cs.technion.ac.il/~biham/Reports/Tiger/>.
298 menu "Cipher algoritms"
300 config ADK_LINUX_KERNEL_CRYPTO_AES
301 tristate "AES cipher algorithms"
302 select ADK_LINUX_KERNEL_CRYPTO_ALGAPI
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 ADK_LINUX_KERNEL_CRYPTO_AES_586
322 tristate "AES cipher algorithms (i586)"
324 select ADK_LINUX_KERNEL_CRYPTO_ALGAPI
325 select ADK_LINUX_KERNEL_CRYPTO_AES
328 AES cipher algorithms (FIPS-197). AES uses the Rijndael
331 Rijndael appears to be consistently a very good performer in
332 both hardware and software across a wide range of computing
333 environments regardless of its use in feedback or non-feedback
334 modes. Its key setup time is excellent, and its key agility is
335 good. Rijndael's very low memory requirements make it very well
336 suited for restricted-space environments, in which it also
337 demonstrates excellent performance. Rijndael's operations are
338 among the easiest to defend against power and timing attacks.
340 The AES specifies three key sizes: 128, 192 and 256 bits
342 See <http://csrc.nist.gov/CryptoToolkit/aes/> for more information.
344 config ADK_LINUX_KERNEL_CRYPTO_ANUBIS
345 tristate "Anubis cipher algorithm"
346 select ADK_LINUX_KERNEL_CRYPTO_ALGAPI
349 Anubis cipher algorithm.
351 Anubis is a variable key length cipher which can use keys from
352 128 bits to 320 bits in length. It was evaluated as a entrant
353 in the NESSIE competition.
356 <https://www.cosic.esat.kuleuven.ac.be/nessie/reports/>
357 <http://planeta.terra.com.br/informatica/paulobarreto/AnubisPage.html>
359 config ADK_LINUX_KERNEL_CRYPTO_ARC4
360 tristate "ARC4 cipher algorithm"
361 select ADK_LINUX_KERNEL_CRYPTO_BLKCIPHER
364 ARC4 cipher algorithm.
366 ARC4 is a stream cipher using keys ranging from 8 bits to 2048
367 bits in length. This algorithm is required for driver-based
368 WEP, but it should not be for other purposes because of the
369 weakness of the algorithm.
371 config ADK_LINUX_KERNEL_CRYPTO_BLOWFISH
372 tristate "Blowfish cipher algorithm"
373 select ADK_LINUX_KERNEL_CRYPTO_ALGAPI
376 Blowfish cipher algorithm, by Bruce Schneier.
378 This is a variable key length cipher which can use keys from 32
379 bits to 448 bits in length. It's fast, simple and specifically
380 designed for use on "large microprocessors".
383 <http://www.schneier.com/blowfish.html>
385 config ADK_LINUX_KERNEL_CRYPTO_CAMELLIA
386 tristate "Camellia cipher algorithms"
387 select ADK_LINUX_KERNEL_CRYPTO_ALGAPI
390 Camellia cipher algorithms module.
392 Camellia is a symmetric key block cipher developed jointly
393 at NTT and Mitsubishi Electric Corporation.
395 The Camellia specifies three key sizes: 128, 192 and 256 bits.
398 <https://info.isl.ntt.co.jp/crypt/eng/camellia/index_s.html>
400 config ADK_LINUX_KERNEL_CRYPTO_CAST5
401 tristate "CAST5 (CAST-128) cipher algorithm"
402 select ADK_LINUX_KERNEL_CRYPTO_ALGAPI
405 The CAST5 encryption algorithm (synonymous with CAST-128) is
406 described in RFC2144.
408 config ADK_LINUX_KERNEL_CRYPTO_CAST6
409 tristate "CAST6 (CATS-256) cipher algorithm"
410 select ADK_LINUX_KERNEL_CRYPTO_ALGAPI
413 The CAST6 encryption algorithm (synonymous with CAST-256) is
414 described in RFC2612.
416 config ADK_LINUX_KERNEL_CRYPTO_DES
417 tristate "DES and Triple DES EDE cipher algorithms"
418 select ADK_LINUX_KERNEL_CRYPTO_ALGAPI
421 DES cipher algorithm (FIPS 46-2), and Triple DES EDE (FIPS 46-3).
423 config ADK_LINUX_KERNEL_CRYPTO_FCRYPT
424 tristate "FCrypt cipher algorithms"
425 select ADK_LINUX_KERNEL_CRYPTO_ALGAPI
428 FCrypt algorithm used by RxRPC.
430 config ADK_LINUX_KERNEL_CRYPTO_KHAZAD
431 tristate "Khazad cipher algorithm"
432 select ADK_LINUX_KERNEL_CRYPTO_ALGAPI
435 Khazad cipher algorithm.
437 Khazad was a finalist in the initial NESSIE competition. It is
438 an algorithm optimized for 64-bit processors with good performance
439 on 32-bit processors. Khazad uses an 128 bit key size.
442 <http://planeta.terra.com.br/informatica/paulobarreto/KhazadPage.html>
444 config ADK_LINUX_KERNEL_CRYPTO_SERPENT
445 tristate "Serpent cipher algorithm"
446 select ADK_LINUX_KERNEL_CRYPTO_ALGAPI
449 Serpent cipher algorithm, by Anderson, Biham & Knudsen.
451 Keys are allowed to be from 0 to 256 bits in length, in steps
452 of 8 bits. Also includes the 'Tnepres' algorithm, a reversed
453 variant of Serpent for compatibility with old kerneli code.
456 <http://www.cl.cam.ac.uk/~rja14/serpent.html>
458 config ADK_LINUX_KERNEL_CRYPTO_TEA
459 tristate "TEA, XTEA and XETA cipher algorithms"
460 select ADK_LINUX_KERNEL_CRYPTO_ALGAPI
463 TEA cipher algorithm.
465 Tiny Encryption Algorithm is a simple cipher that uses
466 many rounds for security. It is very fast and uses
469 Xtendend Tiny Encryption Algorithm is a modification to
470 the TEA algorithm to address a potential key weakness
471 in the TEA algorithm.
473 Xtendend Encryption Tiny Algorithm is a mis-implementation
474 of the XTEA algorithm for compatibility purposes.
476 config ADK_LINUX_KERNEL_CRYPTO_TWOFISH
477 tristate "Twofish cipher algorithm"
478 select ADK_LINUX_KERNEL_CRYPTO_ALGAPI
481 Twofish cipher algorithm.
483 Twofish was submitted as an AES (Advanced Encryption Standard)
484 candidate cipher by researchers at CounterPane Systems. It is a
485 16 round block cipher supporting key sizes of 128, 192, and 256
489 <http://www.schneier.com/twofish.html>
491 config ADK_LINUX_KERNEL_CRYPTO_TWOFISH_586
492 tristate "Twofish cipher algorithm (i586)"
493 select ADK_LINUX_KERNEL_CRYPTO_ALGAPI
497 Twofish cipher algorithm.
499 Twofish was submitted as an AES (Advanced Encryption Standard)
500 candidate cipher by researchers at CounterPane Systems. It is a
501 16 round block cipher supporting key sizes of 128, 192, and 256
505 <http://www.schneier.com/twofish.html>
507 config ADK_LINUX_KERNEL_CRYPTO_NULL
508 tristate "Null algorithms"
509 select ADK_LINUX_KERNEL_CRYPTO_ALGAPI
510 select ADK_LINUX_KERNEL_CRYPTO_BLKCIPHER
511 select ADK_LINUX_KERNEL_CRYPTO_HASH
514 These are 'Null' algorithms, used by IPsec, which do nothing.
520 config ADK_LINUX_KERNEL_CRYPTO_DEFLATE
521 tristate "Deflate compression algorithm"
522 select ADK_LINUX_KERNEL_CRYPTO_ALGAPI
523 select ADK_LINUX_KERNEL_ZLIB_DEFLATE
524 select ADK_LINUX_KERNEL_ZLIB_INFLATE
527 This is the Deflate algorithm (RFC1951), specified for use in
528 IPSec with the IPCOMP protocol (RFC3173, RFC2394).
530 You will most probably want this if using IPSec.
532 config ADK_LINUX_KERNEL_CRYPTO_LZO
533 tristate "LZO compression algorithm"
534 select ADK_LINUX_KERNEL_CRYPTO_ALGAPI
538 config ADK_LINUX_KERNEL_CRYPTO_MICHAEL_MIC
539 tristate "Michael MIC keyed digest algorithm"
540 select ADK_LINUX_KERNEL_CRYPTO_HASH
543 Michael MIC is used for message integrity protection in TKIP
544 (IEEE 802.11i). This algorithm is required for TKIP, but it
545 should not be used for other purposes because of the weakness
548 config ADK_LINUX_KERNEL_CRYPTO_CRC32C
549 tristate "CRC32c CRC algorithm"
550 select ADK_LINUX_KERNEL_CRYPTO_HASH
551 select ADK_LINUX_KERNEL_CRC32
554 Castagnoli, et al Cyclic Redundancy-Check Algorithm. Used
555 by iSCSI for header and data digests and by others.
556 See Castagnoli93. This implementation uses lib/libcrc32c.
557 Module will be crc32c.
561 menu "User-space interface"
563 config ADK_LINUX_KERNEL_CRYPTO_USER_API
566 config ADK_LINUX_KERNEL_CRYPTO_USER_API_HASH
567 tristate "User-space interface for hash algorithms"
568 depends on ADK_LINUX_KERNEL_NET
569 select ADK_LINUX_KERNEL_CRYPTO_HASH
570 select ADK_LINUX_KERNEL_CRYPTO_USER_API
572 This option enables the user-spaces interface for hash
575 config ADK_LINUX_KERNEL_CRYPTO_USER_API_SKCIPHER
576 tristate "User-space interface for symmetric key cipher algorithms"
577 depends on ADK_LINUX_KERNEL_NET
578 select ADK_LINUX_KERNEL_CRYPTO_BLKCIPHER
579 select ADK_LINUX_KERNEL_CRYPTO_USER_API
581 This option enables the user-spaces interface for symmetric
582 key cipher algorithms.
584 config ADK_LINUX_KERNEL_CRYPTO_USER_API_RNG
585 tristate "User-space interface for random number generator algorithms"
586 depends on ADK_LINUX_KERNEL_NET
587 select ADK_LINUX_KERNEL_CRYPTO_RNG
588 select ADK_LINUX_KERNEL_CRYPTO_USER_API
590 This option enables the user-spaces interface for random
591 number generator algorithms.
593 config ADK_LINUX_KERNEL_CRYPTO_USER_API_AEAD
594 tristate "User-space interface for AEAD cipher algorithms"
595 depends on ADK_LINUX_KERNEL_NET
596 select ADK_LINUX_KERNEL_CRYPTO_AEAD
597 select ADK_LINUX_KERNEL_CRYPTO_BLKCIPHER
598 select ADK_LINUX_KERNEL_CRYPTO_NULL
599 select ADK_LINUX_KERNEL_CRYPTO_USER_API
601 This option enables the user-spaces interface for AEAD
604 config ADK_LINUX_KERNEL_CRYPTO_STATS
605 bool "Crypto usage statistics for User-space"
606 depends on ADK_LINUX_KERNEL_CRYPTO_USER
608 This option enables the gathering of crypto stats.
610 - encrypt/decrypt size and numbers of symmeric operations
611 - compress/decompress size and numbers of compress operations
612 - size and numbers of hash operations
613 - encrypt/decrypt/sign/verify numbers for asymmetric operations
614 - generate/seed numbers for rng operations