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