xref: /linux/crypto/Kconfig (revision a1e58bbdc969c3fe60addca7f2729779d22a83c1)
1#
2# Generic algorithms support
3#
4config XOR_BLOCKS
5	tristate
6
7#
8# async_tx api: hardware offloaded memory transfer/transform support
9#
10source "crypto/async_tx/Kconfig"
11
12#
13# Cryptographic API Configuration
14#
15menuconfig CRYPTO
16	bool "Cryptographic API"
17	help
18	  This option provides the core Cryptographic API.
19
20if CRYPTO
21
22config CRYPTO_ALGAPI
23	tristate
24	help
25	  This option provides the API for cryptographic algorithms.
26
27config CRYPTO_AEAD
28	tristate
29	select CRYPTO_ALGAPI
30
31config CRYPTO_BLKCIPHER
32	tristate
33	select CRYPTO_ALGAPI
34
35config CRYPTO_SEQIV
36	tristate "Sequence Number IV Generator"
37	select CRYPTO_AEAD
38	select CRYPTO_BLKCIPHER
39	help
40	  This IV generator generates an IV based on a sequence number by
41	  xoring it with a salt.  This algorithm is mainly useful for CTR
42	  and similar modes.
43
44config CRYPTO_HASH
45	tristate
46	select CRYPTO_ALGAPI
47
48config CRYPTO_MANAGER
49	tristate "Cryptographic algorithm manager"
50	select CRYPTO_ALGAPI
51	help
52	  Create default cryptographic template instantiations such as
53	  cbc(aes).
54
55config CRYPTO_HMAC
56	tristate "HMAC support"
57	select CRYPTO_HASH
58	select CRYPTO_MANAGER
59	help
60	  HMAC: Keyed-Hashing for Message Authentication (RFC2104).
61	  This is required for IPSec.
62
63config CRYPTO_XCBC
64	tristate "XCBC support"
65	depends on EXPERIMENTAL
66	select CRYPTO_HASH
67	select CRYPTO_MANAGER
68	help
69	  XCBC: Keyed-Hashing with encryption algorithm
70		http://www.ietf.org/rfc/rfc3566.txt
71		http://csrc.nist.gov/encryption/modes/proposedmodes/
72		 xcbc-mac/xcbc-mac-spec.pdf
73
74config CRYPTO_NULL
75	tristate "Null algorithms"
76	select CRYPTO_ALGAPI
77	select CRYPTO_BLKCIPHER
78	help
79	  These are 'Null' algorithms, used by IPsec, which do nothing.
80
81config CRYPTO_MD4
82	tristate "MD4 digest algorithm"
83	select CRYPTO_ALGAPI
84	help
85	  MD4 message digest algorithm (RFC1320).
86
87config CRYPTO_MD5
88	tristate "MD5 digest algorithm"
89	select CRYPTO_ALGAPI
90	help
91	  MD5 message digest algorithm (RFC1321).
92
93config CRYPTO_SHA1
94	tristate "SHA1 digest algorithm"
95	select CRYPTO_ALGAPI
96	help
97	  SHA-1 secure hash standard (FIPS 180-1/DFIPS 180-2).
98
99config CRYPTO_SHA256
100	tristate "SHA224 and SHA256 digest algorithm"
101	select CRYPTO_ALGAPI
102	help
103	  SHA256 secure hash standard (DFIPS 180-2).
104
105	  This version of SHA implements a 256 bit hash with 128 bits of
106	  security against collision attacks.
107
108          This code also includes SHA-224, a 224 bit hash with 112 bits
109          of security against collision attacks.
110
111config CRYPTO_SHA512
112	tristate "SHA384 and SHA512 digest algorithms"
113	select CRYPTO_ALGAPI
114	help
115	  SHA512 secure hash standard (DFIPS 180-2).
116
117	  This version of SHA implements a 512 bit hash with 256 bits of
118	  security against collision attacks.
119
120	  This code also includes SHA-384, a 384 bit hash with 192 bits
121	  of security against collision attacks.
122
123config CRYPTO_WP512
124	tristate "Whirlpool digest algorithms"
125	select CRYPTO_ALGAPI
126	help
127	  Whirlpool hash algorithm 512, 384 and 256-bit hashes
128
129	  Whirlpool-512 is part of the NESSIE cryptographic primitives.
130	  Whirlpool will be part of the ISO/IEC 10118-3:2003(E) standard
131
132	  See also:
133	  <http://planeta.terra.com.br/informatica/paulobarreto/WhirlpoolPage.html>
134
135config CRYPTO_TGR192
136	tristate "Tiger digest algorithms"
137	select CRYPTO_ALGAPI
138	help
139	  Tiger hash algorithm 192, 160 and 128-bit hashes
140
141	  Tiger is a hash function optimized for 64-bit processors while
142	  still having decent performance on 32-bit processors.
143	  Tiger was developed by Ross Anderson and Eli Biham.
144
145	  See also:
146	  <http://www.cs.technion.ac.il/~biham/Reports/Tiger/>.
147
148config CRYPTO_GF128MUL
149	tristate "GF(2^128) multiplication functions (EXPERIMENTAL)"
150	depends on EXPERIMENTAL
151	help
152	  Efficient table driven implementation of multiplications in the
153	  field GF(2^128).  This is needed by some cypher modes. This
154	  option will be selected automatically if you select such a
155	  cipher mode.  Only select this option by hand if you expect to load
156	  an external module that requires these functions.
157
158config CRYPTO_ECB
159	tristate "ECB support"
160	select CRYPTO_BLKCIPHER
161	select CRYPTO_MANAGER
162	help
163	  ECB: Electronic CodeBook mode
164	  This is the simplest block cipher algorithm.  It simply encrypts
165	  the input block by block.
166
167config CRYPTO_CBC
168	tristate "CBC support"
169	select CRYPTO_BLKCIPHER
170	select CRYPTO_MANAGER
171	help
172	  CBC: Cipher Block Chaining mode
173	  This block cipher algorithm is required for IPSec.
174
175config CRYPTO_PCBC
176	tristate "PCBC support"
177	select CRYPTO_BLKCIPHER
178	select CRYPTO_MANAGER
179	help
180	  PCBC: Propagating Cipher Block Chaining mode
181	  This block cipher algorithm is required for RxRPC.
182
183config CRYPTO_LRW
184	tristate "LRW support (EXPERIMENTAL)"
185	depends on EXPERIMENTAL
186	select CRYPTO_BLKCIPHER
187	select CRYPTO_MANAGER
188	select CRYPTO_GF128MUL
189	help
190	  LRW: Liskov Rivest Wagner, a tweakable, non malleable, non movable
191	  narrow block cipher mode for dm-crypt.  Use it with cipher
192	  specification string aes-lrw-benbi, the key must be 256, 320 or 384.
193	  The first 128, 192 or 256 bits in the key are used for AES and the
194	  rest is used to tie each cipher block to its logical position.
195
196config CRYPTO_XTS
197	tristate "XTS support (EXPERIMENTAL)"
198	depends on EXPERIMENTAL
199	select CRYPTO_BLKCIPHER
200	select CRYPTO_MANAGER
201	select CRYPTO_GF128MUL
202	help
203	  XTS: IEEE1619/D16 narrow block cipher use with aes-xts-plain,
204	  key size 256, 384 or 512 bits. This implementation currently
205	  can't handle a sectorsize which is not a multiple of 16 bytes.
206
207config CRYPTO_CTR
208	tristate "CTR support"
209	select CRYPTO_BLKCIPHER
210	select CRYPTO_SEQIV
211	select CRYPTO_MANAGER
212	help
213	  CTR: Counter mode
214	  This block cipher algorithm is required for IPSec.
215
216config CRYPTO_GCM
217	tristate "GCM/GMAC support"
218	select CRYPTO_CTR
219	select CRYPTO_AEAD
220	select CRYPTO_GF128MUL
221	help
222	  Support for Galois/Counter Mode (GCM) and Galois Message
223	  Authentication Code (GMAC). Required for IPSec.
224
225config CRYPTO_CCM
226	tristate "CCM support"
227	select CRYPTO_CTR
228	select CRYPTO_AEAD
229	help
230	  Support for Counter with CBC MAC. Required for IPsec.
231
232config CRYPTO_CRYPTD
233	tristate "Software async crypto daemon"
234	select CRYPTO_BLKCIPHER
235	select CRYPTO_MANAGER
236	help
237	  This is a generic software asynchronous crypto daemon that
238	  converts an arbitrary synchronous software crypto algorithm
239	  into an asynchronous algorithm that executes in a kernel thread.
240
241config CRYPTO_DES
242	tristate "DES and Triple DES EDE cipher algorithms"
243	select CRYPTO_ALGAPI
244	help
245	  DES cipher algorithm (FIPS 46-2), and Triple DES EDE (FIPS 46-3).
246
247config CRYPTO_FCRYPT
248	tristate "FCrypt cipher algorithm"
249	select CRYPTO_ALGAPI
250	select CRYPTO_BLKCIPHER
251	help
252	  FCrypt algorithm used by RxRPC.
253
254config CRYPTO_BLOWFISH
255	tristate "Blowfish cipher algorithm"
256	select CRYPTO_ALGAPI
257	help
258	  Blowfish cipher algorithm, by Bruce Schneier.
259
260	  This is a variable key length cipher which can use keys from 32
261	  bits to 448 bits in length.  It's fast, simple and specifically
262	  designed for use on "large microprocessors".
263
264	  See also:
265	  <http://www.schneier.com/blowfish.html>
266
267config CRYPTO_TWOFISH
268	tristate "Twofish cipher algorithm"
269	select CRYPTO_ALGAPI
270	select CRYPTO_TWOFISH_COMMON
271	help
272	  Twofish cipher algorithm.
273
274	  Twofish was submitted as an AES (Advanced Encryption Standard)
275	  candidate cipher by researchers at CounterPane Systems.  It is a
276	  16 round block cipher supporting key sizes of 128, 192, and 256
277	  bits.
278
279	  See also:
280	  <http://www.schneier.com/twofish.html>
281
282config CRYPTO_TWOFISH_COMMON
283	tristate
284	help
285	  Common parts of the Twofish cipher algorithm shared by the
286	  generic c and the assembler implementations.
287
288config CRYPTO_TWOFISH_586
289	tristate "Twofish cipher algorithms (i586)"
290	depends on (X86 || UML_X86) && !64BIT
291	select CRYPTO_ALGAPI
292	select CRYPTO_TWOFISH_COMMON
293	help
294	  Twofish cipher algorithm.
295
296	  Twofish was submitted as an AES (Advanced Encryption Standard)
297	  candidate cipher by researchers at CounterPane Systems.  It is a
298	  16 round block cipher supporting key sizes of 128, 192, and 256
299	  bits.
300
301	  See also:
302	  <http://www.schneier.com/twofish.html>
303
304config CRYPTO_TWOFISH_X86_64
305	tristate "Twofish cipher algorithm (x86_64)"
306	depends on (X86 || UML_X86) && 64BIT
307	select CRYPTO_ALGAPI
308	select CRYPTO_TWOFISH_COMMON
309	help
310	  Twofish cipher algorithm (x86_64).
311
312	  Twofish was submitted as an AES (Advanced Encryption Standard)
313	  candidate cipher by researchers at CounterPane Systems.  It is a
314	  16 round block cipher supporting key sizes of 128, 192, and 256
315	  bits.
316
317	  See also:
318	  <http://www.schneier.com/twofish.html>
319
320config CRYPTO_SERPENT
321	tristate "Serpent cipher algorithm"
322	select CRYPTO_ALGAPI
323	help
324	  Serpent cipher algorithm, by Anderson, Biham & Knudsen.
325
326	  Keys are allowed to be from 0 to 256 bits in length, in steps
327	  of 8 bits.  Also includes the 'Tnepres' algorithm, a reversed
328	  variant of Serpent for compatibility with old kerneli.org code.
329
330	  See also:
331	  <http://www.cl.cam.ac.uk/~rja14/serpent.html>
332
333config CRYPTO_AES
334	tristate "AES cipher algorithms"
335	select CRYPTO_ALGAPI
336	help
337	  AES cipher algorithms (FIPS-197). AES uses the Rijndael
338	  algorithm.
339
340	  Rijndael appears to be consistently a very good performer in
341	  both hardware and software across a wide range of computing
342	  environments regardless of its use in feedback or non-feedback
343	  modes. Its key setup time is excellent, and its key agility is
344	  good. Rijndael's very low memory requirements make it very well
345	  suited for restricted-space environments, in which it also
346	  demonstrates excellent performance. Rijndael's operations are
347	  among the easiest to defend against power and timing attacks.
348
349	  The AES specifies three key sizes: 128, 192 and 256 bits
350
351	  See <http://csrc.nist.gov/CryptoToolkit/aes/> for more information.
352
353config CRYPTO_AES_586
354	tristate "AES cipher algorithms (i586)"
355	depends on (X86 || UML_X86) && !64BIT
356	select CRYPTO_ALGAPI
357	select CRYPTO_AES
358	help
359	  AES cipher algorithms (FIPS-197). AES uses the Rijndael
360	  algorithm.
361
362	  Rijndael appears to be consistently a very good performer in
363	  both hardware and software across a wide range of computing
364	  environments regardless of its use in feedback or non-feedback
365	  modes. Its key setup time is excellent, and its key agility is
366	  good. Rijndael's very low memory requirements make it very well
367	  suited for restricted-space environments, in which it also
368	  demonstrates excellent performance. Rijndael's operations are
369	  among the easiest to defend against power and timing attacks.
370
371	  The AES specifies three key sizes: 128, 192 and 256 bits
372
373	  See <http://csrc.nist.gov/encryption/aes/> for more information.
374
375config CRYPTO_AES_X86_64
376	tristate "AES cipher algorithms (x86_64)"
377	depends on (X86 || UML_X86) && 64BIT
378	select CRYPTO_ALGAPI
379	select CRYPTO_AES
380	help
381	  AES cipher algorithms (FIPS-197). AES uses the Rijndael
382	  algorithm.
383
384	  Rijndael appears to be consistently a very good performer in
385	  both hardware and software across a wide range of computing
386	  environments regardless of its use in feedback or non-feedback
387	  modes. Its key setup time is excellent, and its key agility is
388	  good. Rijndael's very low memory requirements make it very well
389	  suited for restricted-space environments, in which it also
390	  demonstrates excellent performance. Rijndael's operations are
391	  among the easiest to defend against power and timing attacks.
392
393	  The AES specifies three key sizes: 128, 192 and 256 bits
394
395	  See <http://csrc.nist.gov/encryption/aes/> for more information.
396
397config CRYPTO_CAST5
398	tristate "CAST5 (CAST-128) cipher algorithm"
399	select CRYPTO_ALGAPI
400	help
401	  The CAST5 encryption algorithm (synonymous with CAST-128) is
402	  described in RFC2144.
403
404config CRYPTO_CAST6
405	tristate "CAST6 (CAST-256) cipher algorithm"
406	select CRYPTO_ALGAPI
407	help
408	  The CAST6 encryption algorithm (synonymous with CAST-256) is
409	  described in RFC2612.
410
411config CRYPTO_TEA
412	tristate "TEA, XTEA and XETA cipher algorithms"
413	select CRYPTO_ALGAPI
414	help
415	  TEA cipher algorithm.
416
417	  Tiny Encryption Algorithm is a simple cipher that uses
418	  many rounds for security.  It is very fast and uses
419	  little memory.
420
421	  Xtendend Tiny Encryption Algorithm is a modification to
422	  the TEA algorithm to address a potential key weakness
423	  in the TEA algorithm.
424
425	  Xtendend Encryption Tiny Algorithm is a mis-implementation
426	  of the XTEA algorithm for compatibility purposes.
427
428config CRYPTO_ARC4
429	tristate "ARC4 cipher algorithm"
430	select CRYPTO_ALGAPI
431	help
432	  ARC4 cipher algorithm.
433
434	  ARC4 is a stream cipher using keys ranging from 8 bits to 2048
435	  bits in length.  This algorithm is required for driver-based
436	  WEP, but it should not be for other purposes because of the
437	  weakness of the algorithm.
438
439config CRYPTO_KHAZAD
440	tristate "Khazad cipher algorithm"
441	select CRYPTO_ALGAPI
442	help
443	  Khazad cipher algorithm.
444
445	  Khazad was a finalist in the initial NESSIE competition.  It is
446	  an algorithm optimized for 64-bit processors with good performance
447	  on 32-bit processors.  Khazad uses an 128 bit key size.
448
449	  See also:
450	  <http://planeta.terra.com.br/informatica/paulobarreto/KhazadPage.html>
451
452config CRYPTO_ANUBIS
453	tristate "Anubis cipher algorithm"
454	select CRYPTO_ALGAPI
455	help
456	  Anubis cipher algorithm.
457
458	  Anubis is a variable key length cipher which can use keys from
459	  128 bits to 320 bits in length.  It was evaluated as a entrant
460	  in the NESSIE competition.
461
462	  See also:
463	  <https://www.cosic.esat.kuleuven.ac.be/nessie/reports/>
464	  <http://planeta.terra.com.br/informatica/paulobarreto/AnubisPage.html>
465
466config CRYPTO_SEED
467	tristate "SEED cipher algorithm"
468	select CRYPTO_ALGAPI
469	help
470	  SEED cipher algorithm (RFC4269).
471
472	  SEED is a 128-bit symmetric key block cipher that has been
473	  developed by KISA (Korea Information Security Agency) as a
474	  national standard encryption algorithm of the Republic of Korea.
475	  It is a 16 round block cipher with the key size of 128 bit.
476
477	  See also:
478	  <http://www.kisa.or.kr/kisa/seed/jsp/seed_eng.jsp>
479
480config CRYPTO_SALSA20
481	tristate "Salsa20 stream cipher algorithm (EXPERIMENTAL)"
482	depends on EXPERIMENTAL
483	select CRYPTO_BLKCIPHER
484	help
485	  Salsa20 stream cipher algorithm.
486
487	  Salsa20 is a stream cipher submitted to eSTREAM, the ECRYPT
488	  Stream Cipher Project. See <http://www.ecrypt.eu.org/stream/>
489
490	  The Salsa20 stream cipher algorithm is designed by Daniel J.
491	  Bernstein <djb@cr.yp.to>. See <http://cr.yp.to/snuffle.html>
492
493config CRYPTO_SALSA20_586
494	tristate "Salsa20 stream cipher algorithm (i586) (EXPERIMENTAL)"
495	depends on (X86 || UML_X86) && !64BIT
496	depends on EXPERIMENTAL
497	select CRYPTO_BLKCIPHER
498	help
499	  Salsa20 stream cipher algorithm.
500
501	  Salsa20 is a stream cipher submitted to eSTREAM, the ECRYPT
502	  Stream Cipher Project. See <http://www.ecrypt.eu.org/stream/>
503
504	  The Salsa20 stream cipher algorithm is designed by Daniel J.
505	  Bernstein <djb@cr.yp.to>. See <http://cr.yp.to/snuffle.html>
506
507config CRYPTO_SALSA20_X86_64
508	tristate "Salsa20 stream cipher algorithm (x86_64) (EXPERIMENTAL)"
509	depends on (X86 || UML_X86) && 64BIT
510	depends on EXPERIMENTAL
511	select CRYPTO_BLKCIPHER
512	help
513	  Salsa20 stream cipher algorithm.
514
515	  Salsa20 is a stream cipher submitted to eSTREAM, the ECRYPT
516	  Stream Cipher Project. See <http://www.ecrypt.eu.org/stream/>
517
518	  The Salsa20 stream cipher algorithm is designed by Daniel J.
519	  Bernstein <djb@cr.yp.to>. See <http://cr.yp.to/snuffle.html>
520
521config CRYPTO_DEFLATE
522	tristate "Deflate compression algorithm"
523	select CRYPTO_ALGAPI
524	select ZLIB_INFLATE
525	select ZLIB_DEFLATE
526	help
527	  This is the Deflate algorithm (RFC1951), specified for use in
528	  IPSec with the IPCOMP protocol (RFC3173, RFC2394).
529
530	  You will most probably want this if using IPSec.
531
532config CRYPTO_MICHAEL_MIC
533	tristate "Michael MIC keyed digest algorithm"
534	select CRYPTO_ALGAPI
535	help
536	  Michael MIC is used for message integrity protection in TKIP
537	  (IEEE 802.11i). This algorithm is required for TKIP, but it
538	  should not be used for other purposes because of the weakness
539	  of the algorithm.
540
541config CRYPTO_CRC32C
542	tristate "CRC32c CRC algorithm"
543	select CRYPTO_ALGAPI
544	select LIBCRC32C
545	help
546	  Castagnoli, et al Cyclic Redundancy-Check Algorithm.  Used
547	  by iSCSI for header and data digests and by others.
548	  See Castagnoli93.  This implementation uses lib/libcrc32c.
549          Module will be crc32c.
550
551config CRYPTO_CAMELLIA
552	tristate "Camellia cipher algorithms"
553	depends on CRYPTO
554	select CRYPTO_ALGAPI
555	help
556	  Camellia cipher algorithms module.
557
558	  Camellia is a symmetric key block cipher developed jointly
559	  at NTT and Mitsubishi Electric Corporation.
560
561	  The Camellia specifies three key sizes: 128, 192 and 256 bits.
562
563	  See also:
564	  <https://info.isl.ntt.co.jp/crypt/eng/camellia/index_s.html>
565
566config CRYPTO_TEST
567	tristate "Testing module"
568	depends on m
569	select CRYPTO_ALGAPI
570	select CRYPTO_AEAD
571	select CRYPTO_BLKCIPHER
572	help
573	  Quick & dirty crypto test module.
574
575config CRYPTO_AUTHENC
576	tristate "Authenc support"
577	select CRYPTO_AEAD
578	select CRYPTO_BLKCIPHER
579	select CRYPTO_MANAGER
580	select CRYPTO_HASH
581	help
582	  Authenc: Combined mode wrapper for IPsec.
583	  This is required for IPSec.
584
585config CRYPTO_LZO
586	tristate "LZO compression algorithm"
587	select CRYPTO_ALGAPI
588	select LZO_COMPRESS
589	select LZO_DECOMPRESS
590	help
591	  This is the LZO algorithm.
592
593source "drivers/crypto/Kconfig"
594
595endif	# if CRYPTO
596