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	tristate "Cryptographic API"
17	help
18	  This option provides the core Cryptographic API.
19
20if CRYPTO
21
22comment "Crypto core or helper"
23
24config CRYPTO_FIPS
25	bool "FIPS 200 compliance"
26	depends on CRYPTO_ANSI_CPRNG && !CRYPTO_MANAGER_DISABLE_TESTS
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
31	  this is.
32
33config CRYPTO_ALGAPI
34	tristate
35	select CRYPTO_ALGAPI2
36	help
37	  This option provides the API for cryptographic algorithms.
38
39config CRYPTO_ALGAPI2
40	tristate
41
42config CRYPTO_AEAD
43	tristate
44	select CRYPTO_AEAD2
45	select CRYPTO_ALGAPI
46
47config CRYPTO_AEAD2
48	tristate
49	select CRYPTO_ALGAPI2
50
51config CRYPTO_BLKCIPHER
52	tristate
53	select CRYPTO_BLKCIPHER2
54	select CRYPTO_ALGAPI
55
56config CRYPTO_BLKCIPHER2
57	tristate
58	select CRYPTO_ALGAPI2
59	select CRYPTO_RNG2
60	select CRYPTO_WORKQUEUE
61
62config CRYPTO_HASH
63	tristate
64	select CRYPTO_HASH2
65	select CRYPTO_ALGAPI
66
67config CRYPTO_HASH2
68	tristate
69	select CRYPTO_ALGAPI2
70
71config CRYPTO_RNG
72	tristate
73	select CRYPTO_RNG2
74	select CRYPTO_ALGAPI
75
76config CRYPTO_RNG2
77	tristate
78	select CRYPTO_ALGAPI2
79
80config CRYPTO_PCOMP
81	tristate
82	select CRYPTO_PCOMP2
83	select CRYPTO_ALGAPI
84
85config CRYPTO_PCOMP2
86	tristate
87	select CRYPTO_ALGAPI2
88
89config CRYPTO_MANAGER
90	tristate "Cryptographic algorithm manager"
91	select CRYPTO_MANAGER2
92	help
93	  Create default cryptographic template instantiations such as
94	  cbc(aes).
95
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
101	select CRYPTO_PCOMP2
102
103config CRYPTO_USER
104	tristate "Userspace cryptographic algorithm configuration"
105	depends on NET
106	select CRYPTO_MANAGER
107	help
108	  Userspace configuration for cryptographic instantiations such as
109	  cbc(aes).
110
111config CRYPTO_MANAGER_DISABLE_TESTS
112	bool "Disable run-time self tests"
113	default y
114	depends on CRYPTO_MANAGER2
115	help
116	  Disable run-time self tests that normally take place at
117	  algorithm registration.
118
119config CRYPTO_GF128MUL
120	tristate "GF(2^128) multiplication functions"
121	help
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.
127
128config CRYPTO_NULL
129	tristate "Null algorithms"
130	select CRYPTO_ALGAPI
131	select CRYPTO_BLKCIPHER
132	select CRYPTO_HASH
133	help
134	  These are 'Null' algorithms, used by IPsec, which do nothing.
135
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
146config CRYPTO_WORKQUEUE
147       tristate
148
149config CRYPTO_CRYPTD
150	tristate "Software async crypto daemon"
151	select CRYPTO_BLKCIPHER
152	select CRYPTO_HASH
153	select CRYPTO_MANAGER
154	select CRYPTO_WORKQUEUE
155	help
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.
159
160config CRYPTO_AUTHENC
161	tristate "Authenc support"
162	select CRYPTO_AEAD
163	select CRYPTO_BLKCIPHER
164	select CRYPTO_MANAGER
165	select CRYPTO_HASH
166	help
167	  Authenc: Combined mode wrapper for IPsec.
168	  This is required for IPSec.
169
170config CRYPTO_TEST
171	tristate "Testing module"
172	depends on m
173	select CRYPTO_MANAGER
174	help
175	  Quick & dirty crypto test module.
176
177comment "Authenticated Encryption with Associated Data"
178
179config CRYPTO_CCM
180	tristate "CCM support"
181	select CRYPTO_CTR
182	select CRYPTO_AEAD
183	help
184	  Support for Counter with CBC MAC. Required for IPsec.
185
186config CRYPTO_GCM
187	tristate "GCM/GMAC support"
188	select CRYPTO_CTR
189	select CRYPTO_AEAD
190	select CRYPTO_GHASH
191	help
192	  Support for Galois/Counter Mode (GCM) and Galois Message
193	  Authentication Code (GMAC). Required for IPSec.
194
195config CRYPTO_SEQIV
196	tristate "Sequence Number IV Generator"
197	select CRYPTO_AEAD
198	select CRYPTO_BLKCIPHER
199	select CRYPTO_RNG
200	help
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
203
204comment "Block modes"
205
206config CRYPTO_CBC
207	tristate "CBC support"
208	select CRYPTO_BLKCIPHER
209	select CRYPTO_MANAGER
210	help
211	  CBC: Cipher Block Chaining mode
212	  This block cipher algorithm is required for IPSec.
213
214config CRYPTO_CTR
215	tristate "CTR support"
216	select CRYPTO_BLKCIPHER
217	select CRYPTO_SEQIV
218	select CRYPTO_MANAGER
219	help
220	  CTR: Counter mode
221	  This block cipher algorithm is required for IPSec.
222
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"
236	select CRYPTO_BLKCIPHER
237	select CRYPTO_MANAGER
238	help
239	  ECB: Electronic CodeBook mode
240	  This is the simplest block cipher algorithm.  It simply encrypts
241	  the input block by block.
242
243config CRYPTO_LRW
244	tristate "LRW support"
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
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
263config CRYPTO_XTS
264	tristate "XTS support"
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
273comment "Hash modes"
274
275config CRYPTO_HMAC
276	tristate "HMAC support"
277	select CRYPTO_HASH
278	select CRYPTO_MANAGER
279	help
280	  HMAC: Keyed-Hashing for Message Authentication (RFC2104).
281	  This is required for IPSec.
282
283config CRYPTO_XCBC
284	tristate "XCBC support"
285	depends on EXPERIMENTAL
286	select CRYPTO_HASH
287	select CRYPTO_MANAGER
288	help
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
293
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
306comment "Digest"
307
308config CRYPTO_CRC32C
309	tristate "CRC32c CRC algorithm"
310	select CRYPTO_HASH
311	select CRC32
312	help
313	  Castagnoli, et al Cyclic Redundancy-Check Algorithm.  Used
314	  by iSCSI for header and data digests and by others.
315	  See Castagnoli93.  Module will be crc32c.
316
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
329config CRYPTO_GHASH
330	tristate "GHASH digest algorithm"
331	select CRYPTO_GF128MUL
332	help
333	  GHASH is message digest algorithm for GCM (Galois/Counter Mode).
334
335config CRYPTO_MD4
336	tristate "MD4 digest algorithm"
337	select CRYPTO_HASH
338	help
339	  MD4 message digest algorithm (RFC1320).
340
341config CRYPTO_MD5
342	tristate "MD5 digest algorithm"
343	select CRYPTO_HASH
344	help
345	  MD5 message digest algorithm (RFC1321).
346
347config CRYPTO_MICHAEL_MIC
348	tristate "Michael MIC keyed digest algorithm"
349	select CRYPTO_HASH
350	help
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.
355
356config CRYPTO_RMD128
357	tristate "RIPEMD-128 digest algorithm"
358	select CRYPTO_HASH
359	help
360	  RIPEMD-128 (ISO/IEC 10118-3:2004).
361
362	  RIPEMD-128 is a 128-bit cryptographic hash function. It should only
363	  be used as a secure replacement for RIPEMD. For other use cases,
364	  RIPEMD-160 should be used.
365
366	  Developed by Hans Dobbertin, Antoon Bosselaers and Bart Preneel.
367	  See <http://homes.esat.kuleuven.be/~bosselae/ripemd160.html>
368
369config CRYPTO_RMD160
370	tristate "RIPEMD-160 digest algorithm"
371	select CRYPTO_HASH
372	help
373	  RIPEMD-160 (ISO/IEC 10118-3:2004).
374
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).
379
380	  It's speed is comparable to SHA1 and there are no known attacks
381	  against RIPEMD-160.
382
383	  Developed by Hans Dobbertin, Antoon Bosselaers and Bart Preneel.
384	  See <http://homes.esat.kuleuven.be/~bosselae/ripemd160.html>
385
386config CRYPTO_RMD256
387	tristate "RIPEMD-256 digest algorithm"
388	select CRYPTO_HASH
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).
394
395	  Developed by Hans Dobbertin, Antoon Bosselaers and Bart Preneel.
396	  See <http://homes.esat.kuleuven.be/~bosselae/ripemd160.html>
397
398config CRYPTO_RMD320
399	tristate "RIPEMD-320 digest algorithm"
400	select CRYPTO_HASH
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).
406
407	  Developed by Hans Dobbertin, Antoon Bosselaers and Bart Preneel.
408	  See <http://homes.esat.kuleuven.be/~bosselae/ripemd160.html>
409
410config CRYPTO_SHA1
411	tristate "SHA1 digest algorithm"
412	select CRYPTO_HASH
413	help
414	  SHA-1 secure hash standard (FIPS 180-1/DFIPS 180-2).
415
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
426config CRYPTO_SHA256
427	tristate "SHA224 and SHA256 digest algorithm"
428	select CRYPTO_HASH
429	help
430	  SHA256 secure hash standard (DFIPS 180-2).
431
432	  This version of SHA implements a 256 bit hash with 128 bits of
433	  security against collision attacks.
434
435	  This code also includes SHA-224, a 224 bit hash with 112 bits
436	  of security against collision attacks.
437
438config CRYPTO_SHA512
439	tristate "SHA384 and SHA512 digest algorithms"
440	select CRYPTO_HASH
441	help
442	  SHA512 secure hash standard (DFIPS 180-2).
443
444	  This version of SHA implements a 512 bit hash with 256 bits of
445	  security against collision attacks.
446
447	  This code also includes SHA-384, a 384 bit hash with 192 bits
448	  of security against collision attacks.
449
450config CRYPTO_TGR192
451	tristate "Tiger digest algorithms"
452	select CRYPTO_HASH
453	help
454	  Tiger hash algorithm 192, 160 and 128-bit hashes
455
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.
459
460	  See also:
461	  <http://www.cs.technion.ac.il/~biham/Reports/Tiger/>.
462
463config CRYPTO_WP512
464	tristate "Whirlpool digest algorithms"
465	select CRYPTO_HASH
466	help
467	  Whirlpool hash algorithm 512, 384 and 256-bit hashes
468
469	  Whirlpool-512 is part of the NESSIE cryptographic primitives.
470	  Whirlpool will be part of the ISO/IEC 10118-3:2003(E) standard
471
472	  See also:
473	  <http://www.larc.usp.br/~pbarreto/WhirlpoolPage.html>
474
475config CRYPTO_GHASH_CLMUL_NI_INTEL
476	tristate "GHASH digest algorithm (CLMUL-NI accelerated)"
477	depends on X86 && 64BIT
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
483comment "Ciphers"
484
485config CRYPTO_AES
486	tristate "AES cipher algorithms"
487	select CRYPTO_ALGAPI
488	help
489	  AES cipher algorithms (FIPS-197). AES uses the Rijndael
490	  algorithm.
491
492	  Rijndael appears to be consistently a very good performer in
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.
500
501	  The AES specifies three key sizes: 128, 192 and 256 bits
502
503	  See <http://csrc.nist.gov/CryptoToolkit/aes/> for more information.
504
505config CRYPTO_AES_586
506	tristate "AES cipher algorithms (i586)"
507	depends on (X86 || UML_X86) && !64BIT
508	select CRYPTO_ALGAPI
509	select CRYPTO_AES
510	help
511	  AES cipher algorithms (FIPS-197). AES uses the Rijndael
512	  algorithm.
513
514	  Rijndael appears to be consistently a very good performer in
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.
522
523	  The AES specifies three key sizes: 128, 192 and 256 bits
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)"
529	depends on (X86 || UML_X86) && 64BIT
530	select CRYPTO_ALGAPI
531	select CRYPTO_AES
532	help
533	  AES cipher algorithms (FIPS-197). AES uses the Rijndael
534	  algorithm.
535
536	  Rijndael appears to be consistently a very good performer in
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
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)"
551	depends on X86
552	select CRYPTO_AES_X86_64 if 64BIT
553	select CRYPTO_AES_586 if !64BIT
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
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.
570
571	  The AES specifies three key sizes: 128, 192 and 256 bits
572
573	  See <http://csrc.nist.gov/encryption/aes/> for more information.
574
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.
579
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:
591	  <https://www.cosic.esat.kuleuven.be/nessie/reports/>
592	  <http://www.larc.usp.br/~pbarreto/AnubisPage.html>
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
608	select CRYPTO_BLOWFISH_COMMON
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
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
628config CRYPTO_BLOWFISH_X86_64
629	tristate "Blowfish cipher algorithm (x86_64)"
630	depends on X86 && 64BIT
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
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
658config CRYPTO_CAMELLIA_X86_64
659	tristate "Camellia cipher algorithm (x86_64)"
660	depends on X86 && 64BIT
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
676config CRYPTO_CAST5
677	tristate "CAST5 (CAST-128) cipher algorithm"
678	select CRYPTO_ALGAPI
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"
685	select CRYPTO_ALGAPI
686	help
687	  The CAST6 encryption algorithm (synonymous with CAST-256) is
688	  described in RFC2612.
689
690config CRYPTO_DES
691	tristate "DES and Triple DES EDE cipher algorithms"
692	select CRYPTO_ALGAPI
693	help
694	  DES cipher algorithm (FIPS 46-2), and Triple DES EDE (FIPS 46-3).
695
696config CRYPTO_FCRYPT
697	tristate "FCrypt cipher algorithm"
698	select CRYPTO_ALGAPI
699	select CRYPTO_BLKCIPHER
700	help
701	  FCrypt algorithm used by RxRPC.
702
703config CRYPTO_KHAZAD
704	tristate "Khazad cipher algorithm"
705	select CRYPTO_ALGAPI
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:
714	  <http://www.larc.usp.br/~pbarreto/KhazadPage.html>
715
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/>
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
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/>
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
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/>
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>
756
757config CRYPTO_SEED
758	tristate "SEED cipher algorithm"
759	select CRYPTO_ALGAPI
760	help
761	  SEED cipher algorithm (RFC4269).
762
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"
773	select CRYPTO_ALGAPI
774	help
775	  Serpent cipher algorithm, by Anderson, Biham & Knudsen.
776
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
784config CRYPTO_SERPENT_SSE2_X86_64
785	tristate "Serpent cipher algorithm (x86_64/SSE2)"
786	depends on X86 && 64BIT
787	select CRYPTO_ALGAPI
788	select CRYPTO_CRYPTD
789	select CRYPTO_SERPENT
790	select CRYPTO_LRW
791	select CRYPTO_XTS
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
804config CRYPTO_SERPENT_SSE2_586
805	tristate "Serpent cipher algorithm (i586/SSE2)"
806	depends on X86 && !64BIT
807	select CRYPTO_ALGAPI
808	select CRYPTO_CRYPTD
809	select CRYPTO_SERPENT
810	select CRYPTO_LRW
811	select CRYPTO_XTS
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
824config CRYPTO_TEA
825	tristate "TEA, XTEA and XETA cipher algorithms"
826	select CRYPTO_ALGAPI
827	help
828	  TEA cipher algorithm.
829
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"
843	select CRYPTO_ALGAPI
844	select CRYPTO_TWOFISH_COMMON
845	help
846	  Twofish cipher algorithm.
847
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.
852
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.
874
875	  See also:
876	  <http://www.schneier.com/twofish.html>
877
878config CRYPTO_TWOFISH_X86_64
879	tristate "Twofish cipher algorithm (x86_64)"
880	depends on (X86 || UML_X86) && 64BIT
881	select CRYPTO_ALGAPI
882	select CRYPTO_TWOFISH_COMMON
883	help
884	  Twofish cipher algorithm (x86_64).
885
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
894config CRYPTO_TWOFISH_X86_64_3WAY
895	tristate "Twofish cipher algorithm (x86_64, 3-way parallel)"
896	depends on X86 && 64BIT
897	select CRYPTO_ALGAPI
898	select CRYPTO_TWOFISH_COMMON
899	select CRYPTO_TWOFISH_X86_64
900	select CRYPTO_LRW
901	select CRYPTO_XTS
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
916comment "Compression"
917
918config CRYPTO_DEFLATE
919	tristate "Deflate compression algorithm"
920	select CRYPTO_ALGAPI
921	select ZLIB_INFLATE
922	select ZLIB_DEFLATE
923	help
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.
928
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
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
946comment "Random Number Generation"
947
948config CRYPTO_ANSI_CPRNG
949	tristate "Pseudo Random Number Generation for Cryptographic modules"
950	default m
951	select CRYPTO_AES
952	select CRYPTO_RNG
953	help
954	  This option enables the generic pseudo random number generator
955	  for cryptographic modules.  Uses the Algorithm specified in
956	  ANSI X9.31 A.2.4. Note that this option must be enabled if
957	  CRYPTO_FIPS is selected
958
959config CRYPTO_USER_API
960	tristate
961
962config CRYPTO_USER_API_HASH
963	tristate "User-space interface for hash algorithms"
964	depends on NET
965	select CRYPTO_HASH
966	select CRYPTO_USER_API
967	help
968	  This option enables the user-spaces interface for hash
969	  algorithms.
970
971config CRYPTO_USER_API_SKCIPHER
972	tristate "User-space interface for symmetric key cipher algorithms"
973	depends on NET
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
980source "drivers/crypto/Kconfig"
981
982endif	# if CRYPTO
983