• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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_DRBG) && !CRYPTO_MANAGER_DISABLE_TESTS
27	depends on MODULE_SIG
28	help
29	  This options enables the fips boot option which is
30	  required if you want to system to operate in a FIPS 200
31	  certification.  You should say no unless you know what
32	  this is.
33
34config CRYPTO_ALGAPI
35	tristate
36	select CRYPTO_ALGAPI2
37	help
38	  This option provides the API for cryptographic algorithms.
39
40config CRYPTO_ALGAPI2
41	tristate
42
43config CRYPTO_AEAD
44	tristate
45	select CRYPTO_AEAD2
46	select CRYPTO_ALGAPI
47
48config CRYPTO_AEAD2
49	tristate
50	select CRYPTO_ALGAPI2
51
52config CRYPTO_BLKCIPHER
53	tristate
54	select CRYPTO_BLKCIPHER2
55	select CRYPTO_ALGAPI
56
57config CRYPTO_BLKCIPHER2
58	tristate
59	select CRYPTO_ALGAPI2
60	select CRYPTO_RNG2
61	select CRYPTO_WORKQUEUE
62
63config CRYPTO_HASH
64	tristate
65	select CRYPTO_HASH2
66	select CRYPTO_ALGAPI
67
68config CRYPTO_HASH2
69	tristate
70	select CRYPTO_ALGAPI2
71
72config CRYPTO_RNG
73	tristate
74	select CRYPTO_RNG2
75	select CRYPTO_ALGAPI
76
77config CRYPTO_RNG2
78	tristate
79	select CRYPTO_ALGAPI2
80
81config CRYPTO_PCOMP
82	tristate
83	select CRYPTO_PCOMP2
84	select CRYPTO_ALGAPI
85
86config CRYPTO_PCOMP2
87	tristate
88	select CRYPTO_ALGAPI2
89
90config CRYPTO_MANAGER
91	tristate "Cryptographic algorithm manager"
92	select CRYPTO_MANAGER2
93	help
94	  Create default cryptographic template instantiations such as
95	  cbc(aes).
96
97config CRYPTO_MANAGER2
98	def_tristate CRYPTO_MANAGER || (CRYPTO_MANAGER!=n && CRYPTO_ALGAPI=y)
99	select CRYPTO_AEAD2
100	select CRYPTO_HASH2
101	select CRYPTO_BLKCIPHER2
102	select CRYPTO_PCOMP2
103
104config CRYPTO_USER
105	tristate "Userspace cryptographic algorithm configuration"
106	depends on NET
107	select CRYPTO_MANAGER
108	help
109	  Userspace configuration for cryptographic instantiations such as
110	  cbc(aes).
111
112config CRYPTO_MANAGER_DISABLE_TESTS
113	bool "Disable run-time self tests"
114	default y
115	depends on CRYPTO_MANAGER2
116	help
117	  Disable run-time self tests that normally take place at
118	  algorithm registration.
119
120config CRYPTO_GF128MUL
121	tristate "GF(2^128) multiplication functions"
122	help
123	  Efficient table driven implementation of multiplications in the
124	  field GF(2^128).  This is needed by some cypher modes. This
125	  option will be selected automatically if you select such a
126	  cipher mode.  Only select this option by hand if you expect to load
127	  an external module that requires these functions.
128
129config CRYPTO_NULL
130	tristate "Null algorithms"
131	select CRYPTO_ALGAPI
132	select CRYPTO_BLKCIPHER
133	select CRYPTO_HASH
134	help
135	  These are 'Null' algorithms, used by IPsec, which do nothing.
136
137config CRYPTO_PCRYPT
138	tristate "Parallel crypto engine"
139	depends on SMP
140	select PADATA
141	select CRYPTO_MANAGER
142	select CRYPTO_AEAD
143	help
144	  This converts an arbitrary crypto algorithm into a parallel
145	  algorithm that executes in kernel threads.
146
147config CRYPTO_WORKQUEUE
148       tristate
149
150config CRYPTO_CRYPTD
151	tristate "Software async crypto daemon"
152	select CRYPTO_BLKCIPHER
153	select CRYPTO_HASH
154	select CRYPTO_MANAGER
155	select CRYPTO_WORKQUEUE
156	help
157	  This is a generic software asynchronous crypto daemon that
158	  converts an arbitrary synchronous software crypto algorithm
159	  into an asynchronous algorithm that executes in a kernel thread.
160
161config CRYPTO_MCRYPTD
162	tristate "Software async multi-buffer crypto daemon"
163	select CRYPTO_BLKCIPHER
164	select CRYPTO_HASH
165	select CRYPTO_MANAGER
166	select CRYPTO_WORKQUEUE
167	help
168	  This is a generic software asynchronous crypto daemon that
169	  provides the kernel thread to assist multi-buffer crypto
170	  algorithms for submitting jobs and flushing jobs in multi-buffer
171	  crypto algorithms.  Multi-buffer crypto algorithms are executed
172	  in the context of this kernel thread and drivers can post
173	  their crypto request asynchronously to be processed by this daemon.
174
175config CRYPTO_AUTHENC
176	tristate "Authenc support"
177	select CRYPTO_AEAD
178	select CRYPTO_BLKCIPHER
179	select CRYPTO_MANAGER
180	select CRYPTO_HASH
181	help
182	  Authenc: Combined mode wrapper for IPsec.
183	  This is required for IPSec.
184
185config CRYPTO_TEST
186	tristate "Testing module"
187	depends on m
188	select CRYPTO_MANAGER
189	help
190	  Quick & dirty crypto test module.
191
192config CRYPTO_ABLK_HELPER
193	tristate
194	select CRYPTO_CRYPTD
195
196config CRYPTO_GLUE_HELPER_X86
197	tristate
198	depends on X86
199	select CRYPTO_ALGAPI
200
201comment "Authenticated Encryption with Associated Data"
202
203config CRYPTO_CCM
204	tristate "CCM support"
205	select CRYPTO_CTR
206	select CRYPTO_AEAD
207	help
208	  Support for Counter with CBC MAC. Required for IPsec.
209
210config CRYPTO_GCM
211	tristate "GCM/GMAC support"
212	select CRYPTO_CTR
213	select CRYPTO_AEAD
214	select CRYPTO_GHASH
215	select CRYPTO_NULL
216	help
217	  Support for Galois/Counter Mode (GCM) and Galois Message
218	  Authentication Code (GMAC). Required for IPSec.
219
220config CRYPTO_SEQIV
221	tristate "Sequence Number IV Generator"
222	select CRYPTO_AEAD
223	select CRYPTO_BLKCIPHER
224	select CRYPTO_RNG
225	help
226	  This IV generator generates an IV based on a sequence number by
227	  xoring it with a salt.  This algorithm is mainly useful for CTR
228
229comment "Block modes"
230
231config CRYPTO_CBC
232	tristate "CBC support"
233	select CRYPTO_BLKCIPHER
234	select CRYPTO_MANAGER
235	help
236	  CBC: Cipher Block Chaining mode
237	  This block cipher algorithm is required for IPSec.
238
239config CRYPTO_CTR
240	tristate "CTR support"
241	select CRYPTO_BLKCIPHER
242	select CRYPTO_SEQIV
243	select CRYPTO_MANAGER
244	help
245	  CTR: Counter mode
246	  This block cipher algorithm is required for IPSec.
247
248config CRYPTO_CTS
249	tristate "CTS support"
250	select CRYPTO_BLKCIPHER
251	help
252	  CTS: Cipher Text Stealing
253	  This is the Cipher Text Stealing mode as described by
254	  Section 8 of rfc2040 and referenced by rfc3962.
255	  (rfc3962 includes errata information in its Appendix A)
256	  This mode is required for Kerberos gss mechanism support
257	  for AES encryption.
258
259config CRYPTO_ECB
260	tristate "ECB support"
261	select CRYPTO_BLKCIPHER
262	select CRYPTO_MANAGER
263	help
264	  ECB: Electronic CodeBook mode
265	  This is the simplest block cipher algorithm.  It simply encrypts
266	  the input block by block.
267
268config CRYPTO_LRW
269	tristate "LRW support"
270	select CRYPTO_BLKCIPHER
271	select CRYPTO_MANAGER
272	select CRYPTO_GF128MUL
273	help
274	  LRW: Liskov Rivest Wagner, a tweakable, non malleable, non movable
275	  narrow block cipher mode for dm-crypt.  Use it with cipher
276	  specification string aes-lrw-benbi, the key must be 256, 320 or 384.
277	  The first 128, 192 or 256 bits in the key are used for AES and the
278	  rest is used to tie each cipher block to its logical position.
279
280config CRYPTO_PCBC
281	tristate "PCBC support"
282	select CRYPTO_BLKCIPHER
283	select CRYPTO_MANAGER
284	help
285	  PCBC: Propagating Cipher Block Chaining mode
286	  This block cipher algorithm is required for RxRPC.
287
288config CRYPTO_XTS
289	tristate "XTS support"
290	select CRYPTO_BLKCIPHER
291	select CRYPTO_MANAGER
292	select CRYPTO_GF128MUL
293	help
294	  XTS: IEEE1619/D16 narrow block cipher use with aes-xts-plain,
295	  key size 256, 384 or 512 bits. This implementation currently
296	  can't handle a sectorsize which is not a multiple of 16 bytes.
297
298comment "Hash modes"
299
300config CRYPTO_CMAC
301	tristate "CMAC support"
302	select CRYPTO_HASH
303	select CRYPTO_MANAGER
304	help
305	  Cipher-based Message Authentication Code (CMAC) specified by
306	  The National Institute of Standards and Technology (NIST).
307
308	  https://tools.ietf.org/html/rfc4493
309	  http://csrc.nist.gov/publications/nistpubs/800-38B/SP_800-38B.pdf
310
311config CRYPTO_HMAC
312	tristate "HMAC support"
313	select CRYPTO_HASH
314	select CRYPTO_MANAGER
315	help
316	  HMAC: Keyed-Hashing for Message Authentication (RFC2104).
317	  This is required for IPSec.
318
319config CRYPTO_XCBC
320	tristate "XCBC support"
321	select CRYPTO_HASH
322	select CRYPTO_MANAGER
323	help
324	  XCBC: Keyed-Hashing with encryption algorithm
325		http://www.ietf.org/rfc/rfc3566.txt
326		http://csrc.nist.gov/encryption/modes/proposedmodes/
327		 xcbc-mac/xcbc-mac-spec.pdf
328
329config CRYPTO_VMAC
330	tristate "VMAC support"
331	select CRYPTO_HASH
332	select CRYPTO_MANAGER
333	help
334	  VMAC is a message authentication algorithm designed for
335	  very high speed on 64-bit architectures.
336
337	  See also:
338	  <http://fastcrypto.org/vmac>
339
340comment "Digest"
341
342config CRYPTO_CRC32C
343	tristate "CRC32c CRC algorithm"
344	select CRYPTO_HASH
345	select CRC32
346	help
347	  Castagnoli, et al Cyclic Redundancy-Check Algorithm.  Used
348	  by iSCSI for header and data digests and by others.
349	  See Castagnoli93.  Module will be crc32c.
350
351config CRYPTO_CRC32C_INTEL
352	tristate "CRC32c INTEL hardware acceleration"
353	depends on X86
354	select CRYPTO_HASH
355	help
356	  In Intel processor with SSE4.2 supported, the processor will
357	  support CRC32C implementation using hardware accelerated CRC32
358	  instruction. This option will create 'crc32c-intel' module,
359	  which will enable any routine to use the CRC32 instruction to
360	  gain performance compared with software implementation.
361	  Module will be crc32c-intel.
362
363config CRYPTO_CRC32C_SPARC64
364	tristate "CRC32c CRC algorithm (SPARC64)"
365	depends on SPARC64
366	select CRYPTO_HASH
367	select CRC32
368	help
369	  CRC32c CRC algorithm implemented using sparc64 crypto instructions,
370	  when available.
371
372config CRYPTO_CRC32
373	tristate "CRC32 CRC algorithm"
374	select CRYPTO_HASH
375	select CRC32
376	help
377	  CRC-32-IEEE 802.3 cyclic redundancy-check algorithm.
378	  Shash crypto api wrappers to crc32_le function.
379
380config CRYPTO_CRC32_PCLMUL
381	tristate "CRC32 PCLMULQDQ hardware acceleration"
382	depends on X86
383	select CRYPTO_HASH
384	select CRC32
385	help
386	  From Intel Westmere and AMD Bulldozer processor with SSE4.2
387	  and PCLMULQDQ supported, the processor will support
388	  CRC32 PCLMULQDQ implementation using hardware accelerated PCLMULQDQ
389	  instruction. This option will create 'crc32-plcmul' module,
390	  which will enable any routine to use the CRC-32-IEEE 802.3 checksum
391	  and gain better performance as compared with the table implementation.
392
393config CRYPTO_CRCT10DIF
394	tristate "CRCT10DIF algorithm"
395	select CRYPTO_HASH
396	help
397	  CRC T10 Data Integrity Field computation is being cast as
398	  a crypto transform.  This allows for faster crc t10 diff
399	  transforms to be used if they are available.
400
401config CRYPTO_CRCT10DIF_PCLMUL
402	tristate "CRCT10DIF PCLMULQDQ hardware acceleration"
403	depends on X86 && 64BIT && CRC_T10DIF
404	select CRYPTO_HASH
405	help
406	  For x86_64 processors with SSE4.2 and PCLMULQDQ supported,
407	  CRC T10 DIF PCLMULQDQ computation can be hardware
408	  accelerated PCLMULQDQ instruction. This option will create
409	  'crct10dif-plcmul' module, which is faster when computing the
410	  crct10dif checksum as compared with the generic table implementation.
411
412config CRYPTO_GHASH
413	tristate "GHASH digest algorithm"
414	select CRYPTO_GF128MUL
415	help
416	  GHASH is message digest algorithm for GCM (Galois/Counter Mode).
417
418config CRYPTO_MD4
419	tristate "MD4 digest algorithm"
420	select CRYPTO_HASH
421	help
422	  MD4 message digest algorithm (RFC1320).
423
424config CRYPTO_MD5
425	tristate "MD5 digest algorithm"
426	select CRYPTO_HASH
427	help
428	  MD5 message digest algorithm (RFC1321).
429
430config CRYPTO_MD5_SPARC64
431	tristate "MD5 digest algorithm (SPARC64)"
432	depends on SPARC64
433	select CRYPTO_MD5
434	select CRYPTO_HASH
435	help
436	  MD5 message digest algorithm (RFC1321) implemented
437	  using sparc64 crypto instructions, when available.
438
439config CRYPTO_MICHAEL_MIC
440	tristate "Michael MIC keyed digest algorithm"
441	select CRYPTO_HASH
442	help
443	  Michael MIC is used for message integrity protection in TKIP
444	  (IEEE 802.11i). This algorithm is required for TKIP, but it
445	  should not be used for other purposes because of the weakness
446	  of the algorithm.
447
448config CRYPTO_RMD128
449	tristate "RIPEMD-128 digest algorithm"
450	select CRYPTO_HASH
451	help
452	  RIPEMD-128 (ISO/IEC 10118-3:2004).
453
454	  RIPEMD-128 is a 128-bit cryptographic hash function. It should only
455	  be used as a secure replacement for RIPEMD. For other use cases,
456	  RIPEMD-160 should be used.
457
458	  Developed by Hans Dobbertin, Antoon Bosselaers and Bart Preneel.
459	  See <http://homes.esat.kuleuven.be/~bosselae/ripemd160.html>
460
461config CRYPTO_RMD160
462	tristate "RIPEMD-160 digest algorithm"
463	select CRYPTO_HASH
464	help
465	  RIPEMD-160 (ISO/IEC 10118-3:2004).
466
467	  RIPEMD-160 is a 160-bit cryptographic hash function. It is intended
468	  to be used as a secure replacement for the 128-bit hash functions
469	  MD4, MD5 and it's predecessor RIPEMD
470	  (not to be confused with RIPEMD-128).
471
472	  It's speed is comparable to SHA1 and there are no known attacks
473	  against RIPEMD-160.
474
475	  Developed by Hans Dobbertin, Antoon Bosselaers and Bart Preneel.
476	  See <http://homes.esat.kuleuven.be/~bosselae/ripemd160.html>
477
478config CRYPTO_RMD256
479	tristate "RIPEMD-256 digest algorithm"
480	select CRYPTO_HASH
481	help
482	  RIPEMD-256 is an optional extension of RIPEMD-128 with a
483	  256 bit hash. It is intended for applications that require
484	  longer hash-results, without needing a larger security level
485	  (than RIPEMD-128).
486
487	  Developed by Hans Dobbertin, Antoon Bosselaers and Bart Preneel.
488	  See <http://homes.esat.kuleuven.be/~bosselae/ripemd160.html>
489
490config CRYPTO_RMD320
491	tristate "RIPEMD-320 digest algorithm"
492	select CRYPTO_HASH
493	help
494	  RIPEMD-320 is an optional extension of RIPEMD-160 with a
495	  320 bit hash. It is intended for applications that require
496	  longer hash-results, without needing a larger security level
497	  (than RIPEMD-160).
498
499	  Developed by Hans Dobbertin, Antoon Bosselaers and Bart Preneel.
500	  See <http://homes.esat.kuleuven.be/~bosselae/ripemd160.html>
501
502config CRYPTO_SHA1
503	tristate "SHA1 digest algorithm"
504	select CRYPTO_HASH
505	help
506	  SHA-1 secure hash standard (FIPS 180-1/DFIPS 180-2).
507
508config CRYPTO_SHA1_SSSE3
509	tristate "SHA1 digest algorithm (SSSE3/AVX/AVX2)"
510	depends on X86 && 64BIT
511	select CRYPTO_SHA1
512	select CRYPTO_HASH
513	help
514	  SHA-1 secure hash standard (FIPS 180-1/DFIPS 180-2) implemented
515	  using Supplemental SSE3 (SSSE3) instructions or Advanced Vector
516	  Extensions (AVX/AVX2), when available.
517
518config CRYPTO_SHA256_SSSE3
519	tristate "SHA256 digest algorithm (SSSE3/AVX/AVX2)"
520	depends on X86 && 64BIT
521	select CRYPTO_SHA256
522	select CRYPTO_HASH
523	help
524	  SHA-256 secure hash standard (DFIPS 180-2) implemented
525	  using Supplemental SSE3 (SSSE3) instructions, or Advanced Vector
526	  Extensions version 1 (AVX1), or Advanced Vector Extensions
527	  version 2 (AVX2) instructions, when available.
528
529config CRYPTO_SHA512_SSSE3
530	tristate "SHA512 digest algorithm (SSSE3/AVX/AVX2)"
531	depends on X86 && 64BIT
532	select CRYPTO_SHA512
533	select CRYPTO_HASH
534	help
535	  SHA-512 secure hash standard (DFIPS 180-2) implemented
536	  using Supplemental SSE3 (SSSE3) instructions, or Advanced Vector
537	  Extensions version 1 (AVX1), or Advanced Vector Extensions
538	  version 2 (AVX2) instructions, when available.
539
540config CRYPTO_SHA1_SPARC64
541	tristate "SHA1 digest algorithm (SPARC64)"
542	depends on SPARC64
543	select CRYPTO_SHA1
544	select CRYPTO_HASH
545	help
546	  SHA-1 secure hash standard (FIPS 180-1/DFIPS 180-2) implemented
547	  using sparc64 crypto instructions, when available.
548
549config CRYPTO_SHA1_ARM
550	tristate "SHA1 digest algorithm (ARM-asm)"
551	depends on ARM
552	select CRYPTO_SHA1
553	select CRYPTO_HASH
554	help
555	  SHA-1 secure hash standard (FIPS 180-1/DFIPS 180-2) implemented
556	  using optimized ARM assembler.
557
558config CRYPTO_SHA1_ARM_NEON
559	tristate "SHA1 digest algorithm (ARM NEON)"
560	depends on ARM && KERNEL_MODE_NEON
561	select CRYPTO_SHA1_ARM
562	select CRYPTO_SHA1
563	select CRYPTO_HASH
564	help
565	  SHA-1 secure hash standard (FIPS 180-1/DFIPS 180-2) implemented
566	  using optimized ARM NEON assembly, when NEON instructions are
567	  available.
568
569config CRYPTO_SHA1_PPC
570	tristate "SHA1 digest algorithm (powerpc)"
571	depends on PPC
572	help
573	  This is the powerpc hardware accelerated implementation of the
574	  SHA-1 secure hash standard (FIPS 180-1/DFIPS 180-2).
575
576config CRYPTO_SHA1_MB
577	tristate "SHA1 digest algorithm (x86_64 Multi-Buffer, Experimental)"
578	depends on X86 && 64BIT
579	select CRYPTO_SHA1
580	select CRYPTO_HASH
581	select CRYPTO_MCRYPTD
582	help
583	  SHA-1 secure hash standard (FIPS 180-1/DFIPS 180-2) implemented
584	  using multi-buffer technique.  This algorithm computes on
585	  multiple data lanes concurrently with SIMD instructions for
586	  better throughput.  It should not be enabled by default but
587	  used when there is significant amount of work to keep the keep
588	  the data lanes filled to get performance benefit.  If the data
589	  lanes remain unfilled, a flush operation will be initiated to
590	  process the crypto jobs, adding a slight latency.
591
592config CRYPTO_SHA256
593	tristate "SHA224 and SHA256 digest algorithm"
594	select CRYPTO_HASH
595	help
596	  SHA256 secure hash standard (DFIPS 180-2).
597
598	  This version of SHA implements a 256 bit hash with 128 bits of
599	  security against collision attacks.
600
601	  This code also includes SHA-224, a 224 bit hash with 112 bits
602	  of security against collision attacks.
603
604config CRYPTO_SHA256_SPARC64
605	tristate "SHA224 and SHA256 digest algorithm (SPARC64)"
606	depends on SPARC64
607	select CRYPTO_SHA256
608	select CRYPTO_HASH
609	help
610	  SHA-256 secure hash standard (DFIPS 180-2) implemented
611	  using sparc64 crypto instructions, when available.
612
613config CRYPTO_SHA2_ARM_CE
614	tristate "SHA-224/256 digest algorithm (ARM v8 Crypto Extensions)"
615	depends on ARM && KERNEL_MODE_NEON
616	select CRYPTO_SHA256
617	select CRYPTO_HASH
618	help
619	  SHA-256 secure hash standard (DFIPS 180-2) implemented
620	  using special ARMv8 Crypto Extensions.
621
622config CRYPTO_SHA512
623	tristate "SHA384 and SHA512 digest algorithms"
624	select CRYPTO_HASH
625	help
626	  SHA512 secure hash standard (DFIPS 180-2).
627
628	  This version of SHA implements a 512 bit hash with 256 bits of
629	  security against collision attacks.
630
631	  This code also includes SHA-384, a 384 bit hash with 192 bits
632	  of security against collision attacks.
633
634config CRYPTO_SHA512_SPARC64
635	tristate "SHA384 and SHA512 digest algorithm (SPARC64)"
636	depends on SPARC64
637	select CRYPTO_SHA512
638	select CRYPTO_HASH
639	help
640	  SHA-512 secure hash standard (DFIPS 180-2) implemented
641	  using sparc64 crypto instructions, when available.
642
643config CRYPTO_SHA256_ARM
644	tristate "SHA-224/256 digest algorithm (ARM-asm and NEON)"
645	select CRYPTO_HASH
646	help
647	  SHA-256 secure hash standard (DFIPS 180-2) implemented
648	  using optimized ARM assembler and NEON, when available.
649
650
651config CRYPTO_SHA512_ARM_NEON
652	tristate "SHA384 and SHA512 digest algorithm (ARM NEON)"
653	depends on ARM && KERNEL_MODE_NEON
654	select CRYPTO_SHA512
655	select CRYPTO_HASH
656	help
657	  SHA-512 secure hash standard (DFIPS 180-2) implemented
658	  using ARM NEON instructions, when available.
659
660	  This version of SHA implements a 512 bit hash with 256 bits of
661	  security against collision attacks.
662
663	  This code also includes SHA-384, a 384 bit hash with 192 bits
664	  of security against collision attacks.
665
666config CRYPTO_TGR192
667	tristate "Tiger digest algorithms"
668	select CRYPTO_HASH
669	help
670	  Tiger hash algorithm 192, 160 and 128-bit hashes
671
672	  Tiger is a hash function optimized for 64-bit processors while
673	  still having decent performance on 32-bit processors.
674	  Tiger was developed by Ross Anderson and Eli Biham.
675
676	  See also:
677	  <http://www.cs.technion.ac.il/~biham/Reports/Tiger/>.
678
679config CRYPTO_WP512
680	tristate "Whirlpool digest algorithms"
681	select CRYPTO_HASH
682	help
683	  Whirlpool hash algorithm 512, 384 and 256-bit hashes
684
685	  Whirlpool-512 is part of the NESSIE cryptographic primitives.
686	  Whirlpool will be part of the ISO/IEC 10118-3:2003(E) standard
687
688	  See also:
689	  <http://www.larc.usp.br/~pbarreto/WhirlpoolPage.html>
690
691config CRYPTO_GHASH_CLMUL_NI_INTEL
692	tristate "GHASH digest algorithm (CLMUL-NI accelerated)"
693	depends on X86 && 64BIT
694	select CRYPTO_CRYPTD
695	help
696	  GHASH is message digest algorithm for GCM (Galois/Counter Mode).
697	  The implementation is accelerated by CLMUL-NI of Intel.
698
699comment "Ciphers"
700
701config CRYPTO_AES
702	tristate "AES cipher algorithms"
703	select CRYPTO_ALGAPI
704	help
705	  AES cipher algorithms (FIPS-197). AES uses the Rijndael
706	  algorithm.
707
708	  Rijndael appears to be consistently a very good performer in
709	  both hardware and software across a wide range of computing
710	  environments regardless of its use in feedback or non-feedback
711	  modes. Its key setup time is excellent, and its key agility is
712	  good. Rijndael's very low memory requirements make it very well
713	  suited for restricted-space environments, in which it also
714	  demonstrates excellent performance. Rijndael's operations are
715	  among the easiest to defend against power and timing attacks.
716
717	  The AES specifies three key sizes: 128, 192 and 256 bits
718
719	  See <http://csrc.nist.gov/CryptoToolkit/aes/> for more information.
720
721config CRYPTO_AES_586
722	tristate "AES cipher algorithms (i586)"
723	depends on (X86 || UML_X86) && !64BIT
724	select CRYPTO_ALGAPI
725	select CRYPTO_AES
726	help
727	  AES cipher algorithms (FIPS-197). AES uses the Rijndael
728	  algorithm.
729
730	  Rijndael appears to be consistently a very good performer in
731	  both hardware and software across a wide range of computing
732	  environments regardless of its use in feedback or non-feedback
733	  modes. Its key setup time is excellent, and its key agility is
734	  good. Rijndael's very low memory requirements make it very well
735	  suited for restricted-space environments, in which it also
736	  demonstrates excellent performance. Rijndael's operations are
737	  among the easiest to defend against power and timing attacks.
738
739	  The AES specifies three key sizes: 128, 192 and 256 bits
740
741	  See <http://csrc.nist.gov/encryption/aes/> for more information.
742
743config CRYPTO_AES_X86_64
744	tristate "AES cipher algorithms (x86_64)"
745	depends on (X86 || UML_X86) && 64BIT
746	select CRYPTO_ALGAPI
747	select CRYPTO_AES
748	help
749	  AES cipher algorithms (FIPS-197). AES uses the Rijndael
750	  algorithm.
751
752	  Rijndael appears to be consistently a very good performer in
753	  both hardware and software across a wide range of computing
754	  environments regardless of its use in feedback or non-feedback
755	  modes. Its key setup time is excellent, and its key agility is
756	  good. Rijndael's very low memory requirements make it very well
757	  suited for restricted-space environments, in which it also
758	  demonstrates excellent performance. Rijndael's operations are
759	  among the easiest to defend against power and timing attacks.
760
761	  The AES specifies three key sizes: 128, 192 and 256 bits
762
763	  See <http://csrc.nist.gov/encryption/aes/> for more information.
764
765config CRYPTO_AES_NI_INTEL
766	tristate "AES cipher algorithms (AES-NI)"
767	depends on X86
768	select CRYPTO_AES_X86_64 if 64BIT
769	select CRYPTO_AES_586 if !64BIT
770	select CRYPTO_CRYPTD
771	select CRYPTO_ABLK_HELPER
772	select CRYPTO_ALGAPI
773	select CRYPTO_GLUE_HELPER_X86 if 64BIT
774	select CRYPTO_LRW
775	select CRYPTO_XTS
776	help
777	  Use Intel AES-NI instructions for AES algorithm.
778
779	  AES cipher algorithms (FIPS-197). AES uses the Rijndael
780	  algorithm.
781
782	  Rijndael appears to be consistently a very good performer in
783	  both hardware and software across a wide range of computing
784	  environments regardless of its use in feedback or non-feedback
785	  modes. Its key setup time is excellent, and its key agility is
786	  good. Rijndael's very low memory requirements make it very well
787	  suited for restricted-space environments, in which it also
788	  demonstrates excellent performance. Rijndael's operations are
789	  among the easiest to defend against power and timing attacks.
790
791	  The AES specifies three key sizes: 128, 192 and 256 bits
792
793	  See <http://csrc.nist.gov/encryption/aes/> for more information.
794
795	  In addition to AES cipher algorithm support, the acceleration
796	  for some popular block cipher mode is supported too, including
797	  ECB, CBC, LRW, PCBC, XTS. The 64 bit version has additional
798	  acceleration for CTR.
799
800config CRYPTO_AES_SPARC64
801	tristate "AES cipher algorithms (SPARC64)"
802	depends on SPARC64
803	select CRYPTO_CRYPTD
804	select CRYPTO_ALGAPI
805	help
806	  Use SPARC64 crypto opcodes for AES algorithm.
807
808	  AES cipher algorithms (FIPS-197). AES uses the Rijndael
809	  algorithm.
810
811	  Rijndael appears to be consistently a very good performer in
812	  both hardware and software across a wide range of computing
813	  environments regardless of its use in feedback or non-feedback
814	  modes. Its key setup time is excellent, and its key agility is
815	  good. Rijndael's very low memory requirements make it very well
816	  suited for restricted-space environments, in which it also
817	  demonstrates excellent performance. Rijndael's operations are
818	  among the easiest to defend against power and timing attacks.
819
820	  The AES specifies three key sizes: 128, 192 and 256 bits
821
822	  See <http://csrc.nist.gov/encryption/aes/> for more information.
823
824	  In addition to AES cipher algorithm support, the acceleration
825	  for some popular block cipher mode is supported too, including
826	  ECB and CBC.
827
828config CRYPTO_AES_ARM
829	tristate "AES cipher algorithms (ARM-asm)"
830	depends on ARM
831	select CRYPTO_ALGAPI
832	select CRYPTO_AES
833	help
834	  Use optimized AES assembler routines for ARM platforms.
835
836	  AES cipher algorithms (FIPS-197). AES uses the Rijndael
837	  algorithm.
838
839	  Rijndael appears to be consistently a very good performer in
840	  both hardware and software across a wide range of computing
841	  environments regardless of its use in feedback or non-feedback
842	  modes. Its key setup time is excellent, and its key agility is
843	  good. Rijndael's very low memory requirements make it very well
844	  suited for restricted-space environments, in which it also
845	  demonstrates excellent performance. Rijndael's operations are
846	  among the easiest to defend against power and timing attacks.
847
848	  The AES specifies three key sizes: 128, 192 and 256 bits
849
850	  See <http://csrc.nist.gov/encryption/aes/> for more information.
851
852config CRYPTO_AES_ARM_BS
853	tristate "Bit sliced AES using NEON instructions"
854	depends on ARM && KERNEL_MODE_NEON
855	select CRYPTO_ALGAPI
856	select CRYPTO_AES_ARM
857	select CRYPTO_ABLK_HELPER
858	help
859	  Use a faster and more secure NEON based implementation of AES in CBC,
860	  CTR and XTS modes
861
862	  Bit sliced AES gives around 45% speedup on Cortex-A15 for CTR mode
863	  and for XTS mode encryption, CBC and XTS mode decryption speedup is
864	  around 25%. (CBC encryption speed is not affected by this driver.)
865	  This implementation does not rely on any lookup tables so it is
866	  believed to be invulnerable to cache timing attacks.
867
868config CRYPTO_AES_ARM_CE
869	tristate "Accelerated AES using ARMv8 Crypto Extensions"
870	depends on ARM && KERNEL_MODE_NEON
871	select CRYPTO_ALGAPI
872	select CRYPTO_ABLK_HELPER
873	help
874	  Use an implementation of AES in CBC, CTR and XTS modes that uses
875	  ARMv8 Crypto Extensions
876
877config CRYPTO_ANUBIS
878	tristate "Anubis cipher algorithm"
879	select CRYPTO_ALGAPI
880	help
881	  Anubis cipher algorithm.
882
883	  Anubis is a variable key length cipher which can use keys from
884	  128 bits to 320 bits in length.  It was evaluated as a entrant
885	  in the NESSIE competition.
886
887	  See also:
888	  <https://www.cosic.esat.kuleuven.be/nessie/reports/>
889	  <http://www.larc.usp.br/~pbarreto/AnubisPage.html>
890
891config CRYPTO_ARC4
892	tristate "ARC4 cipher algorithm"
893	select CRYPTO_BLKCIPHER
894	help
895	  ARC4 cipher algorithm.
896
897	  ARC4 is a stream cipher using keys ranging from 8 bits to 2048
898	  bits in length.  This algorithm is required for driver-based
899	  WEP, but it should not be for other purposes because of the
900	  weakness of the algorithm.
901
902config CRYPTO_BLOWFISH
903	tristate "Blowfish cipher algorithm"
904	select CRYPTO_ALGAPI
905	select CRYPTO_BLOWFISH_COMMON
906	help
907	  Blowfish cipher algorithm, by Bruce Schneier.
908
909	  This is a variable key length cipher which can use keys from 32
910	  bits to 448 bits in length.  It's fast, simple and specifically
911	  designed for use on "large microprocessors".
912
913	  See also:
914	  <http://www.schneier.com/blowfish.html>
915
916config CRYPTO_BLOWFISH_COMMON
917	tristate
918	help
919	  Common parts of the Blowfish cipher algorithm shared by the
920	  generic c and the assembler implementations.
921
922	  See also:
923	  <http://www.schneier.com/blowfish.html>
924
925config CRYPTO_BLOWFISH_X86_64
926	tristate "Blowfish cipher algorithm (x86_64)"
927	depends on X86 && 64BIT
928	select CRYPTO_ALGAPI
929	select CRYPTO_BLOWFISH_COMMON
930	help
931	  Blowfish cipher algorithm (x86_64), by Bruce Schneier.
932
933	  This is a variable key length cipher which can use keys from 32
934	  bits to 448 bits in length.  It's fast, simple and specifically
935	  designed for use on "large microprocessors".
936
937	  See also:
938	  <http://www.schneier.com/blowfish.html>
939
940config CRYPTO_CAMELLIA
941	tristate "Camellia cipher algorithms"
942	depends on CRYPTO
943	select CRYPTO_ALGAPI
944	help
945	  Camellia cipher algorithms module.
946
947	  Camellia is a symmetric key block cipher developed jointly
948	  at NTT and Mitsubishi Electric Corporation.
949
950	  The Camellia specifies three key sizes: 128, 192 and 256 bits.
951
952	  See also:
953	  <https://info.isl.ntt.co.jp/crypt/eng/camellia/index_s.html>
954
955config CRYPTO_CAMELLIA_X86_64
956	tristate "Camellia cipher algorithm (x86_64)"
957	depends on X86 && 64BIT
958	depends on CRYPTO
959	select CRYPTO_ALGAPI
960	select CRYPTO_GLUE_HELPER_X86
961	select CRYPTO_LRW
962	select CRYPTO_XTS
963	help
964	  Camellia cipher algorithm module (x86_64).
965
966	  Camellia is a symmetric key block cipher developed jointly
967	  at NTT and Mitsubishi Electric Corporation.
968
969	  The Camellia specifies three key sizes: 128, 192 and 256 bits.
970
971	  See also:
972	  <https://info.isl.ntt.co.jp/crypt/eng/camellia/index_s.html>
973
974config CRYPTO_CAMELLIA_AESNI_AVX_X86_64
975	tristate "Camellia cipher algorithm (x86_64/AES-NI/AVX)"
976	depends on X86 && 64BIT
977	depends on CRYPTO
978	select CRYPTO_ALGAPI
979	select CRYPTO_CRYPTD
980	select CRYPTO_ABLK_HELPER
981	select CRYPTO_GLUE_HELPER_X86
982	select CRYPTO_CAMELLIA_X86_64
983	select CRYPTO_LRW
984	select CRYPTO_XTS
985	help
986	  Camellia cipher algorithm module (x86_64/AES-NI/AVX).
987
988	  Camellia is a symmetric key block cipher developed jointly
989	  at NTT and Mitsubishi Electric Corporation.
990
991	  The Camellia specifies three key sizes: 128, 192 and 256 bits.
992
993	  See also:
994	  <https://info.isl.ntt.co.jp/crypt/eng/camellia/index_s.html>
995
996config CRYPTO_CAMELLIA_AESNI_AVX2_X86_64
997	tristate "Camellia cipher algorithm (x86_64/AES-NI/AVX2)"
998	depends on X86 && 64BIT
999	depends on CRYPTO
1000	select CRYPTO_ALGAPI
1001	select CRYPTO_CRYPTD
1002	select CRYPTO_ABLK_HELPER
1003	select CRYPTO_GLUE_HELPER_X86
1004	select CRYPTO_CAMELLIA_X86_64
1005	select CRYPTO_CAMELLIA_AESNI_AVX_X86_64
1006	select CRYPTO_LRW
1007	select CRYPTO_XTS
1008	help
1009	  Camellia cipher algorithm module (x86_64/AES-NI/AVX2).
1010
1011	  Camellia is a symmetric key block cipher developed jointly
1012	  at NTT and Mitsubishi Electric Corporation.
1013
1014	  The Camellia specifies three key sizes: 128, 192 and 256 bits.
1015
1016	  See also:
1017	  <https://info.isl.ntt.co.jp/crypt/eng/camellia/index_s.html>
1018
1019config CRYPTO_CAMELLIA_SPARC64
1020	tristate "Camellia cipher algorithm (SPARC64)"
1021	depends on SPARC64
1022	depends on CRYPTO
1023	select CRYPTO_ALGAPI
1024	help
1025	  Camellia cipher algorithm module (SPARC64).
1026
1027	  Camellia is a symmetric key block cipher developed jointly
1028	  at NTT and Mitsubishi Electric Corporation.
1029
1030	  The Camellia specifies three key sizes: 128, 192 and 256 bits.
1031
1032	  See also:
1033	  <https://info.isl.ntt.co.jp/crypt/eng/camellia/index_s.html>
1034
1035config CRYPTO_CAST_COMMON
1036	tristate
1037	help
1038	  Common parts of the CAST cipher algorithms shared by the
1039	  generic c and the assembler implementations.
1040
1041config CRYPTO_CAST5
1042	tristate "CAST5 (CAST-128) cipher algorithm"
1043	select CRYPTO_ALGAPI
1044	select CRYPTO_CAST_COMMON
1045	help
1046	  The CAST5 encryption algorithm (synonymous with CAST-128) is
1047	  described in RFC2144.
1048
1049config CRYPTO_CAST5_AVX_X86_64
1050	tristate "CAST5 (CAST-128) cipher algorithm (x86_64/AVX)"
1051	depends on X86 && 64BIT
1052	select CRYPTO_ALGAPI
1053	select CRYPTO_CRYPTD
1054	select CRYPTO_ABLK_HELPER
1055	select CRYPTO_CAST_COMMON
1056	select CRYPTO_CAST5
1057	help
1058	  The CAST5 encryption algorithm (synonymous with CAST-128) is
1059	  described in RFC2144.
1060
1061	  This module provides the Cast5 cipher algorithm that processes
1062	  sixteen blocks parallel using the AVX instruction set.
1063
1064config CRYPTO_CAST6
1065	tristate "CAST6 (CAST-256) cipher algorithm"
1066	select CRYPTO_ALGAPI
1067	select CRYPTO_CAST_COMMON
1068	help
1069	  The CAST6 encryption algorithm (synonymous with CAST-256) is
1070	  described in RFC2612.
1071
1072config CRYPTO_CAST6_AVX_X86_64
1073	tristate "CAST6 (CAST-256) cipher algorithm (x86_64/AVX)"
1074	depends on X86 && 64BIT
1075	select CRYPTO_ALGAPI
1076	select CRYPTO_CRYPTD
1077	select CRYPTO_ABLK_HELPER
1078	select CRYPTO_GLUE_HELPER_X86
1079	select CRYPTO_CAST_COMMON
1080	select CRYPTO_CAST6
1081	select CRYPTO_LRW
1082	select CRYPTO_XTS
1083	help
1084	  The CAST6 encryption algorithm (synonymous with CAST-256) is
1085	  described in RFC2612.
1086
1087	  This module provides the Cast6 cipher algorithm that processes
1088	  eight blocks parallel using the AVX instruction set.
1089
1090config CRYPTO_DES
1091	tristate "DES and Triple DES EDE cipher algorithms"
1092	select CRYPTO_ALGAPI
1093	help
1094	  DES cipher algorithm (FIPS 46-2), and Triple DES EDE (FIPS 46-3).
1095
1096config CRYPTO_DES_SPARC64
1097	tristate "DES and Triple DES EDE cipher algorithms (SPARC64)"
1098	depends on SPARC64
1099	select CRYPTO_ALGAPI
1100	select CRYPTO_DES
1101	help
1102	  DES cipher algorithm (FIPS 46-2), and Triple DES EDE (FIPS 46-3),
1103	  optimized using SPARC64 crypto opcodes.
1104
1105config CRYPTO_DES3_EDE_X86_64
1106	tristate "Triple DES EDE cipher algorithm (x86-64)"
1107	depends on X86 && 64BIT
1108	select CRYPTO_ALGAPI
1109	select CRYPTO_DES
1110	help
1111	  Triple DES EDE (FIPS 46-3) algorithm.
1112
1113	  This module provides implementation of the Triple DES EDE cipher
1114	  algorithm that is optimized for x86-64 processors. Two versions of
1115	  algorithm are provided; regular processing one input block and
1116	  one that processes three blocks parallel.
1117
1118config CRYPTO_FCRYPT
1119	tristate "FCrypt cipher algorithm"
1120	select CRYPTO_ALGAPI
1121	select CRYPTO_BLKCIPHER
1122	help
1123	  FCrypt algorithm used by RxRPC.
1124
1125config CRYPTO_KHAZAD
1126	tristate "Khazad cipher algorithm"
1127	select CRYPTO_ALGAPI
1128	help
1129	  Khazad cipher algorithm.
1130
1131	  Khazad was a finalist in the initial NESSIE competition.  It is
1132	  an algorithm optimized for 64-bit processors with good performance
1133	  on 32-bit processors.  Khazad uses an 128 bit key size.
1134
1135	  See also:
1136	  <http://www.larc.usp.br/~pbarreto/KhazadPage.html>
1137
1138config CRYPTO_SALSA20
1139	tristate "Salsa20 stream cipher algorithm"
1140	select CRYPTO_BLKCIPHER
1141	help
1142	  Salsa20 stream cipher algorithm.
1143
1144	  Salsa20 is a stream cipher submitted to eSTREAM, the ECRYPT
1145	  Stream Cipher Project. See <http://www.ecrypt.eu.org/stream/>
1146
1147	  The Salsa20 stream cipher algorithm is designed by Daniel J.
1148	  Bernstein <djb@cr.yp.to>. See <http://cr.yp.to/snuffle.html>
1149
1150config CRYPTO_SALSA20_586
1151	tristate "Salsa20 stream cipher algorithm (i586)"
1152	depends on (X86 || UML_X86) && !64BIT
1153	select CRYPTO_BLKCIPHER
1154	help
1155	  Salsa20 stream cipher algorithm.
1156
1157	  Salsa20 is a stream cipher submitted to eSTREAM, the ECRYPT
1158	  Stream Cipher Project. See <http://www.ecrypt.eu.org/stream/>
1159
1160	  The Salsa20 stream cipher algorithm is designed by Daniel J.
1161	  Bernstein <djb@cr.yp.to>. See <http://cr.yp.to/snuffle.html>
1162
1163config CRYPTO_SALSA20_X86_64
1164	tristate "Salsa20 stream cipher algorithm (x86_64)"
1165	depends on (X86 || UML_X86) && 64BIT
1166	select CRYPTO_BLKCIPHER
1167	help
1168	  Salsa20 stream cipher algorithm.
1169
1170	  Salsa20 is a stream cipher submitted to eSTREAM, the ECRYPT
1171	  Stream Cipher Project. See <http://www.ecrypt.eu.org/stream/>
1172
1173	  The Salsa20 stream cipher algorithm is designed by Daniel J.
1174	  Bernstein <djb@cr.yp.to>. See <http://cr.yp.to/snuffle.html>
1175
1176config CRYPTO_SEED
1177	tristate "SEED cipher algorithm"
1178	select CRYPTO_ALGAPI
1179	help
1180	  SEED cipher algorithm (RFC4269).
1181
1182	  SEED is a 128-bit symmetric key block cipher that has been
1183	  developed by KISA (Korea Information Security Agency) as a
1184	  national standard encryption algorithm of the Republic of Korea.
1185	  It is a 16 round block cipher with the key size of 128 bit.
1186
1187	  See also:
1188	  <http://www.kisa.or.kr/kisa/seed/jsp/seed_eng.jsp>
1189
1190config CRYPTO_SERPENT
1191	tristate "Serpent cipher algorithm"
1192	select CRYPTO_ALGAPI
1193	help
1194	  Serpent cipher algorithm, by Anderson, Biham & Knudsen.
1195
1196	  Keys are allowed to be from 0 to 256 bits in length, in steps
1197	  of 8 bits.  Also includes the 'Tnepres' algorithm, a reversed
1198	  variant of Serpent for compatibility with old kerneli.org code.
1199
1200	  See also:
1201	  <http://www.cl.cam.ac.uk/~rja14/serpent.html>
1202
1203config CRYPTO_SERPENT_SSE2_X86_64
1204	tristate "Serpent cipher algorithm (x86_64/SSE2)"
1205	depends on X86 && 64BIT
1206	select CRYPTO_ALGAPI
1207	select CRYPTO_CRYPTD
1208	select CRYPTO_ABLK_HELPER
1209	select CRYPTO_GLUE_HELPER_X86
1210	select CRYPTO_SERPENT
1211	select CRYPTO_LRW
1212	select CRYPTO_XTS
1213	help
1214	  Serpent cipher algorithm, by Anderson, Biham & Knudsen.
1215
1216	  Keys are allowed to be from 0 to 256 bits in length, in steps
1217	  of 8 bits.
1218
1219	  This module provides Serpent cipher algorithm that processes eigth
1220	  blocks parallel using SSE2 instruction set.
1221
1222	  See also:
1223	  <http://www.cl.cam.ac.uk/~rja14/serpent.html>
1224
1225config CRYPTO_SERPENT_SSE2_586
1226	tristate "Serpent cipher algorithm (i586/SSE2)"
1227	depends on X86 && !64BIT
1228	select CRYPTO_ALGAPI
1229	select CRYPTO_CRYPTD
1230	select CRYPTO_ABLK_HELPER
1231	select CRYPTO_GLUE_HELPER_X86
1232	select CRYPTO_SERPENT
1233	select CRYPTO_LRW
1234	select CRYPTO_XTS
1235	help
1236	  Serpent cipher algorithm, by Anderson, Biham & Knudsen.
1237
1238	  Keys are allowed to be from 0 to 256 bits in length, in steps
1239	  of 8 bits.
1240
1241	  This module provides Serpent cipher algorithm that processes four
1242	  blocks parallel using SSE2 instruction set.
1243
1244	  See also:
1245	  <http://www.cl.cam.ac.uk/~rja14/serpent.html>
1246
1247config CRYPTO_SERPENT_AVX_X86_64
1248	tristate "Serpent cipher algorithm (x86_64/AVX)"
1249	depends on X86 && 64BIT
1250	select CRYPTO_ALGAPI
1251	select CRYPTO_CRYPTD
1252	select CRYPTO_ABLK_HELPER
1253	select CRYPTO_GLUE_HELPER_X86
1254	select CRYPTO_SERPENT
1255	select CRYPTO_LRW
1256	select CRYPTO_XTS
1257	help
1258	  Serpent cipher algorithm, by Anderson, Biham & Knudsen.
1259
1260	  Keys are allowed to be from 0 to 256 bits in length, in steps
1261	  of 8 bits.
1262
1263	  This module provides the Serpent cipher algorithm that processes
1264	  eight blocks parallel using the AVX instruction set.
1265
1266	  See also:
1267	  <http://www.cl.cam.ac.uk/~rja14/serpent.html>
1268
1269config CRYPTO_SERPENT_AVX2_X86_64
1270	tristate "Serpent cipher algorithm (x86_64/AVX2)"
1271	depends on X86 && 64BIT
1272	select CRYPTO_ALGAPI
1273	select CRYPTO_CRYPTD
1274	select CRYPTO_ABLK_HELPER
1275	select CRYPTO_GLUE_HELPER_X86
1276	select CRYPTO_SERPENT
1277	select CRYPTO_SERPENT_AVX_X86_64
1278	select CRYPTO_LRW
1279	select CRYPTO_XTS
1280	help
1281	  Serpent cipher algorithm, by Anderson, Biham & Knudsen.
1282
1283	  Keys are allowed to be from 0 to 256 bits in length, in steps
1284	  of 8 bits.
1285
1286	  This module provides Serpent cipher algorithm that processes 16
1287	  blocks parallel using AVX2 instruction set.
1288
1289	  See also:
1290	  <http://www.cl.cam.ac.uk/~rja14/serpent.html>
1291
1292config CRYPTO_TEA
1293	tristate "TEA, XTEA and XETA cipher algorithms"
1294	select CRYPTO_ALGAPI
1295	help
1296	  TEA cipher algorithm.
1297
1298	  Tiny Encryption Algorithm is a simple cipher that uses
1299	  many rounds for security.  It is very fast and uses
1300	  little memory.
1301
1302	  Xtendend Tiny Encryption Algorithm is a modification to
1303	  the TEA algorithm to address a potential key weakness
1304	  in the TEA algorithm.
1305
1306	  Xtendend Encryption Tiny Algorithm is a mis-implementation
1307	  of the XTEA algorithm for compatibility purposes.
1308
1309config CRYPTO_TWOFISH
1310	tristate "Twofish cipher algorithm"
1311	select CRYPTO_ALGAPI
1312	select CRYPTO_TWOFISH_COMMON
1313	help
1314	  Twofish cipher algorithm.
1315
1316	  Twofish was submitted as an AES (Advanced Encryption Standard)
1317	  candidate cipher by researchers at CounterPane Systems.  It is a
1318	  16 round block cipher supporting key sizes of 128, 192, and 256
1319	  bits.
1320
1321	  See also:
1322	  <http://www.schneier.com/twofish.html>
1323
1324config CRYPTO_TWOFISH_COMMON
1325	tristate
1326	help
1327	  Common parts of the Twofish cipher algorithm shared by the
1328	  generic c and the assembler implementations.
1329
1330config CRYPTO_TWOFISH_586
1331	tristate "Twofish cipher algorithms (i586)"
1332	depends on (X86 || UML_X86) && !64BIT
1333	select CRYPTO_ALGAPI
1334	select CRYPTO_TWOFISH_COMMON
1335	help
1336	  Twofish cipher algorithm.
1337
1338	  Twofish was submitted as an AES (Advanced Encryption Standard)
1339	  candidate cipher by researchers at CounterPane Systems.  It is a
1340	  16 round block cipher supporting key sizes of 128, 192, and 256
1341	  bits.
1342
1343	  See also:
1344	  <http://www.schneier.com/twofish.html>
1345
1346config CRYPTO_TWOFISH_X86_64
1347	tristate "Twofish cipher algorithm (x86_64)"
1348	depends on (X86 || UML_X86) && 64BIT
1349	select CRYPTO_ALGAPI
1350	select CRYPTO_TWOFISH_COMMON
1351	help
1352	  Twofish cipher algorithm (x86_64).
1353
1354	  Twofish was submitted as an AES (Advanced Encryption Standard)
1355	  candidate cipher by researchers at CounterPane Systems.  It is a
1356	  16 round block cipher supporting key sizes of 128, 192, and 256
1357	  bits.
1358
1359	  See also:
1360	  <http://www.schneier.com/twofish.html>
1361
1362config CRYPTO_TWOFISH_X86_64_3WAY
1363	tristate "Twofish cipher algorithm (x86_64, 3-way parallel)"
1364	depends on X86 && 64BIT
1365	select CRYPTO_ALGAPI
1366	select CRYPTO_TWOFISH_COMMON
1367	select CRYPTO_TWOFISH_X86_64
1368	select CRYPTO_GLUE_HELPER_X86
1369	select CRYPTO_LRW
1370	select CRYPTO_XTS
1371	help
1372	  Twofish cipher algorithm (x86_64, 3-way parallel).
1373
1374	  Twofish was submitted as an AES (Advanced Encryption Standard)
1375	  candidate cipher by researchers at CounterPane Systems.  It is a
1376	  16 round block cipher supporting key sizes of 128, 192, and 256
1377	  bits.
1378
1379	  This module provides Twofish cipher algorithm that processes three
1380	  blocks parallel, utilizing resources of out-of-order CPUs better.
1381
1382	  See also:
1383	  <http://www.schneier.com/twofish.html>
1384
1385config CRYPTO_TWOFISH_AVX_X86_64
1386	tristate "Twofish cipher algorithm (x86_64/AVX)"
1387	depends on X86 && 64BIT
1388	select CRYPTO_ALGAPI
1389	select CRYPTO_CRYPTD
1390	select CRYPTO_ABLK_HELPER
1391	select CRYPTO_GLUE_HELPER_X86
1392	select CRYPTO_TWOFISH_COMMON
1393	select CRYPTO_TWOFISH_X86_64
1394	select CRYPTO_TWOFISH_X86_64_3WAY
1395	select CRYPTO_LRW
1396	select CRYPTO_XTS
1397	help
1398	  Twofish cipher algorithm (x86_64/AVX).
1399
1400	  Twofish was submitted as an AES (Advanced Encryption Standard)
1401	  candidate cipher by researchers at CounterPane Systems.  It is a
1402	  16 round block cipher supporting key sizes of 128, 192, and 256
1403	  bits.
1404
1405	  This module provides the Twofish cipher algorithm that processes
1406	  eight blocks parallel using the AVX Instruction Set.
1407
1408	  See also:
1409	  <http://www.schneier.com/twofish.html>
1410
1411comment "Compression"
1412
1413config CRYPTO_DEFLATE
1414	tristate "Deflate compression algorithm"
1415	select CRYPTO_ALGAPI
1416	select ZLIB_INFLATE
1417	select ZLIB_DEFLATE
1418	help
1419	  This is the Deflate algorithm (RFC1951), specified for use in
1420	  IPSec with the IPCOMP protocol (RFC3173, RFC2394).
1421
1422	  You will most probably want this if using IPSec.
1423
1424config CRYPTO_ZLIB
1425	tristate "Zlib compression algorithm"
1426	select CRYPTO_PCOMP
1427	select ZLIB_INFLATE
1428	select ZLIB_DEFLATE
1429	select NLATTR
1430	help
1431	  This is the zlib algorithm.
1432
1433config CRYPTO_LZO
1434	tristate "LZO compression algorithm"
1435	select CRYPTO_ALGAPI
1436	select LZO_COMPRESS
1437	select LZO_DECOMPRESS
1438	help
1439	  This is the LZO algorithm.
1440
1441config CRYPTO_842
1442	tristate "842 compression algorithm"
1443	depends on CRYPTO_DEV_NX_COMPRESS
1444	# 842 uses lzo if the hardware becomes unavailable
1445	select LZO_COMPRESS
1446	select LZO_DECOMPRESS
1447	help
1448	  This is the 842 algorithm.
1449
1450config CRYPTO_LZ4
1451	tristate "LZ4 compression algorithm"
1452	select CRYPTO_ALGAPI
1453	select LZ4_COMPRESS
1454	select LZ4_DECOMPRESS
1455	help
1456	  This is the LZ4 algorithm.
1457
1458config CRYPTO_LZ4HC
1459	tristate "LZ4HC compression algorithm"
1460	select CRYPTO_ALGAPI
1461	select LZ4HC_COMPRESS
1462	select LZ4_DECOMPRESS
1463	help
1464	  This is the LZ4 high compression mode algorithm.
1465
1466comment "Random Number Generation"
1467
1468config CRYPTO_ANSI_CPRNG
1469	tristate "Pseudo Random Number Generation for Cryptographic modules"
1470	default m
1471	select CRYPTO_AES
1472	select CRYPTO_RNG
1473	help
1474	  This option enables the generic pseudo random number generator
1475	  for cryptographic modules.  Uses the Algorithm specified in
1476	  ANSI X9.31 A.2.4. Note that this option must be enabled if
1477	  CRYPTO_FIPS is selected
1478
1479menuconfig CRYPTO_DRBG_MENU
1480	tristate "NIST SP800-90A DRBG"
1481	help
1482	  NIST SP800-90A compliant DRBG. In the following submenu, one or
1483	  more of the DRBG types must be selected.
1484
1485if CRYPTO_DRBG_MENU
1486
1487config CRYPTO_DRBG_HMAC
1488	bool "Enable HMAC DRBG"
1489	default y
1490	select CRYPTO_HMAC
1491	help
1492	  Enable the HMAC DRBG variant as defined in NIST SP800-90A.
1493
1494config CRYPTO_DRBG_HASH
1495	bool "Enable Hash DRBG"
1496	select CRYPTO_HASH
1497	help
1498	  Enable the Hash DRBG variant as defined in NIST SP800-90A.
1499
1500config CRYPTO_DRBG_CTR
1501	bool "Enable CTR DRBG"
1502	select CRYPTO_AES
1503	help
1504	  Enable the CTR DRBG variant as defined in NIST SP800-90A.
1505
1506config CRYPTO_DRBG
1507	tristate
1508	default CRYPTO_DRBG_MENU if (CRYPTO_DRBG_HMAC || CRYPTO_DRBG_HASH || CRYPTO_DRBG_CTR)
1509	select CRYPTO_RNG
1510
1511endif	# if CRYPTO_DRBG_MENU
1512
1513config CRYPTO_USER_API
1514	tristate
1515
1516config CRYPTO_USER_API_HASH
1517	tristate "User-space interface for hash algorithms"
1518	depends on NET
1519	select CRYPTO_HASH
1520	select CRYPTO_USER_API
1521	help
1522	  This option enables the user-spaces interface for hash
1523	  algorithms.
1524
1525config CRYPTO_USER_API_SKCIPHER
1526	tristate "User-space interface for symmetric key cipher algorithms"
1527	depends on NET
1528	select CRYPTO_BLKCIPHER
1529	select CRYPTO_USER_API
1530	help
1531	  This option enables the user-spaces interface for symmetric
1532	  key cipher algorithms.
1533
1534config CRYPTO_HASH_INFO
1535	bool
1536
1537source "drivers/crypto/Kconfig"
1538source crypto/asymmetric_keys/Kconfig
1539
1540endif	# if CRYPTO
1541