xref: /OK3568_Linux_fs/kernel/crypto/Kconfig (revision 4882a59341e53eb6f0b4789bf948001014eff981)
1*4882a593Smuzhiyun# SPDX-License-Identifier: GPL-2.0
2*4882a593Smuzhiyun#
3*4882a593Smuzhiyun# Generic algorithms support
4*4882a593Smuzhiyun#
5*4882a593Smuzhiyunconfig XOR_BLOCKS
6*4882a593Smuzhiyun	tristate
7*4882a593Smuzhiyun
8*4882a593Smuzhiyun#
9*4882a593Smuzhiyun# async_tx api: hardware offloaded memory transfer/transform support
10*4882a593Smuzhiyun#
11*4882a593Smuzhiyunsource "crypto/async_tx/Kconfig"
12*4882a593Smuzhiyun
13*4882a593Smuzhiyun#
14*4882a593Smuzhiyun# Cryptographic API Configuration
15*4882a593Smuzhiyun#
16*4882a593Smuzhiyunmenuconfig CRYPTO
17*4882a593Smuzhiyun	tristate "Cryptographic API"
18*4882a593Smuzhiyun	select LIB_MEMNEQ
19*4882a593Smuzhiyun	help
20*4882a593Smuzhiyun	  This option provides the core Cryptographic API.
21*4882a593Smuzhiyun
22*4882a593Smuzhiyunif CRYPTO
23*4882a593Smuzhiyun
24*4882a593Smuzhiyuncomment "Crypto core or helper"
25*4882a593Smuzhiyun
26*4882a593Smuzhiyunconfig CRYPTO_FIPS
27*4882a593Smuzhiyun	bool "FIPS 200 compliance"
28*4882a593Smuzhiyun	depends on (CRYPTO_ANSI_CPRNG || CRYPTO_DRBG) && !CRYPTO_MANAGER_DISABLE_TESTS
29*4882a593Smuzhiyun	depends on (MODULE_SIG || !MODULES)
30*4882a593Smuzhiyun	help
31*4882a593Smuzhiyun	  This option enables the fips boot option which is
32*4882a593Smuzhiyun	  required if you want the system to operate in a FIPS 200
33*4882a593Smuzhiyun	  certification.  You should say no unless you know what
34*4882a593Smuzhiyun	  this is.
35*4882a593Smuzhiyun
36*4882a593Smuzhiyun# CRYPTO_FIPS140 just enables the support in the kernel for loading fips140.ko.
37*4882a593Smuzhiyun# The module still needs to be built and loaded if you need FIPS 140 compliance.
38*4882a593Smuzhiyunconfig CRYPTO_FIPS140
39*4882a593Smuzhiyun	def_bool y
40*4882a593Smuzhiyun	depends on MODULES && ARM64 && ARM64_MODULE_PLTS
41*4882a593Smuzhiyun
42*4882a593Smuzhiyunconfig CRYPTO_FIPS140_MOD
43*4882a593Smuzhiyun	bool "Enable FIPS 140 cryptographic module"
44*4882a593Smuzhiyun	depends on LTO_CLANG && CRYPTO_FIPS140
45*4882a593Smuzhiyun	help
46*4882a593Smuzhiyun	  This option enables building a loadable module fips140.ko, which
47*4882a593Smuzhiyun	  contains various crypto algorithms that are also built into vmlinux.
48*4882a593Smuzhiyun	  At load time, this module overrides the built-in implementations of
49*4882a593Smuzhiyun	  these algorithms with its implementations.  It also runs self-tests on
50*4882a593Smuzhiyun	  these algorithms and verifies the integrity of its code and data.  If
51*4882a593Smuzhiyun	  either of these steps fails, the kernel will panic.
52*4882a593Smuzhiyun
53*4882a593Smuzhiyun	  This module is intended to be loaded at early boot time in order to
54*4882a593Smuzhiyun	  meet FIPS 140 and NIAP FPT_TST_EXT.1 requirements.  It shouldn't be
55*4882a593Smuzhiyun	  used if you don't need to meet these requirements.
56*4882a593Smuzhiyun
57*4882a593Smuzhiyunconfig CRYPTO_FIPS140_MOD_EVAL_TESTING
58*4882a593Smuzhiyun	bool "Enable evaluation testing features in FIPS 140 module"
59*4882a593Smuzhiyun	depends on CRYPTO_FIPS140_MOD
60*4882a593Smuzhiyun	help
61*4882a593Smuzhiyun	  This option adds some features to the FIPS 140 module which are needed
62*4882a593Smuzhiyun	  for lab evaluation testing of the module, e.g. support for injecting
63*4882a593Smuzhiyun	  errors and support for a userspace interface to some of the module's
64*4882a593Smuzhiyun	  services.  This option should not be enabled in production builds.
65*4882a593Smuzhiyun
66*4882a593Smuzhiyunconfig CRYPTO_ALGAPI
67*4882a593Smuzhiyun	tristate
68*4882a593Smuzhiyun	select CRYPTO_ALGAPI2
69*4882a593Smuzhiyun	help
70*4882a593Smuzhiyun	  This option provides the API for cryptographic algorithms.
71*4882a593Smuzhiyun
72*4882a593Smuzhiyunconfig CRYPTO_ALGAPI2
73*4882a593Smuzhiyun	tristate
74*4882a593Smuzhiyun
75*4882a593Smuzhiyunconfig CRYPTO_AEAD
76*4882a593Smuzhiyun	tristate
77*4882a593Smuzhiyun	select CRYPTO_AEAD2
78*4882a593Smuzhiyun	select CRYPTO_ALGAPI
79*4882a593Smuzhiyun
80*4882a593Smuzhiyunconfig CRYPTO_AEAD2
81*4882a593Smuzhiyun	tristate
82*4882a593Smuzhiyun	select CRYPTO_ALGAPI2
83*4882a593Smuzhiyun	select CRYPTO_NULL2
84*4882a593Smuzhiyun	select CRYPTO_RNG2
85*4882a593Smuzhiyun
86*4882a593Smuzhiyunconfig CRYPTO_SKCIPHER
87*4882a593Smuzhiyun	tristate
88*4882a593Smuzhiyun	select CRYPTO_SKCIPHER2
89*4882a593Smuzhiyun	select CRYPTO_ALGAPI
90*4882a593Smuzhiyun
91*4882a593Smuzhiyunconfig CRYPTO_SKCIPHER2
92*4882a593Smuzhiyun	tristate
93*4882a593Smuzhiyun	select CRYPTO_ALGAPI2
94*4882a593Smuzhiyun	select CRYPTO_RNG2
95*4882a593Smuzhiyun
96*4882a593Smuzhiyunconfig CRYPTO_HASH
97*4882a593Smuzhiyun	tristate
98*4882a593Smuzhiyun	select CRYPTO_HASH2
99*4882a593Smuzhiyun	select CRYPTO_ALGAPI
100*4882a593Smuzhiyun
101*4882a593Smuzhiyunconfig CRYPTO_HASH2
102*4882a593Smuzhiyun	tristate
103*4882a593Smuzhiyun	select CRYPTO_ALGAPI2
104*4882a593Smuzhiyun
105*4882a593Smuzhiyunconfig CRYPTO_RNG
106*4882a593Smuzhiyun	tristate
107*4882a593Smuzhiyun	select CRYPTO_RNG2
108*4882a593Smuzhiyun	select CRYPTO_ALGAPI
109*4882a593Smuzhiyun
110*4882a593Smuzhiyunconfig CRYPTO_RNG2
111*4882a593Smuzhiyun	tristate
112*4882a593Smuzhiyun	select CRYPTO_ALGAPI2
113*4882a593Smuzhiyun
114*4882a593Smuzhiyunconfig CRYPTO_RNG_DEFAULT
115*4882a593Smuzhiyun	tristate
116*4882a593Smuzhiyun	select CRYPTO_DRBG_MENU
117*4882a593Smuzhiyun
118*4882a593Smuzhiyunconfig CRYPTO_AKCIPHER2
119*4882a593Smuzhiyun	tristate
120*4882a593Smuzhiyun	select CRYPTO_ALGAPI2
121*4882a593Smuzhiyun
122*4882a593Smuzhiyunconfig CRYPTO_AKCIPHER
123*4882a593Smuzhiyun	tristate
124*4882a593Smuzhiyun	select CRYPTO_AKCIPHER2
125*4882a593Smuzhiyun	select CRYPTO_ALGAPI
126*4882a593Smuzhiyun
127*4882a593Smuzhiyunconfig CRYPTO_KPP2
128*4882a593Smuzhiyun	tristate
129*4882a593Smuzhiyun	select CRYPTO_ALGAPI2
130*4882a593Smuzhiyun
131*4882a593Smuzhiyunconfig CRYPTO_KPP
132*4882a593Smuzhiyun	tristate
133*4882a593Smuzhiyun	select CRYPTO_ALGAPI
134*4882a593Smuzhiyun	select CRYPTO_KPP2
135*4882a593Smuzhiyun
136*4882a593Smuzhiyunconfig CRYPTO_ACOMP2
137*4882a593Smuzhiyun	tristate
138*4882a593Smuzhiyun	select CRYPTO_ALGAPI2
139*4882a593Smuzhiyun	select SGL_ALLOC
140*4882a593Smuzhiyun
141*4882a593Smuzhiyunconfig CRYPTO_ACOMP
142*4882a593Smuzhiyun	tristate
143*4882a593Smuzhiyun	select CRYPTO_ALGAPI
144*4882a593Smuzhiyun	select CRYPTO_ACOMP2
145*4882a593Smuzhiyun
146*4882a593Smuzhiyunconfig CRYPTO_MANAGER
147*4882a593Smuzhiyun	tristate "Cryptographic algorithm manager"
148*4882a593Smuzhiyun	select CRYPTO_MANAGER2
149*4882a593Smuzhiyun	help
150*4882a593Smuzhiyun	  Create default cryptographic template instantiations such as
151*4882a593Smuzhiyun	  cbc(aes).
152*4882a593Smuzhiyun
153*4882a593Smuzhiyunconfig CRYPTO_MANAGER2
154*4882a593Smuzhiyun	def_tristate CRYPTO_MANAGER || (CRYPTO_MANAGER!=n && CRYPTO_ALGAPI=y)
155*4882a593Smuzhiyun	select CRYPTO_AEAD2
156*4882a593Smuzhiyun	select CRYPTO_HASH2
157*4882a593Smuzhiyun	select CRYPTO_SKCIPHER2
158*4882a593Smuzhiyun	select CRYPTO_AKCIPHER2
159*4882a593Smuzhiyun	select CRYPTO_KPP2
160*4882a593Smuzhiyun	select CRYPTO_ACOMP2
161*4882a593Smuzhiyun
162*4882a593Smuzhiyunconfig CRYPTO_USER
163*4882a593Smuzhiyun	tristate "Userspace cryptographic algorithm configuration"
164*4882a593Smuzhiyun	depends on NET
165*4882a593Smuzhiyun	select CRYPTO_MANAGER
166*4882a593Smuzhiyun	help
167*4882a593Smuzhiyun	  Userspace configuration for cryptographic instantiations such as
168*4882a593Smuzhiyun	  cbc(aes).
169*4882a593Smuzhiyun
170*4882a593Smuzhiyunconfig CRYPTO_MANAGER_DISABLE_TESTS
171*4882a593Smuzhiyun	bool "Disable run-time self tests"
172*4882a593Smuzhiyun	default y
173*4882a593Smuzhiyun	help
174*4882a593Smuzhiyun	  Disable run-time self tests that normally take place at
175*4882a593Smuzhiyun	  algorithm registration.
176*4882a593Smuzhiyun
177*4882a593Smuzhiyunconfig CRYPTO_MANAGER_EXTRA_TESTS
178*4882a593Smuzhiyun	bool "Enable extra run-time crypto self tests"
179*4882a593Smuzhiyun	depends on DEBUG_KERNEL && !CRYPTO_MANAGER_DISABLE_TESTS && CRYPTO_MANAGER
180*4882a593Smuzhiyun	help
181*4882a593Smuzhiyun	  Enable extra run-time self tests of registered crypto algorithms,
182*4882a593Smuzhiyun	  including randomized fuzz tests.
183*4882a593Smuzhiyun
184*4882a593Smuzhiyun	  This is intended for developer use only, as these tests take much
185*4882a593Smuzhiyun	  longer to run than the normal self tests.
186*4882a593Smuzhiyun
187*4882a593Smuzhiyunconfig CRYPTO_GF128MUL
188*4882a593Smuzhiyun	tristate
189*4882a593Smuzhiyun
190*4882a593Smuzhiyunconfig CRYPTO_NULL
191*4882a593Smuzhiyun	tristate "Null algorithms"
192*4882a593Smuzhiyun	select CRYPTO_NULL2
193*4882a593Smuzhiyun	help
194*4882a593Smuzhiyun	  These are 'Null' algorithms, used by IPsec, which do nothing.
195*4882a593Smuzhiyun
196*4882a593Smuzhiyunconfig CRYPTO_NULL2
197*4882a593Smuzhiyun	tristate
198*4882a593Smuzhiyun	select CRYPTO_ALGAPI2
199*4882a593Smuzhiyun	select CRYPTO_SKCIPHER2
200*4882a593Smuzhiyun	select CRYPTO_HASH2
201*4882a593Smuzhiyun
202*4882a593Smuzhiyunconfig CRYPTO_PCRYPT
203*4882a593Smuzhiyun	tristate "Parallel crypto engine"
204*4882a593Smuzhiyun	depends on SMP
205*4882a593Smuzhiyun	select PADATA
206*4882a593Smuzhiyun	select CRYPTO_MANAGER
207*4882a593Smuzhiyun	select CRYPTO_AEAD
208*4882a593Smuzhiyun	help
209*4882a593Smuzhiyun	  This converts an arbitrary crypto algorithm into a parallel
210*4882a593Smuzhiyun	  algorithm that executes in kernel threads.
211*4882a593Smuzhiyun
212*4882a593Smuzhiyunconfig CRYPTO_CRYPTD
213*4882a593Smuzhiyun	tristate "Software async crypto daemon"
214*4882a593Smuzhiyun	select CRYPTO_SKCIPHER
215*4882a593Smuzhiyun	select CRYPTO_HASH
216*4882a593Smuzhiyun	select CRYPTO_MANAGER
217*4882a593Smuzhiyun	help
218*4882a593Smuzhiyun	  This is a generic software asynchronous crypto daemon that
219*4882a593Smuzhiyun	  converts an arbitrary synchronous software crypto algorithm
220*4882a593Smuzhiyun	  into an asynchronous algorithm that executes in a kernel thread.
221*4882a593Smuzhiyun
222*4882a593Smuzhiyunconfig CRYPTO_AUTHENC
223*4882a593Smuzhiyun	tristate "Authenc support"
224*4882a593Smuzhiyun	select CRYPTO_AEAD
225*4882a593Smuzhiyun	select CRYPTO_SKCIPHER
226*4882a593Smuzhiyun	select CRYPTO_MANAGER
227*4882a593Smuzhiyun	select CRYPTO_HASH
228*4882a593Smuzhiyun	select CRYPTO_NULL
229*4882a593Smuzhiyun	help
230*4882a593Smuzhiyun	  Authenc: Combined mode wrapper for IPsec.
231*4882a593Smuzhiyun	  This is required for IPSec.
232*4882a593Smuzhiyun
233*4882a593Smuzhiyunconfig CRYPTO_TEST
234*4882a593Smuzhiyun	tristate "Testing module"
235*4882a593Smuzhiyun	depends on m
236*4882a593Smuzhiyun	select CRYPTO_MANAGER
237*4882a593Smuzhiyun	help
238*4882a593Smuzhiyun	  Quick & dirty crypto test module.
239*4882a593Smuzhiyun
240*4882a593Smuzhiyunconfig CRYPTO_SIMD
241*4882a593Smuzhiyun	tristate
242*4882a593Smuzhiyun	select CRYPTO_CRYPTD
243*4882a593Smuzhiyun
244*4882a593Smuzhiyunconfig CRYPTO_GLUE_HELPER_X86
245*4882a593Smuzhiyun	tristate
246*4882a593Smuzhiyun	depends on X86
247*4882a593Smuzhiyun	select CRYPTO_SKCIPHER
248*4882a593Smuzhiyun
249*4882a593Smuzhiyunconfig CRYPTO_ENGINE
250*4882a593Smuzhiyun	tristate
251*4882a593Smuzhiyun
252*4882a593Smuzhiyuncomment "Public-key cryptography"
253*4882a593Smuzhiyun
254*4882a593Smuzhiyunconfig CRYPTO_RSA
255*4882a593Smuzhiyun	tristate "RSA algorithm"
256*4882a593Smuzhiyun	select CRYPTO_AKCIPHER
257*4882a593Smuzhiyun	select CRYPTO_MANAGER
258*4882a593Smuzhiyun	select MPILIB
259*4882a593Smuzhiyun	select ASN1
260*4882a593Smuzhiyun	help
261*4882a593Smuzhiyun	  Generic implementation of the RSA public key algorithm.
262*4882a593Smuzhiyun
263*4882a593Smuzhiyunconfig CRYPTO_DH
264*4882a593Smuzhiyun	tristate "Diffie-Hellman algorithm"
265*4882a593Smuzhiyun	select CRYPTO_KPP
266*4882a593Smuzhiyun	select MPILIB
267*4882a593Smuzhiyun	help
268*4882a593Smuzhiyun	  Generic implementation of the Diffie-Hellman algorithm.
269*4882a593Smuzhiyun
270*4882a593Smuzhiyunconfig CRYPTO_ECC
271*4882a593Smuzhiyun	tristate
272*4882a593Smuzhiyun	select CRYPTO_RNG_DEFAULT
273*4882a593Smuzhiyun
274*4882a593Smuzhiyunconfig CRYPTO_ECDH
275*4882a593Smuzhiyun	tristate "ECDH algorithm"
276*4882a593Smuzhiyun	select CRYPTO_ECC
277*4882a593Smuzhiyun	select CRYPTO_KPP
278*4882a593Smuzhiyun	help
279*4882a593Smuzhiyun	  Generic implementation of the ECDH algorithm
280*4882a593Smuzhiyun
281*4882a593Smuzhiyunconfig CRYPTO_ECRDSA
282*4882a593Smuzhiyun	tristate "EC-RDSA (GOST 34.10) algorithm"
283*4882a593Smuzhiyun	select CRYPTO_ECC
284*4882a593Smuzhiyun	select CRYPTO_AKCIPHER
285*4882a593Smuzhiyun	select CRYPTO_STREEBOG
286*4882a593Smuzhiyun	select OID_REGISTRY
287*4882a593Smuzhiyun	select ASN1
288*4882a593Smuzhiyun	help
289*4882a593Smuzhiyun	  Elliptic Curve Russian Digital Signature Algorithm (GOST R 34.10-2012,
290*4882a593Smuzhiyun	  RFC 7091, ISO/IEC 14888-3:2018) is one of the Russian cryptographic
291*4882a593Smuzhiyun	  standard algorithms (called GOST algorithms). Only signature verification
292*4882a593Smuzhiyun	  is implemented.
293*4882a593Smuzhiyun
294*4882a593Smuzhiyunconfig CRYPTO_SM2
295*4882a593Smuzhiyun	tristate "SM2 algorithm"
296*4882a593Smuzhiyun	select CRYPTO_SM3
297*4882a593Smuzhiyun	select CRYPTO_AKCIPHER
298*4882a593Smuzhiyun	select CRYPTO_MANAGER
299*4882a593Smuzhiyun	select MPILIB
300*4882a593Smuzhiyun	select ASN1
301*4882a593Smuzhiyun	help
302*4882a593Smuzhiyun	  Generic implementation of the SM2 public key algorithm. It was
303*4882a593Smuzhiyun	  published by State Encryption Management Bureau, China.
304*4882a593Smuzhiyun	  as specified by OSCCA GM/T 0003.1-2012 -- 0003.5-2012.
305*4882a593Smuzhiyun
306*4882a593Smuzhiyun	  References:
307*4882a593Smuzhiyun	  https://tools.ietf.org/html/draft-shen-sm2-ecdsa-02
308*4882a593Smuzhiyun	  http://www.oscca.gov.cn/sca/xxgk/2010-12/17/content_1002386.shtml
309*4882a593Smuzhiyun	  http://www.gmbz.org.cn/main/bzlb.html
310*4882a593Smuzhiyun
311*4882a593Smuzhiyunconfig CRYPTO_CURVE25519
312*4882a593Smuzhiyun	tristate "Curve25519 algorithm"
313*4882a593Smuzhiyun	select CRYPTO_KPP
314*4882a593Smuzhiyun	select CRYPTO_LIB_CURVE25519_GENERIC
315*4882a593Smuzhiyun
316*4882a593Smuzhiyunconfig CRYPTO_CURVE25519_X86
317*4882a593Smuzhiyun	tristate "x86_64 accelerated Curve25519 scalar multiplication library"
318*4882a593Smuzhiyun	depends on X86 && 64BIT
319*4882a593Smuzhiyun	select CRYPTO_LIB_CURVE25519_GENERIC
320*4882a593Smuzhiyun	select CRYPTO_ARCH_HAVE_LIB_CURVE25519
321*4882a593Smuzhiyun
322*4882a593Smuzhiyuncomment "Authenticated Encryption with Associated Data"
323*4882a593Smuzhiyun
324*4882a593Smuzhiyunconfig CRYPTO_CCM
325*4882a593Smuzhiyun	tristate "CCM support"
326*4882a593Smuzhiyun	select CRYPTO_CTR
327*4882a593Smuzhiyun	select CRYPTO_HASH
328*4882a593Smuzhiyun	select CRYPTO_AEAD
329*4882a593Smuzhiyun	select CRYPTO_MANAGER
330*4882a593Smuzhiyun	help
331*4882a593Smuzhiyun	  Support for Counter with CBC MAC. Required for IPsec.
332*4882a593Smuzhiyun
333*4882a593Smuzhiyunconfig CRYPTO_GCM
334*4882a593Smuzhiyun	tristate "GCM/GMAC support"
335*4882a593Smuzhiyun	select CRYPTO_CTR
336*4882a593Smuzhiyun	select CRYPTO_AEAD
337*4882a593Smuzhiyun	select CRYPTO_GHASH
338*4882a593Smuzhiyun	select CRYPTO_NULL
339*4882a593Smuzhiyun	select CRYPTO_MANAGER
340*4882a593Smuzhiyun	help
341*4882a593Smuzhiyun	  Support for Galois/Counter Mode (GCM) and Galois Message
342*4882a593Smuzhiyun	  Authentication Code (GMAC). Required for IPSec.
343*4882a593Smuzhiyun
344*4882a593Smuzhiyunconfig CRYPTO_CHACHA20POLY1305
345*4882a593Smuzhiyun	tristate "ChaCha20-Poly1305 AEAD support"
346*4882a593Smuzhiyun	select CRYPTO_CHACHA20
347*4882a593Smuzhiyun	select CRYPTO_POLY1305
348*4882a593Smuzhiyun	select CRYPTO_AEAD
349*4882a593Smuzhiyun	select CRYPTO_MANAGER
350*4882a593Smuzhiyun	help
351*4882a593Smuzhiyun	  ChaCha20-Poly1305 AEAD support, RFC7539.
352*4882a593Smuzhiyun
353*4882a593Smuzhiyun	  Support for the AEAD wrapper using the ChaCha20 stream cipher combined
354*4882a593Smuzhiyun	  with the Poly1305 authenticator. It is defined in RFC7539 for use in
355*4882a593Smuzhiyun	  IETF protocols.
356*4882a593Smuzhiyun
357*4882a593Smuzhiyunconfig CRYPTO_AEGIS128
358*4882a593Smuzhiyun	tristate "AEGIS-128 AEAD algorithm"
359*4882a593Smuzhiyun	select CRYPTO_AEAD
360*4882a593Smuzhiyun	select CRYPTO_AES  # for AES S-box tables
361*4882a593Smuzhiyun	help
362*4882a593Smuzhiyun	 Support for the AEGIS-128 dedicated AEAD algorithm.
363*4882a593Smuzhiyun
364*4882a593Smuzhiyunconfig CRYPTO_AEGIS128_SIMD
365*4882a593Smuzhiyun	bool "Support SIMD acceleration for AEGIS-128"
366*4882a593Smuzhiyun	depends on CRYPTO_AEGIS128 && ((ARM || ARM64) && KERNEL_MODE_NEON)
367*4882a593Smuzhiyun	default y
368*4882a593Smuzhiyun
369*4882a593Smuzhiyunconfig CRYPTO_AEGIS128_AESNI_SSE2
370*4882a593Smuzhiyun	tristate "AEGIS-128 AEAD algorithm (x86_64 AESNI+SSE2 implementation)"
371*4882a593Smuzhiyun	depends on X86 && 64BIT
372*4882a593Smuzhiyun	select CRYPTO_AEAD
373*4882a593Smuzhiyun	select CRYPTO_SIMD
374*4882a593Smuzhiyun	help
375*4882a593Smuzhiyun	 AESNI+SSE2 implementation of the AEGIS-128 dedicated AEAD algorithm.
376*4882a593Smuzhiyun
377*4882a593Smuzhiyunconfig CRYPTO_SEQIV
378*4882a593Smuzhiyun	tristate "Sequence Number IV Generator"
379*4882a593Smuzhiyun	select CRYPTO_AEAD
380*4882a593Smuzhiyun	select CRYPTO_SKCIPHER
381*4882a593Smuzhiyun	select CRYPTO_NULL
382*4882a593Smuzhiyun	select CRYPTO_RNG_DEFAULT
383*4882a593Smuzhiyun	select CRYPTO_MANAGER
384*4882a593Smuzhiyun	help
385*4882a593Smuzhiyun	  This IV generator generates an IV based on a sequence number by
386*4882a593Smuzhiyun	  xoring it with a salt.  This algorithm is mainly useful for CTR
387*4882a593Smuzhiyun
388*4882a593Smuzhiyunconfig CRYPTO_ECHAINIV
389*4882a593Smuzhiyun	tristate "Encrypted Chain IV Generator"
390*4882a593Smuzhiyun	select CRYPTO_AEAD
391*4882a593Smuzhiyun	select CRYPTO_NULL
392*4882a593Smuzhiyun	select CRYPTO_RNG_DEFAULT
393*4882a593Smuzhiyun	select CRYPTO_MANAGER
394*4882a593Smuzhiyun	help
395*4882a593Smuzhiyun	  This IV generator generates an IV based on the encryption of
396*4882a593Smuzhiyun	  a sequence number xored with a salt.  This is the default
397*4882a593Smuzhiyun	  algorithm for CBC.
398*4882a593Smuzhiyun
399*4882a593Smuzhiyuncomment "Block modes"
400*4882a593Smuzhiyun
401*4882a593Smuzhiyunconfig CRYPTO_CBC
402*4882a593Smuzhiyun	tristate "CBC support"
403*4882a593Smuzhiyun	select CRYPTO_SKCIPHER
404*4882a593Smuzhiyun	select CRYPTO_MANAGER
405*4882a593Smuzhiyun	help
406*4882a593Smuzhiyun	  CBC: Cipher Block Chaining mode
407*4882a593Smuzhiyun	  This block cipher algorithm is required for IPSec.
408*4882a593Smuzhiyun
409*4882a593Smuzhiyunconfig CRYPTO_CFB
410*4882a593Smuzhiyun	tristate "CFB support"
411*4882a593Smuzhiyun	select CRYPTO_SKCIPHER
412*4882a593Smuzhiyun	select CRYPTO_MANAGER
413*4882a593Smuzhiyun	help
414*4882a593Smuzhiyun	  CFB: Cipher FeedBack mode
415*4882a593Smuzhiyun	  This block cipher algorithm is required for TPM2 Cryptography.
416*4882a593Smuzhiyun
417*4882a593Smuzhiyunconfig CRYPTO_CTR
418*4882a593Smuzhiyun	tristate "CTR support"
419*4882a593Smuzhiyun	select CRYPTO_SKCIPHER
420*4882a593Smuzhiyun	select CRYPTO_MANAGER
421*4882a593Smuzhiyun	help
422*4882a593Smuzhiyun	  CTR: Counter mode
423*4882a593Smuzhiyun	  This block cipher algorithm is required for IPSec.
424*4882a593Smuzhiyun
425*4882a593Smuzhiyunconfig CRYPTO_CTS
426*4882a593Smuzhiyun	tristate "CTS support"
427*4882a593Smuzhiyun	select CRYPTO_SKCIPHER
428*4882a593Smuzhiyun	select CRYPTO_MANAGER
429*4882a593Smuzhiyun	help
430*4882a593Smuzhiyun	  CTS: Cipher Text Stealing
431*4882a593Smuzhiyun	  This is the Cipher Text Stealing mode as described by
432*4882a593Smuzhiyun	  Section 8 of rfc2040 and referenced by rfc3962
433*4882a593Smuzhiyun	  (rfc3962 includes errata information in its Appendix A) or
434*4882a593Smuzhiyun	  CBC-CS3 as defined by NIST in Sp800-38A addendum from Oct 2010.
435*4882a593Smuzhiyun	  This mode is required for Kerberos gss mechanism support
436*4882a593Smuzhiyun	  for AES encryption.
437*4882a593Smuzhiyun
438*4882a593Smuzhiyun	  See: https://csrc.nist.gov/publications/detail/sp/800-38a/addendum/final
439*4882a593Smuzhiyun
440*4882a593Smuzhiyunconfig CRYPTO_ECB
441*4882a593Smuzhiyun	tristate "ECB support"
442*4882a593Smuzhiyun	select CRYPTO_SKCIPHER
443*4882a593Smuzhiyun	select CRYPTO_MANAGER
444*4882a593Smuzhiyun	help
445*4882a593Smuzhiyun	  ECB: Electronic CodeBook mode
446*4882a593Smuzhiyun	  This is the simplest block cipher algorithm.  It simply encrypts
447*4882a593Smuzhiyun	  the input block by block.
448*4882a593Smuzhiyun
449*4882a593Smuzhiyunconfig CRYPTO_LRW
450*4882a593Smuzhiyun	tristate "LRW support"
451*4882a593Smuzhiyun	select CRYPTO_SKCIPHER
452*4882a593Smuzhiyun	select CRYPTO_MANAGER
453*4882a593Smuzhiyun	select CRYPTO_GF128MUL
454*4882a593Smuzhiyun	help
455*4882a593Smuzhiyun	  LRW: Liskov Rivest Wagner, a tweakable, non malleable, non movable
456*4882a593Smuzhiyun	  narrow block cipher mode for dm-crypt.  Use it with cipher
457*4882a593Smuzhiyun	  specification string aes-lrw-benbi, the key must be 256, 320 or 384.
458*4882a593Smuzhiyun	  The first 128, 192 or 256 bits in the key are used for AES and the
459*4882a593Smuzhiyun	  rest is used to tie each cipher block to its logical position.
460*4882a593Smuzhiyun
461*4882a593Smuzhiyunconfig CRYPTO_OFB
462*4882a593Smuzhiyun	tristate "OFB support"
463*4882a593Smuzhiyun	select CRYPTO_SKCIPHER
464*4882a593Smuzhiyun	select CRYPTO_MANAGER
465*4882a593Smuzhiyun	help
466*4882a593Smuzhiyun	  OFB: the Output Feedback mode makes a block cipher into a synchronous
467*4882a593Smuzhiyun	  stream cipher. It generates keystream blocks, which are then XORed
468*4882a593Smuzhiyun	  with the plaintext blocks to get the ciphertext. Flipping a bit in the
469*4882a593Smuzhiyun	  ciphertext produces a flipped bit in the plaintext at the same
470*4882a593Smuzhiyun	  location. This property allows many error correcting codes to function
471*4882a593Smuzhiyun	  normally even when applied before encryption.
472*4882a593Smuzhiyun
473*4882a593Smuzhiyunconfig CRYPTO_PCBC
474*4882a593Smuzhiyun	tristate "PCBC support"
475*4882a593Smuzhiyun	select CRYPTO_SKCIPHER
476*4882a593Smuzhiyun	select CRYPTO_MANAGER
477*4882a593Smuzhiyun	help
478*4882a593Smuzhiyun	  PCBC: Propagating Cipher Block Chaining mode
479*4882a593Smuzhiyun	  This block cipher algorithm is required for RxRPC.
480*4882a593Smuzhiyun
481*4882a593Smuzhiyunconfig CRYPTO_XTS
482*4882a593Smuzhiyun	tristate "XTS support"
483*4882a593Smuzhiyun	select CRYPTO_SKCIPHER
484*4882a593Smuzhiyun	select CRYPTO_MANAGER
485*4882a593Smuzhiyun	select CRYPTO_ECB
486*4882a593Smuzhiyun	help
487*4882a593Smuzhiyun	  XTS: IEEE1619/D16 narrow block cipher use with aes-xts-plain,
488*4882a593Smuzhiyun	  key size 256, 384 or 512 bits. This implementation currently
489*4882a593Smuzhiyun	  can't handle a sectorsize which is not a multiple of 16 bytes.
490*4882a593Smuzhiyun
491*4882a593Smuzhiyunconfig CRYPTO_KEYWRAP
492*4882a593Smuzhiyun	tristate "Key wrapping support"
493*4882a593Smuzhiyun	select CRYPTO_SKCIPHER
494*4882a593Smuzhiyun	select CRYPTO_MANAGER
495*4882a593Smuzhiyun	help
496*4882a593Smuzhiyun	  Support for key wrapping (NIST SP800-38F / RFC3394) without
497*4882a593Smuzhiyun	  padding.
498*4882a593Smuzhiyun
499*4882a593Smuzhiyunconfig CRYPTO_NHPOLY1305
500*4882a593Smuzhiyun	tristate
501*4882a593Smuzhiyun	select CRYPTO_HASH
502*4882a593Smuzhiyun	select CRYPTO_LIB_POLY1305_GENERIC
503*4882a593Smuzhiyun
504*4882a593Smuzhiyunconfig CRYPTO_NHPOLY1305_SSE2
505*4882a593Smuzhiyun	tristate "NHPoly1305 hash function (x86_64 SSE2 implementation)"
506*4882a593Smuzhiyun	depends on X86 && 64BIT
507*4882a593Smuzhiyun	select CRYPTO_NHPOLY1305
508*4882a593Smuzhiyun	help
509*4882a593Smuzhiyun	  SSE2 optimized implementation of the hash function used by the
510*4882a593Smuzhiyun	  Adiantum encryption mode.
511*4882a593Smuzhiyun
512*4882a593Smuzhiyunconfig CRYPTO_NHPOLY1305_AVX2
513*4882a593Smuzhiyun	tristate "NHPoly1305 hash function (x86_64 AVX2 implementation)"
514*4882a593Smuzhiyun	depends on X86 && 64BIT
515*4882a593Smuzhiyun	select CRYPTO_NHPOLY1305
516*4882a593Smuzhiyun	help
517*4882a593Smuzhiyun	  AVX2 optimized implementation of the hash function used by the
518*4882a593Smuzhiyun	  Adiantum encryption mode.
519*4882a593Smuzhiyun
520*4882a593Smuzhiyunconfig CRYPTO_ADIANTUM
521*4882a593Smuzhiyun	tristate "Adiantum support"
522*4882a593Smuzhiyun	select CRYPTO_CHACHA20
523*4882a593Smuzhiyun	select CRYPTO_LIB_POLY1305_GENERIC
524*4882a593Smuzhiyun	select CRYPTO_NHPOLY1305
525*4882a593Smuzhiyun	select CRYPTO_MANAGER
526*4882a593Smuzhiyun	help
527*4882a593Smuzhiyun	  Adiantum is a tweakable, length-preserving encryption mode
528*4882a593Smuzhiyun	  designed for fast and secure disk encryption, especially on
529*4882a593Smuzhiyun	  CPUs without dedicated crypto instructions.  It encrypts
530*4882a593Smuzhiyun	  each sector using the XChaCha12 stream cipher, two passes of
531*4882a593Smuzhiyun	  an ε-almost-∆-universal hash function, and an invocation of
532*4882a593Smuzhiyun	  the AES-256 block cipher on a single 16-byte block.  On CPUs
533*4882a593Smuzhiyun	  without AES instructions, Adiantum is much faster than
534*4882a593Smuzhiyun	  AES-XTS.
535*4882a593Smuzhiyun
536*4882a593Smuzhiyun	  Adiantum's security is provably reducible to that of its
537*4882a593Smuzhiyun	  underlying stream and block ciphers, subject to a security
538*4882a593Smuzhiyun	  bound.  Unlike XTS, Adiantum is a true wide-block encryption
539*4882a593Smuzhiyun	  mode, so it actually provides an even stronger notion of
540*4882a593Smuzhiyun	  security than XTS, subject to the security bound.
541*4882a593Smuzhiyun
542*4882a593Smuzhiyun	  If unsure, say N.
543*4882a593Smuzhiyun
544*4882a593Smuzhiyunconfig CRYPTO_ESSIV
545*4882a593Smuzhiyun	tristate "ESSIV support for block encryption"
546*4882a593Smuzhiyun	select CRYPTO_AUTHENC
547*4882a593Smuzhiyun	help
548*4882a593Smuzhiyun	  Encrypted salt-sector initialization vector (ESSIV) is an IV
549*4882a593Smuzhiyun	  generation method that is used in some cases by fscrypt and/or
550*4882a593Smuzhiyun	  dm-crypt. It uses the hash of the block encryption key as the
551*4882a593Smuzhiyun	  symmetric key for a block encryption pass applied to the input
552*4882a593Smuzhiyun	  IV, making low entropy IV sources more suitable for block
553*4882a593Smuzhiyun	  encryption.
554*4882a593Smuzhiyun
555*4882a593Smuzhiyun	  This driver implements a crypto API template that can be
556*4882a593Smuzhiyun	  instantiated either as an skcipher or as an AEAD (depending on the
557*4882a593Smuzhiyun	  type of the first template argument), and which defers encryption
558*4882a593Smuzhiyun	  and decryption requests to the encapsulated cipher after applying
559*4882a593Smuzhiyun	  ESSIV to the input IV. Note that in the AEAD case, it is assumed
560*4882a593Smuzhiyun	  that the keys are presented in the same format used by the authenc
561*4882a593Smuzhiyun	  template, and that the IV appears at the end of the authenticated
562*4882a593Smuzhiyun	  associated data (AAD) region (which is how dm-crypt uses it.)
563*4882a593Smuzhiyun
564*4882a593Smuzhiyun	  Note that the use of ESSIV is not recommended for new deployments,
565*4882a593Smuzhiyun	  and so this only needs to be enabled when interoperability with
566*4882a593Smuzhiyun	  existing encrypted volumes of filesystems is required, or when
567*4882a593Smuzhiyun	  building for a particular system that requires it (e.g., when
568*4882a593Smuzhiyun	  the SoC in question has accelerated CBC but not XTS, making CBC
569*4882a593Smuzhiyun	  combined with ESSIV the only feasible mode for h/w accelerated
570*4882a593Smuzhiyun	  block encryption)
571*4882a593Smuzhiyun
572*4882a593Smuzhiyuncomment "Hash modes"
573*4882a593Smuzhiyun
574*4882a593Smuzhiyunconfig CRYPTO_CMAC
575*4882a593Smuzhiyun	tristate "CMAC support"
576*4882a593Smuzhiyun	select CRYPTO_HASH
577*4882a593Smuzhiyun	select CRYPTO_MANAGER
578*4882a593Smuzhiyun	help
579*4882a593Smuzhiyun	  Cipher-based Message Authentication Code (CMAC) specified by
580*4882a593Smuzhiyun	  The National Institute of Standards and Technology (NIST).
581*4882a593Smuzhiyun
582*4882a593Smuzhiyun	  https://tools.ietf.org/html/rfc4493
583*4882a593Smuzhiyun	  http://csrc.nist.gov/publications/nistpubs/800-38B/SP_800-38B.pdf
584*4882a593Smuzhiyun
585*4882a593Smuzhiyunconfig CRYPTO_HMAC
586*4882a593Smuzhiyun	tristate "HMAC support"
587*4882a593Smuzhiyun	select CRYPTO_HASH
588*4882a593Smuzhiyun	select CRYPTO_MANAGER
589*4882a593Smuzhiyun	help
590*4882a593Smuzhiyun	  HMAC: Keyed-Hashing for Message Authentication (RFC2104).
591*4882a593Smuzhiyun	  This is required for IPSec.
592*4882a593Smuzhiyun
593*4882a593Smuzhiyunconfig CRYPTO_XCBC
594*4882a593Smuzhiyun	tristate "XCBC support"
595*4882a593Smuzhiyun	select CRYPTO_HASH
596*4882a593Smuzhiyun	select CRYPTO_MANAGER
597*4882a593Smuzhiyun	help
598*4882a593Smuzhiyun	  XCBC: Keyed-Hashing with encryption algorithm
599*4882a593Smuzhiyun		https://www.ietf.org/rfc/rfc3566.txt
600*4882a593Smuzhiyun		http://csrc.nist.gov/encryption/modes/proposedmodes/
601*4882a593Smuzhiyun		 xcbc-mac/xcbc-mac-spec.pdf
602*4882a593Smuzhiyun
603*4882a593Smuzhiyunconfig CRYPTO_VMAC
604*4882a593Smuzhiyun	tristate "VMAC support"
605*4882a593Smuzhiyun	select CRYPTO_HASH
606*4882a593Smuzhiyun	select CRYPTO_MANAGER
607*4882a593Smuzhiyun	help
608*4882a593Smuzhiyun	  VMAC is a message authentication algorithm designed for
609*4882a593Smuzhiyun	  very high speed on 64-bit architectures.
610*4882a593Smuzhiyun
611*4882a593Smuzhiyun	  See also:
612*4882a593Smuzhiyun	  <https://fastcrypto.org/vmac>
613*4882a593Smuzhiyun
614*4882a593Smuzhiyuncomment "Digest"
615*4882a593Smuzhiyun
616*4882a593Smuzhiyunconfig CRYPTO_CRC32C
617*4882a593Smuzhiyun	tristate "CRC32c CRC algorithm"
618*4882a593Smuzhiyun	select CRYPTO_HASH
619*4882a593Smuzhiyun	select CRC32
620*4882a593Smuzhiyun	help
621*4882a593Smuzhiyun	  Castagnoli, et al Cyclic Redundancy-Check Algorithm.  Used
622*4882a593Smuzhiyun	  by iSCSI for header and data digests and by others.
623*4882a593Smuzhiyun	  See Castagnoli93.  Module will be crc32c.
624*4882a593Smuzhiyun
625*4882a593Smuzhiyunconfig CRYPTO_CRC32C_INTEL
626*4882a593Smuzhiyun	tristate "CRC32c INTEL hardware acceleration"
627*4882a593Smuzhiyun	depends on X86
628*4882a593Smuzhiyun	select CRYPTO_HASH
629*4882a593Smuzhiyun	help
630*4882a593Smuzhiyun	  In Intel processor with SSE4.2 supported, the processor will
631*4882a593Smuzhiyun	  support CRC32C implementation using hardware accelerated CRC32
632*4882a593Smuzhiyun	  instruction. This option will create 'crc32c-intel' module,
633*4882a593Smuzhiyun	  which will enable any routine to use the CRC32 instruction to
634*4882a593Smuzhiyun	  gain performance compared with software implementation.
635*4882a593Smuzhiyun	  Module will be crc32c-intel.
636*4882a593Smuzhiyun
637*4882a593Smuzhiyunconfig CRYPTO_CRC32C_VPMSUM
638*4882a593Smuzhiyun	tristate "CRC32c CRC algorithm (powerpc64)"
639*4882a593Smuzhiyun	depends on PPC64 && ALTIVEC
640*4882a593Smuzhiyun	select CRYPTO_HASH
641*4882a593Smuzhiyun	select CRC32
642*4882a593Smuzhiyun	help
643*4882a593Smuzhiyun	  CRC32c algorithm implemented using vector polynomial multiply-sum
644*4882a593Smuzhiyun	  (vpmsum) instructions, introduced in POWER8. Enable on POWER8
645*4882a593Smuzhiyun	  and newer processors for improved performance.
646*4882a593Smuzhiyun
647*4882a593Smuzhiyun
648*4882a593Smuzhiyunconfig CRYPTO_CRC32C_SPARC64
649*4882a593Smuzhiyun	tristate "CRC32c CRC algorithm (SPARC64)"
650*4882a593Smuzhiyun	depends on SPARC64
651*4882a593Smuzhiyun	select CRYPTO_HASH
652*4882a593Smuzhiyun	select CRC32
653*4882a593Smuzhiyun	help
654*4882a593Smuzhiyun	  CRC32c CRC algorithm implemented using sparc64 crypto instructions,
655*4882a593Smuzhiyun	  when available.
656*4882a593Smuzhiyun
657*4882a593Smuzhiyunconfig CRYPTO_CRC32
658*4882a593Smuzhiyun	tristate "CRC32 CRC algorithm"
659*4882a593Smuzhiyun	select CRYPTO_HASH
660*4882a593Smuzhiyun	select CRC32
661*4882a593Smuzhiyun	help
662*4882a593Smuzhiyun	  CRC-32-IEEE 802.3 cyclic redundancy-check algorithm.
663*4882a593Smuzhiyun	  Shash crypto api wrappers to crc32_le function.
664*4882a593Smuzhiyun
665*4882a593Smuzhiyunconfig CRYPTO_CRC32_PCLMUL
666*4882a593Smuzhiyun	tristate "CRC32 PCLMULQDQ hardware acceleration"
667*4882a593Smuzhiyun	depends on X86
668*4882a593Smuzhiyun	select CRYPTO_HASH
669*4882a593Smuzhiyun	select CRC32
670*4882a593Smuzhiyun	help
671*4882a593Smuzhiyun	  From Intel Westmere and AMD Bulldozer processor with SSE4.2
672*4882a593Smuzhiyun	  and PCLMULQDQ supported, the processor will support
673*4882a593Smuzhiyun	  CRC32 PCLMULQDQ implementation using hardware accelerated PCLMULQDQ
674*4882a593Smuzhiyun	  instruction. This option will create 'crc32-pclmul' module,
675*4882a593Smuzhiyun	  which will enable any routine to use the CRC-32-IEEE 802.3 checksum
676*4882a593Smuzhiyun	  and gain better performance as compared with the table implementation.
677*4882a593Smuzhiyun
678*4882a593Smuzhiyunconfig CRYPTO_CRC32_MIPS
679*4882a593Smuzhiyun	tristate "CRC32c and CRC32 CRC algorithm (MIPS)"
680*4882a593Smuzhiyun	depends on MIPS_CRC_SUPPORT
681*4882a593Smuzhiyun	select CRYPTO_HASH
682*4882a593Smuzhiyun	help
683*4882a593Smuzhiyun	  CRC32c and CRC32 CRC algorithms implemented using mips crypto
684*4882a593Smuzhiyun	  instructions, when available.
685*4882a593Smuzhiyun
686*4882a593Smuzhiyun
687*4882a593Smuzhiyunconfig CRYPTO_XXHASH
688*4882a593Smuzhiyun	tristate "xxHash hash algorithm"
689*4882a593Smuzhiyun	select CRYPTO_HASH
690*4882a593Smuzhiyun	select XXHASH
691*4882a593Smuzhiyun	help
692*4882a593Smuzhiyun	  xxHash non-cryptographic hash algorithm. Extremely fast, working at
693*4882a593Smuzhiyun	  speeds close to RAM limits.
694*4882a593Smuzhiyun
695*4882a593Smuzhiyunconfig CRYPTO_BLAKE2B
696*4882a593Smuzhiyun	tristate "BLAKE2b digest algorithm"
697*4882a593Smuzhiyun	select CRYPTO_HASH
698*4882a593Smuzhiyun	help
699*4882a593Smuzhiyun	  Implementation of cryptographic hash function BLAKE2b (or just BLAKE2),
700*4882a593Smuzhiyun	  optimized for 64bit platforms and can produce digests of any size
701*4882a593Smuzhiyun	  between 1 to 64.  The keyed hash is also implemented.
702*4882a593Smuzhiyun
703*4882a593Smuzhiyun	  This module provides the following algorithms:
704*4882a593Smuzhiyun
705*4882a593Smuzhiyun	  - blake2b-160
706*4882a593Smuzhiyun	  - blake2b-256
707*4882a593Smuzhiyun	  - blake2b-384
708*4882a593Smuzhiyun	  - blake2b-512
709*4882a593Smuzhiyun
710*4882a593Smuzhiyun	  See https://blake2.net for further information.
711*4882a593Smuzhiyun
712*4882a593Smuzhiyunconfig CRYPTO_BLAKE2S
713*4882a593Smuzhiyun	tristate "BLAKE2s digest algorithm"
714*4882a593Smuzhiyun	select CRYPTO_LIB_BLAKE2S_GENERIC
715*4882a593Smuzhiyun	select CRYPTO_HASH
716*4882a593Smuzhiyun	help
717*4882a593Smuzhiyun	  Implementation of cryptographic hash function BLAKE2s
718*4882a593Smuzhiyun	  optimized for 8-32bit platforms and can produce digests of any size
719*4882a593Smuzhiyun	  between 1 to 32.  The keyed hash is also implemented.
720*4882a593Smuzhiyun
721*4882a593Smuzhiyun	  This module provides the following algorithms:
722*4882a593Smuzhiyun
723*4882a593Smuzhiyun	  - blake2s-128
724*4882a593Smuzhiyun	  - blake2s-160
725*4882a593Smuzhiyun	  - blake2s-224
726*4882a593Smuzhiyun	  - blake2s-256
727*4882a593Smuzhiyun
728*4882a593Smuzhiyun	  See https://blake2.net for further information.
729*4882a593Smuzhiyun
730*4882a593Smuzhiyunconfig CRYPTO_BLAKE2S_X86
731*4882a593Smuzhiyun	tristate "BLAKE2s digest algorithm (x86 accelerated version)"
732*4882a593Smuzhiyun	depends on X86 && 64BIT
733*4882a593Smuzhiyun	select CRYPTO_LIB_BLAKE2S_GENERIC
734*4882a593Smuzhiyun	select CRYPTO_ARCH_HAVE_LIB_BLAKE2S
735*4882a593Smuzhiyun
736*4882a593Smuzhiyunconfig CRYPTO_CRCT10DIF
737*4882a593Smuzhiyun	tristate "CRCT10DIF algorithm"
738*4882a593Smuzhiyun	select CRYPTO_HASH
739*4882a593Smuzhiyun	help
740*4882a593Smuzhiyun	  CRC T10 Data Integrity Field computation is being cast as
741*4882a593Smuzhiyun	  a crypto transform.  This allows for faster crc t10 diff
742*4882a593Smuzhiyun	  transforms to be used if they are available.
743*4882a593Smuzhiyun
744*4882a593Smuzhiyunconfig CRYPTO_CRCT10DIF_PCLMUL
745*4882a593Smuzhiyun	tristate "CRCT10DIF PCLMULQDQ hardware acceleration"
746*4882a593Smuzhiyun	depends on X86 && 64BIT && CRC_T10DIF
747*4882a593Smuzhiyun	select CRYPTO_HASH
748*4882a593Smuzhiyun	help
749*4882a593Smuzhiyun	  For x86_64 processors with SSE4.2 and PCLMULQDQ supported,
750*4882a593Smuzhiyun	  CRC T10 DIF PCLMULQDQ computation can be hardware
751*4882a593Smuzhiyun	  accelerated PCLMULQDQ instruction. This option will create
752*4882a593Smuzhiyun	  'crct10dif-pclmul' module, which is faster when computing the
753*4882a593Smuzhiyun	  crct10dif checksum as compared with the generic table implementation.
754*4882a593Smuzhiyun
755*4882a593Smuzhiyunconfig CRYPTO_CRCT10DIF_VPMSUM
756*4882a593Smuzhiyun	tristate "CRC32T10DIF powerpc64 hardware acceleration"
757*4882a593Smuzhiyun	depends on PPC64 && ALTIVEC && CRC_T10DIF
758*4882a593Smuzhiyun	select CRYPTO_HASH
759*4882a593Smuzhiyun	help
760*4882a593Smuzhiyun	  CRC10T10DIF algorithm implemented using vector polynomial
761*4882a593Smuzhiyun	  multiply-sum (vpmsum) instructions, introduced in POWER8. Enable on
762*4882a593Smuzhiyun	  POWER8 and newer processors for improved performance.
763*4882a593Smuzhiyun
764*4882a593Smuzhiyunconfig CRYPTO_VPMSUM_TESTER
765*4882a593Smuzhiyun	tristate "Powerpc64 vpmsum hardware acceleration tester"
766*4882a593Smuzhiyun	depends on CRYPTO_CRCT10DIF_VPMSUM && CRYPTO_CRC32C_VPMSUM
767*4882a593Smuzhiyun	help
768*4882a593Smuzhiyun	  Stress test for CRC32c and CRC-T10DIF algorithms implemented with
769*4882a593Smuzhiyun	  POWER8 vpmsum instructions.
770*4882a593Smuzhiyun	  Unless you are testing these algorithms, you don't need this.
771*4882a593Smuzhiyun
772*4882a593Smuzhiyunconfig CRYPTO_GHASH
773*4882a593Smuzhiyun	tristate "GHASH hash function"
774*4882a593Smuzhiyun	select CRYPTO_GF128MUL
775*4882a593Smuzhiyun	select CRYPTO_HASH
776*4882a593Smuzhiyun	help
777*4882a593Smuzhiyun	  GHASH is the hash function used in GCM (Galois/Counter Mode).
778*4882a593Smuzhiyun	  It is not a general-purpose cryptographic hash function.
779*4882a593Smuzhiyun
780*4882a593Smuzhiyunconfig CRYPTO_POLY1305
781*4882a593Smuzhiyun	tristate "Poly1305 authenticator algorithm"
782*4882a593Smuzhiyun	select CRYPTO_HASH
783*4882a593Smuzhiyun	select CRYPTO_LIB_POLY1305_GENERIC
784*4882a593Smuzhiyun	help
785*4882a593Smuzhiyun	  Poly1305 authenticator algorithm, RFC7539.
786*4882a593Smuzhiyun
787*4882a593Smuzhiyun	  Poly1305 is an authenticator algorithm designed by Daniel J. Bernstein.
788*4882a593Smuzhiyun	  It is used for the ChaCha20-Poly1305 AEAD, specified in RFC7539 for use
789*4882a593Smuzhiyun	  in IETF protocols. This is the portable C implementation of Poly1305.
790*4882a593Smuzhiyun
791*4882a593Smuzhiyunconfig CRYPTO_POLY1305_X86_64
792*4882a593Smuzhiyun	tristate "Poly1305 authenticator algorithm (x86_64/SSE2/AVX2)"
793*4882a593Smuzhiyun	depends on X86 && 64BIT
794*4882a593Smuzhiyun	select CRYPTO_LIB_POLY1305_GENERIC
795*4882a593Smuzhiyun	select CRYPTO_ARCH_HAVE_LIB_POLY1305
796*4882a593Smuzhiyun	help
797*4882a593Smuzhiyun	  Poly1305 authenticator algorithm, RFC7539.
798*4882a593Smuzhiyun
799*4882a593Smuzhiyun	  Poly1305 is an authenticator algorithm designed by Daniel J. Bernstein.
800*4882a593Smuzhiyun	  It is used for the ChaCha20-Poly1305 AEAD, specified in RFC7539 for use
801*4882a593Smuzhiyun	  in IETF protocols. This is the x86_64 assembler implementation using SIMD
802*4882a593Smuzhiyun	  instructions.
803*4882a593Smuzhiyun
804*4882a593Smuzhiyunconfig CRYPTO_POLY1305_MIPS
805*4882a593Smuzhiyun	tristate "Poly1305 authenticator algorithm (MIPS optimized)"
806*4882a593Smuzhiyun	depends on MIPS
807*4882a593Smuzhiyun	select CRYPTO_ARCH_HAVE_LIB_POLY1305
808*4882a593Smuzhiyun
809*4882a593Smuzhiyunconfig CRYPTO_MD4
810*4882a593Smuzhiyun	tristate "MD4 digest algorithm"
811*4882a593Smuzhiyun	select CRYPTO_HASH
812*4882a593Smuzhiyun	help
813*4882a593Smuzhiyun	  MD4 message digest algorithm (RFC1320).
814*4882a593Smuzhiyun
815*4882a593Smuzhiyunconfig CRYPTO_MD5
816*4882a593Smuzhiyun	tristate "MD5 digest algorithm"
817*4882a593Smuzhiyun	select CRYPTO_HASH
818*4882a593Smuzhiyun	help
819*4882a593Smuzhiyun	  MD5 message digest algorithm (RFC1321).
820*4882a593Smuzhiyun
821*4882a593Smuzhiyunconfig CRYPTO_MD5_OCTEON
822*4882a593Smuzhiyun	tristate "MD5 digest algorithm (OCTEON)"
823*4882a593Smuzhiyun	depends on CPU_CAVIUM_OCTEON
824*4882a593Smuzhiyun	select CRYPTO_MD5
825*4882a593Smuzhiyun	select CRYPTO_HASH
826*4882a593Smuzhiyun	help
827*4882a593Smuzhiyun	  MD5 message digest algorithm (RFC1321) implemented
828*4882a593Smuzhiyun	  using OCTEON crypto instructions, when available.
829*4882a593Smuzhiyun
830*4882a593Smuzhiyunconfig CRYPTO_MD5_PPC
831*4882a593Smuzhiyun	tristate "MD5 digest algorithm (PPC)"
832*4882a593Smuzhiyun	depends on PPC
833*4882a593Smuzhiyun	select CRYPTO_HASH
834*4882a593Smuzhiyun	help
835*4882a593Smuzhiyun	  MD5 message digest algorithm (RFC1321) implemented
836*4882a593Smuzhiyun	  in PPC assembler.
837*4882a593Smuzhiyun
838*4882a593Smuzhiyunconfig CRYPTO_MD5_SPARC64
839*4882a593Smuzhiyun	tristate "MD5 digest algorithm (SPARC64)"
840*4882a593Smuzhiyun	depends on SPARC64
841*4882a593Smuzhiyun	select CRYPTO_MD5
842*4882a593Smuzhiyun	select CRYPTO_HASH
843*4882a593Smuzhiyun	help
844*4882a593Smuzhiyun	  MD5 message digest algorithm (RFC1321) implemented
845*4882a593Smuzhiyun	  using sparc64 crypto instructions, when available.
846*4882a593Smuzhiyun
847*4882a593Smuzhiyunconfig CRYPTO_MICHAEL_MIC
848*4882a593Smuzhiyun	tristate "Michael MIC keyed digest algorithm"
849*4882a593Smuzhiyun	select CRYPTO_HASH
850*4882a593Smuzhiyun	help
851*4882a593Smuzhiyun	  Michael MIC is used for message integrity protection in TKIP
852*4882a593Smuzhiyun	  (IEEE 802.11i). This algorithm is required for TKIP, but it
853*4882a593Smuzhiyun	  should not be used for other purposes because of the weakness
854*4882a593Smuzhiyun	  of the algorithm.
855*4882a593Smuzhiyun
856*4882a593Smuzhiyunconfig CRYPTO_RMD128
857*4882a593Smuzhiyun	tristate "RIPEMD-128 digest algorithm"
858*4882a593Smuzhiyun	select CRYPTO_HASH
859*4882a593Smuzhiyun	help
860*4882a593Smuzhiyun	  RIPEMD-128 (ISO/IEC 10118-3:2004).
861*4882a593Smuzhiyun
862*4882a593Smuzhiyun	  RIPEMD-128 is a 128-bit cryptographic hash function. It should only
863*4882a593Smuzhiyun	  be used as a secure replacement for RIPEMD. For other use cases,
864*4882a593Smuzhiyun	  RIPEMD-160 should be used.
865*4882a593Smuzhiyun
866*4882a593Smuzhiyun	  Developed by Hans Dobbertin, Antoon Bosselaers and Bart Preneel.
867*4882a593Smuzhiyun	  See <https://homes.esat.kuleuven.be/~bosselae/ripemd160.html>
868*4882a593Smuzhiyun
869*4882a593Smuzhiyunconfig CRYPTO_RMD160
870*4882a593Smuzhiyun	tristate "RIPEMD-160 digest algorithm"
871*4882a593Smuzhiyun	select CRYPTO_HASH
872*4882a593Smuzhiyun	help
873*4882a593Smuzhiyun	  RIPEMD-160 (ISO/IEC 10118-3:2004).
874*4882a593Smuzhiyun
875*4882a593Smuzhiyun	  RIPEMD-160 is a 160-bit cryptographic hash function. It is intended
876*4882a593Smuzhiyun	  to be used as a secure replacement for the 128-bit hash functions
877*4882a593Smuzhiyun	  MD4, MD5 and it's predecessor RIPEMD
878*4882a593Smuzhiyun	  (not to be confused with RIPEMD-128).
879*4882a593Smuzhiyun
880*4882a593Smuzhiyun	  It's speed is comparable to SHA1 and there are no known attacks
881*4882a593Smuzhiyun	  against RIPEMD-160.
882*4882a593Smuzhiyun
883*4882a593Smuzhiyun	  Developed by Hans Dobbertin, Antoon Bosselaers and Bart Preneel.
884*4882a593Smuzhiyun	  See <https://homes.esat.kuleuven.be/~bosselae/ripemd160.html>
885*4882a593Smuzhiyun
886*4882a593Smuzhiyunconfig CRYPTO_RMD256
887*4882a593Smuzhiyun	tristate "RIPEMD-256 digest algorithm"
888*4882a593Smuzhiyun	select CRYPTO_HASH
889*4882a593Smuzhiyun	help
890*4882a593Smuzhiyun	  RIPEMD-256 is an optional extension of RIPEMD-128 with a
891*4882a593Smuzhiyun	  256 bit hash. It is intended for applications that require
892*4882a593Smuzhiyun	  longer hash-results, without needing a larger security level
893*4882a593Smuzhiyun	  (than RIPEMD-128).
894*4882a593Smuzhiyun
895*4882a593Smuzhiyun	  Developed by Hans Dobbertin, Antoon Bosselaers and Bart Preneel.
896*4882a593Smuzhiyun	  See <https://homes.esat.kuleuven.be/~bosselae/ripemd160.html>
897*4882a593Smuzhiyun
898*4882a593Smuzhiyunconfig CRYPTO_RMD320
899*4882a593Smuzhiyun	tristate "RIPEMD-320 digest algorithm"
900*4882a593Smuzhiyun	select CRYPTO_HASH
901*4882a593Smuzhiyun	help
902*4882a593Smuzhiyun	  RIPEMD-320 is an optional extension of RIPEMD-160 with a
903*4882a593Smuzhiyun	  320 bit hash. It is intended for applications that require
904*4882a593Smuzhiyun	  longer hash-results, without needing a larger security level
905*4882a593Smuzhiyun	  (than RIPEMD-160).
906*4882a593Smuzhiyun
907*4882a593Smuzhiyun	  Developed by Hans Dobbertin, Antoon Bosselaers and Bart Preneel.
908*4882a593Smuzhiyun	  See <https://homes.esat.kuleuven.be/~bosselae/ripemd160.html>
909*4882a593Smuzhiyun
910*4882a593Smuzhiyunconfig CRYPTO_SHA1
911*4882a593Smuzhiyun	tristate "SHA1 digest algorithm"
912*4882a593Smuzhiyun	select CRYPTO_HASH
913*4882a593Smuzhiyun	help
914*4882a593Smuzhiyun	  SHA-1 secure hash standard (FIPS 180-1/DFIPS 180-2).
915*4882a593Smuzhiyun
916*4882a593Smuzhiyunconfig CRYPTO_SHA1_SSSE3
917*4882a593Smuzhiyun	tristate "SHA1 digest algorithm (SSSE3/AVX/AVX2/SHA-NI)"
918*4882a593Smuzhiyun	depends on X86 && 64BIT
919*4882a593Smuzhiyun	select CRYPTO_SHA1
920*4882a593Smuzhiyun	select CRYPTO_HASH
921*4882a593Smuzhiyun	help
922*4882a593Smuzhiyun	  SHA-1 secure hash standard (FIPS 180-1/DFIPS 180-2) implemented
923*4882a593Smuzhiyun	  using Supplemental SSE3 (SSSE3) instructions or Advanced Vector
924*4882a593Smuzhiyun	  Extensions (AVX/AVX2) or SHA-NI(SHA Extensions New Instructions),
925*4882a593Smuzhiyun	  when available.
926*4882a593Smuzhiyun
927*4882a593Smuzhiyunconfig CRYPTO_SHA256_SSSE3
928*4882a593Smuzhiyun	tristate "SHA256 digest algorithm (SSSE3/AVX/AVX2/SHA-NI)"
929*4882a593Smuzhiyun	depends on X86 && 64BIT
930*4882a593Smuzhiyun	select CRYPTO_SHA256
931*4882a593Smuzhiyun	select CRYPTO_HASH
932*4882a593Smuzhiyun	help
933*4882a593Smuzhiyun	  SHA-256 secure hash standard (DFIPS 180-2) implemented
934*4882a593Smuzhiyun	  using Supplemental SSE3 (SSSE3) instructions, or Advanced Vector
935*4882a593Smuzhiyun	  Extensions version 1 (AVX1), or Advanced Vector Extensions
936*4882a593Smuzhiyun	  version 2 (AVX2) instructions, or SHA-NI (SHA Extensions New
937*4882a593Smuzhiyun	  Instructions) when available.
938*4882a593Smuzhiyun
939*4882a593Smuzhiyunconfig CRYPTO_SHA512_SSSE3
940*4882a593Smuzhiyun	tristate "SHA512 digest algorithm (SSSE3/AVX/AVX2)"
941*4882a593Smuzhiyun	depends on X86 && 64BIT
942*4882a593Smuzhiyun	select CRYPTO_SHA512
943*4882a593Smuzhiyun	select CRYPTO_HASH
944*4882a593Smuzhiyun	help
945*4882a593Smuzhiyun	  SHA-512 secure hash standard (DFIPS 180-2) implemented
946*4882a593Smuzhiyun	  using Supplemental SSE3 (SSSE3) instructions, or Advanced Vector
947*4882a593Smuzhiyun	  Extensions version 1 (AVX1), or Advanced Vector Extensions
948*4882a593Smuzhiyun	  version 2 (AVX2) instructions, when available.
949*4882a593Smuzhiyun
950*4882a593Smuzhiyunconfig CRYPTO_SHA1_OCTEON
951*4882a593Smuzhiyun	tristate "SHA1 digest algorithm (OCTEON)"
952*4882a593Smuzhiyun	depends on CPU_CAVIUM_OCTEON
953*4882a593Smuzhiyun	select CRYPTO_SHA1
954*4882a593Smuzhiyun	select CRYPTO_HASH
955*4882a593Smuzhiyun	help
956*4882a593Smuzhiyun	  SHA-1 secure hash standard (FIPS 180-1/DFIPS 180-2) implemented
957*4882a593Smuzhiyun	  using OCTEON crypto instructions, when available.
958*4882a593Smuzhiyun
959*4882a593Smuzhiyunconfig CRYPTO_SHA1_SPARC64
960*4882a593Smuzhiyun	tristate "SHA1 digest algorithm (SPARC64)"
961*4882a593Smuzhiyun	depends on SPARC64
962*4882a593Smuzhiyun	select CRYPTO_SHA1
963*4882a593Smuzhiyun	select CRYPTO_HASH
964*4882a593Smuzhiyun	help
965*4882a593Smuzhiyun	  SHA-1 secure hash standard (FIPS 180-1/DFIPS 180-2) implemented
966*4882a593Smuzhiyun	  using sparc64 crypto instructions, when available.
967*4882a593Smuzhiyun
968*4882a593Smuzhiyunconfig CRYPTO_SHA1_PPC
969*4882a593Smuzhiyun	tristate "SHA1 digest algorithm (powerpc)"
970*4882a593Smuzhiyun	depends on PPC
971*4882a593Smuzhiyun	help
972*4882a593Smuzhiyun	  This is the powerpc hardware accelerated implementation of the
973*4882a593Smuzhiyun	  SHA-1 secure hash standard (FIPS 180-1/DFIPS 180-2).
974*4882a593Smuzhiyun
975*4882a593Smuzhiyunconfig CRYPTO_SHA1_PPC_SPE
976*4882a593Smuzhiyun	tristate "SHA1 digest algorithm (PPC SPE)"
977*4882a593Smuzhiyun	depends on PPC && SPE
978*4882a593Smuzhiyun	help
979*4882a593Smuzhiyun	  SHA-1 secure hash standard (DFIPS 180-4) implemented
980*4882a593Smuzhiyun	  using powerpc SPE SIMD instruction set.
981*4882a593Smuzhiyun
982*4882a593Smuzhiyunconfig CRYPTO_SHA256
983*4882a593Smuzhiyun	tristate "SHA224 and SHA256 digest algorithm"
984*4882a593Smuzhiyun	select CRYPTO_HASH
985*4882a593Smuzhiyun	select CRYPTO_LIB_SHA256
986*4882a593Smuzhiyun	help
987*4882a593Smuzhiyun	  SHA256 secure hash standard (DFIPS 180-2).
988*4882a593Smuzhiyun
989*4882a593Smuzhiyun	  This version of SHA implements a 256 bit hash with 128 bits of
990*4882a593Smuzhiyun	  security against collision attacks.
991*4882a593Smuzhiyun
992*4882a593Smuzhiyun	  This code also includes SHA-224, a 224 bit hash with 112 bits
993*4882a593Smuzhiyun	  of security against collision attacks.
994*4882a593Smuzhiyun
995*4882a593Smuzhiyunconfig CRYPTO_SHA256_PPC_SPE
996*4882a593Smuzhiyun	tristate "SHA224 and SHA256 digest algorithm (PPC SPE)"
997*4882a593Smuzhiyun	depends on PPC && SPE
998*4882a593Smuzhiyun	select CRYPTO_SHA256
999*4882a593Smuzhiyun	select CRYPTO_HASH
1000*4882a593Smuzhiyun	help
1001*4882a593Smuzhiyun	  SHA224 and SHA256 secure hash standard (DFIPS 180-2)
1002*4882a593Smuzhiyun	  implemented using powerpc SPE SIMD instruction set.
1003*4882a593Smuzhiyun
1004*4882a593Smuzhiyunconfig CRYPTO_SHA256_OCTEON
1005*4882a593Smuzhiyun	tristate "SHA224 and SHA256 digest algorithm (OCTEON)"
1006*4882a593Smuzhiyun	depends on CPU_CAVIUM_OCTEON
1007*4882a593Smuzhiyun	select CRYPTO_SHA256
1008*4882a593Smuzhiyun	select CRYPTO_HASH
1009*4882a593Smuzhiyun	help
1010*4882a593Smuzhiyun	  SHA-256 secure hash standard (DFIPS 180-2) implemented
1011*4882a593Smuzhiyun	  using OCTEON crypto instructions, when available.
1012*4882a593Smuzhiyun
1013*4882a593Smuzhiyunconfig CRYPTO_SHA256_SPARC64
1014*4882a593Smuzhiyun	tristate "SHA224 and SHA256 digest algorithm (SPARC64)"
1015*4882a593Smuzhiyun	depends on SPARC64
1016*4882a593Smuzhiyun	select CRYPTO_SHA256
1017*4882a593Smuzhiyun	select CRYPTO_HASH
1018*4882a593Smuzhiyun	help
1019*4882a593Smuzhiyun	  SHA-256 secure hash standard (DFIPS 180-2) implemented
1020*4882a593Smuzhiyun	  using sparc64 crypto instructions, when available.
1021*4882a593Smuzhiyun
1022*4882a593Smuzhiyunconfig CRYPTO_SHA512
1023*4882a593Smuzhiyun	tristate "SHA384 and SHA512 digest algorithms"
1024*4882a593Smuzhiyun	select CRYPTO_HASH
1025*4882a593Smuzhiyun	help
1026*4882a593Smuzhiyun	  SHA512 secure hash standard (DFIPS 180-2).
1027*4882a593Smuzhiyun
1028*4882a593Smuzhiyun	  This version of SHA implements a 512 bit hash with 256 bits of
1029*4882a593Smuzhiyun	  security against collision attacks.
1030*4882a593Smuzhiyun
1031*4882a593Smuzhiyun	  This code also includes SHA-384, a 384 bit hash with 192 bits
1032*4882a593Smuzhiyun	  of security against collision attacks.
1033*4882a593Smuzhiyun
1034*4882a593Smuzhiyunconfig CRYPTO_SHA512_OCTEON
1035*4882a593Smuzhiyun	tristate "SHA384 and SHA512 digest algorithms (OCTEON)"
1036*4882a593Smuzhiyun	depends on CPU_CAVIUM_OCTEON
1037*4882a593Smuzhiyun	select CRYPTO_SHA512
1038*4882a593Smuzhiyun	select CRYPTO_HASH
1039*4882a593Smuzhiyun	help
1040*4882a593Smuzhiyun	  SHA-512 secure hash standard (DFIPS 180-2) implemented
1041*4882a593Smuzhiyun	  using OCTEON crypto instructions, when available.
1042*4882a593Smuzhiyun
1043*4882a593Smuzhiyunconfig CRYPTO_SHA512_SPARC64
1044*4882a593Smuzhiyun	tristate "SHA384 and SHA512 digest algorithm (SPARC64)"
1045*4882a593Smuzhiyun	depends on SPARC64
1046*4882a593Smuzhiyun	select CRYPTO_SHA512
1047*4882a593Smuzhiyun	select CRYPTO_HASH
1048*4882a593Smuzhiyun	help
1049*4882a593Smuzhiyun	  SHA-512 secure hash standard (DFIPS 180-2) implemented
1050*4882a593Smuzhiyun	  using sparc64 crypto instructions, when available.
1051*4882a593Smuzhiyun
1052*4882a593Smuzhiyunconfig CRYPTO_SHA3
1053*4882a593Smuzhiyun	tristate "SHA3 digest algorithm"
1054*4882a593Smuzhiyun	select CRYPTO_HASH
1055*4882a593Smuzhiyun	help
1056*4882a593Smuzhiyun	  SHA-3 secure hash standard (DFIPS 202). It's based on
1057*4882a593Smuzhiyun	  cryptographic sponge function family called Keccak.
1058*4882a593Smuzhiyun
1059*4882a593Smuzhiyun	  References:
1060*4882a593Smuzhiyun	  http://keccak.noekeon.org/
1061*4882a593Smuzhiyun
1062*4882a593Smuzhiyunconfig CRYPTO_SM3
1063*4882a593Smuzhiyun	tristate "SM3 digest algorithm"
1064*4882a593Smuzhiyun	select CRYPTO_HASH
1065*4882a593Smuzhiyun	help
1066*4882a593Smuzhiyun	  SM3 secure hash function as defined by OSCCA GM/T 0004-2012 SM3).
1067*4882a593Smuzhiyun	  It is part of the Chinese Commercial Cryptography suite.
1068*4882a593Smuzhiyun
1069*4882a593Smuzhiyun	  References:
1070*4882a593Smuzhiyun	  http://www.oscca.gov.cn/UpFile/20101222141857786.pdf
1071*4882a593Smuzhiyun	  https://datatracker.ietf.org/doc/html/draft-shen-sm3-hash
1072*4882a593Smuzhiyun
1073*4882a593Smuzhiyunconfig CRYPTO_STREEBOG
1074*4882a593Smuzhiyun	tristate "Streebog Hash Function"
1075*4882a593Smuzhiyun	select CRYPTO_HASH
1076*4882a593Smuzhiyun	help
1077*4882a593Smuzhiyun	  Streebog Hash Function (GOST R 34.11-2012, RFC 6986) is one of the Russian
1078*4882a593Smuzhiyun	  cryptographic standard algorithms (called GOST algorithms).
1079*4882a593Smuzhiyun	  This setting enables two hash algorithms with 256 and 512 bits output.
1080*4882a593Smuzhiyun
1081*4882a593Smuzhiyun	  References:
1082*4882a593Smuzhiyun	  https://tc26.ru/upload/iblock/fed/feddbb4d26b685903faa2ba11aea43f6.pdf
1083*4882a593Smuzhiyun	  https://tools.ietf.org/html/rfc6986
1084*4882a593Smuzhiyun
1085*4882a593Smuzhiyunconfig CRYPTO_TGR192
1086*4882a593Smuzhiyun	tristate "Tiger digest algorithms"
1087*4882a593Smuzhiyun	select CRYPTO_HASH
1088*4882a593Smuzhiyun	help
1089*4882a593Smuzhiyun	  Tiger hash algorithm 192, 160 and 128-bit hashes
1090*4882a593Smuzhiyun
1091*4882a593Smuzhiyun	  Tiger is a hash function optimized for 64-bit processors while
1092*4882a593Smuzhiyun	  still having decent performance on 32-bit processors.
1093*4882a593Smuzhiyun	  Tiger was developed by Ross Anderson and Eli Biham.
1094*4882a593Smuzhiyun
1095*4882a593Smuzhiyun	  See also:
1096*4882a593Smuzhiyun	  <https://www.cs.technion.ac.il/~biham/Reports/Tiger/>.
1097*4882a593Smuzhiyun
1098*4882a593Smuzhiyunconfig CRYPTO_WP512
1099*4882a593Smuzhiyun	tristate "Whirlpool digest algorithms"
1100*4882a593Smuzhiyun	select CRYPTO_HASH
1101*4882a593Smuzhiyun	help
1102*4882a593Smuzhiyun	  Whirlpool hash algorithm 512, 384 and 256-bit hashes
1103*4882a593Smuzhiyun
1104*4882a593Smuzhiyun	  Whirlpool-512 is part of the NESSIE cryptographic primitives.
1105*4882a593Smuzhiyun	  Whirlpool will be part of the ISO/IEC 10118-3:2003(E) standard
1106*4882a593Smuzhiyun
1107*4882a593Smuzhiyun	  See also:
1108*4882a593Smuzhiyun	  <http://www.larc.usp.br/~pbarreto/WhirlpoolPage.html>
1109*4882a593Smuzhiyun
1110*4882a593Smuzhiyunconfig CRYPTO_GHASH_CLMUL_NI_INTEL
1111*4882a593Smuzhiyun	tristate "GHASH hash function (CLMUL-NI accelerated)"
1112*4882a593Smuzhiyun	depends on X86 && 64BIT
1113*4882a593Smuzhiyun	select CRYPTO_CRYPTD
1114*4882a593Smuzhiyun	help
1115*4882a593Smuzhiyun	  This is the x86_64 CLMUL-NI accelerated implementation of
1116*4882a593Smuzhiyun	  GHASH, the hash function used in GCM (Galois/Counter mode).
1117*4882a593Smuzhiyun
1118*4882a593Smuzhiyuncomment "Ciphers"
1119*4882a593Smuzhiyun
1120*4882a593Smuzhiyunconfig CRYPTO_AES
1121*4882a593Smuzhiyun	tristate "AES cipher algorithms"
1122*4882a593Smuzhiyun	select CRYPTO_ALGAPI
1123*4882a593Smuzhiyun	select CRYPTO_LIB_AES
1124*4882a593Smuzhiyun	help
1125*4882a593Smuzhiyun	  AES cipher algorithms (FIPS-197). AES uses the Rijndael
1126*4882a593Smuzhiyun	  algorithm.
1127*4882a593Smuzhiyun
1128*4882a593Smuzhiyun	  Rijndael appears to be consistently a very good performer in
1129*4882a593Smuzhiyun	  both hardware and software across a wide range of computing
1130*4882a593Smuzhiyun	  environments regardless of its use in feedback or non-feedback
1131*4882a593Smuzhiyun	  modes. Its key setup time is excellent, and its key agility is
1132*4882a593Smuzhiyun	  good. Rijndael's very low memory requirements make it very well
1133*4882a593Smuzhiyun	  suited for restricted-space environments, in which it also
1134*4882a593Smuzhiyun	  demonstrates excellent performance. Rijndael's operations are
1135*4882a593Smuzhiyun	  among the easiest to defend against power and timing attacks.
1136*4882a593Smuzhiyun
1137*4882a593Smuzhiyun	  The AES specifies three key sizes: 128, 192 and 256 bits
1138*4882a593Smuzhiyun
1139*4882a593Smuzhiyun	  See <http://csrc.nist.gov/CryptoToolkit/aes/> for more information.
1140*4882a593Smuzhiyun
1141*4882a593Smuzhiyunconfig CRYPTO_AES_TI
1142*4882a593Smuzhiyun	tristate "Fixed time AES cipher"
1143*4882a593Smuzhiyun	select CRYPTO_ALGAPI
1144*4882a593Smuzhiyun	select CRYPTO_LIB_AES
1145*4882a593Smuzhiyun	help
1146*4882a593Smuzhiyun	  This is a generic implementation of AES that attempts to eliminate
1147*4882a593Smuzhiyun	  data dependent latencies as much as possible without affecting
1148*4882a593Smuzhiyun	  performance too much. It is intended for use by the generic CCM
1149*4882a593Smuzhiyun	  and GCM drivers, and other CTR or CMAC/XCBC based modes that rely
1150*4882a593Smuzhiyun	  solely on encryption (although decryption is supported as well, but
1151*4882a593Smuzhiyun	  with a more dramatic performance hit)
1152*4882a593Smuzhiyun
1153*4882a593Smuzhiyun	  Instead of using 16 lookup tables of 1 KB each, (8 for encryption and
1154*4882a593Smuzhiyun	  8 for decryption), this implementation only uses just two S-boxes of
1155*4882a593Smuzhiyun	  256 bytes each, and attempts to eliminate data dependent latencies by
1156*4882a593Smuzhiyun	  prefetching the entire table into the cache at the start of each
1157*4882a593Smuzhiyun	  block. Interrupts are also disabled to avoid races where cachelines
1158*4882a593Smuzhiyun	  are evicted when the CPU is interrupted to do something else.
1159*4882a593Smuzhiyun
1160*4882a593Smuzhiyunconfig CRYPTO_AES_NI_INTEL
1161*4882a593Smuzhiyun	tristate "AES cipher algorithms (AES-NI)"
1162*4882a593Smuzhiyun	depends on X86
1163*4882a593Smuzhiyun	select CRYPTO_AEAD
1164*4882a593Smuzhiyun	select CRYPTO_LIB_AES
1165*4882a593Smuzhiyun	select CRYPTO_ALGAPI
1166*4882a593Smuzhiyun	select CRYPTO_SKCIPHER
1167*4882a593Smuzhiyun	select CRYPTO_GLUE_HELPER_X86 if 64BIT
1168*4882a593Smuzhiyun	select CRYPTO_SIMD
1169*4882a593Smuzhiyun	help
1170*4882a593Smuzhiyun	  Use Intel AES-NI instructions for AES algorithm.
1171*4882a593Smuzhiyun
1172*4882a593Smuzhiyun	  AES cipher algorithms (FIPS-197). AES uses the Rijndael
1173*4882a593Smuzhiyun	  algorithm.
1174*4882a593Smuzhiyun
1175*4882a593Smuzhiyun	  Rijndael appears to be consistently a very good performer in
1176*4882a593Smuzhiyun	  both hardware and software across a wide range of computing
1177*4882a593Smuzhiyun	  environments regardless of its use in feedback or non-feedback
1178*4882a593Smuzhiyun	  modes. Its key setup time is excellent, and its key agility is
1179*4882a593Smuzhiyun	  good. Rijndael's very low memory requirements make it very well
1180*4882a593Smuzhiyun	  suited for restricted-space environments, in which it also
1181*4882a593Smuzhiyun	  demonstrates excellent performance. Rijndael's operations are
1182*4882a593Smuzhiyun	  among the easiest to defend against power and timing attacks.
1183*4882a593Smuzhiyun
1184*4882a593Smuzhiyun	  The AES specifies three key sizes: 128, 192 and 256 bits
1185*4882a593Smuzhiyun
1186*4882a593Smuzhiyun	  See <http://csrc.nist.gov/encryption/aes/> for more information.
1187*4882a593Smuzhiyun
1188*4882a593Smuzhiyun	  In addition to AES cipher algorithm support, the acceleration
1189*4882a593Smuzhiyun	  for some popular block cipher mode is supported too, including
1190*4882a593Smuzhiyun	  ECB, CBC, LRW, XTS. The 64 bit version has additional
1191*4882a593Smuzhiyun	  acceleration for CTR.
1192*4882a593Smuzhiyun
1193*4882a593Smuzhiyunconfig CRYPTO_AES_SPARC64
1194*4882a593Smuzhiyun	tristate "AES cipher algorithms (SPARC64)"
1195*4882a593Smuzhiyun	depends on SPARC64
1196*4882a593Smuzhiyun	select CRYPTO_SKCIPHER
1197*4882a593Smuzhiyun	help
1198*4882a593Smuzhiyun	  Use SPARC64 crypto opcodes for AES algorithm.
1199*4882a593Smuzhiyun
1200*4882a593Smuzhiyun	  AES cipher algorithms (FIPS-197). AES uses the Rijndael
1201*4882a593Smuzhiyun	  algorithm.
1202*4882a593Smuzhiyun
1203*4882a593Smuzhiyun	  Rijndael appears to be consistently a very good performer in
1204*4882a593Smuzhiyun	  both hardware and software across a wide range of computing
1205*4882a593Smuzhiyun	  environments regardless of its use in feedback or non-feedback
1206*4882a593Smuzhiyun	  modes. Its key setup time is excellent, and its key agility is
1207*4882a593Smuzhiyun	  good. Rijndael's very low memory requirements make it very well
1208*4882a593Smuzhiyun	  suited for restricted-space environments, in which it also
1209*4882a593Smuzhiyun	  demonstrates excellent performance. Rijndael's operations are
1210*4882a593Smuzhiyun	  among the easiest to defend against power and timing attacks.
1211*4882a593Smuzhiyun
1212*4882a593Smuzhiyun	  The AES specifies three key sizes: 128, 192 and 256 bits
1213*4882a593Smuzhiyun
1214*4882a593Smuzhiyun	  See <http://csrc.nist.gov/encryption/aes/> for more information.
1215*4882a593Smuzhiyun
1216*4882a593Smuzhiyun	  In addition to AES cipher algorithm support, the acceleration
1217*4882a593Smuzhiyun	  for some popular block cipher mode is supported too, including
1218*4882a593Smuzhiyun	  ECB and CBC.
1219*4882a593Smuzhiyun
1220*4882a593Smuzhiyunconfig CRYPTO_AES_PPC_SPE
1221*4882a593Smuzhiyun	tristate "AES cipher algorithms (PPC SPE)"
1222*4882a593Smuzhiyun	depends on PPC && SPE
1223*4882a593Smuzhiyun	select CRYPTO_SKCIPHER
1224*4882a593Smuzhiyun	help
1225*4882a593Smuzhiyun	  AES cipher algorithms (FIPS-197). Additionally the acceleration
1226*4882a593Smuzhiyun	  for popular block cipher modes ECB, CBC, CTR and XTS is supported.
1227*4882a593Smuzhiyun	  This module should only be used for low power (router) devices
1228*4882a593Smuzhiyun	  without hardware AES acceleration (e.g. caam crypto). It reduces the
1229*4882a593Smuzhiyun	  size of the AES tables from 16KB to 8KB + 256 bytes and mitigates
1230*4882a593Smuzhiyun	  timining attacks. Nevertheless it might be not as secure as other
1231*4882a593Smuzhiyun	  architecture specific assembler implementations that work on 1KB
1232*4882a593Smuzhiyun	  tables or 256 bytes S-boxes.
1233*4882a593Smuzhiyun
1234*4882a593Smuzhiyunconfig CRYPTO_ANUBIS
1235*4882a593Smuzhiyun	tristate "Anubis cipher algorithm"
1236*4882a593Smuzhiyun	depends on CRYPTO_USER_API_ENABLE_OBSOLETE
1237*4882a593Smuzhiyun	select CRYPTO_ALGAPI
1238*4882a593Smuzhiyun	help
1239*4882a593Smuzhiyun	  Anubis cipher algorithm.
1240*4882a593Smuzhiyun
1241*4882a593Smuzhiyun	  Anubis is a variable key length cipher which can use keys from
1242*4882a593Smuzhiyun	  128 bits to 320 bits in length.  It was evaluated as a entrant
1243*4882a593Smuzhiyun	  in the NESSIE competition.
1244*4882a593Smuzhiyun
1245*4882a593Smuzhiyun	  See also:
1246*4882a593Smuzhiyun	  <https://www.cosic.esat.kuleuven.be/nessie/reports/>
1247*4882a593Smuzhiyun	  <http://www.larc.usp.br/~pbarreto/AnubisPage.html>
1248*4882a593Smuzhiyun
1249*4882a593Smuzhiyunconfig CRYPTO_ARC4
1250*4882a593Smuzhiyun	tristate "ARC4 cipher algorithm"
1251*4882a593Smuzhiyun	depends on CRYPTO_USER_API_ENABLE_OBSOLETE
1252*4882a593Smuzhiyun	select CRYPTO_SKCIPHER
1253*4882a593Smuzhiyun	select CRYPTO_LIB_ARC4
1254*4882a593Smuzhiyun	help
1255*4882a593Smuzhiyun	  ARC4 cipher algorithm.
1256*4882a593Smuzhiyun
1257*4882a593Smuzhiyun	  ARC4 is a stream cipher using keys ranging from 8 bits to 2048
1258*4882a593Smuzhiyun	  bits in length.  This algorithm is required for driver-based
1259*4882a593Smuzhiyun	  WEP, but it should not be for other purposes because of the
1260*4882a593Smuzhiyun	  weakness of the algorithm.
1261*4882a593Smuzhiyun
1262*4882a593Smuzhiyunconfig CRYPTO_BLOWFISH
1263*4882a593Smuzhiyun	tristate "Blowfish cipher algorithm"
1264*4882a593Smuzhiyun	select CRYPTO_ALGAPI
1265*4882a593Smuzhiyun	select CRYPTO_BLOWFISH_COMMON
1266*4882a593Smuzhiyun	help
1267*4882a593Smuzhiyun	  Blowfish cipher algorithm, by Bruce Schneier.
1268*4882a593Smuzhiyun
1269*4882a593Smuzhiyun	  This is a variable key length cipher which can use keys from 32
1270*4882a593Smuzhiyun	  bits to 448 bits in length.  It's fast, simple and specifically
1271*4882a593Smuzhiyun	  designed for use on "large microprocessors".
1272*4882a593Smuzhiyun
1273*4882a593Smuzhiyun	  See also:
1274*4882a593Smuzhiyun	  <https://www.schneier.com/blowfish.html>
1275*4882a593Smuzhiyun
1276*4882a593Smuzhiyunconfig CRYPTO_BLOWFISH_COMMON
1277*4882a593Smuzhiyun	tristate
1278*4882a593Smuzhiyun	help
1279*4882a593Smuzhiyun	  Common parts of the Blowfish cipher algorithm shared by the
1280*4882a593Smuzhiyun	  generic c and the assembler implementations.
1281*4882a593Smuzhiyun
1282*4882a593Smuzhiyun	  See also:
1283*4882a593Smuzhiyun	  <https://www.schneier.com/blowfish.html>
1284*4882a593Smuzhiyun
1285*4882a593Smuzhiyunconfig CRYPTO_BLOWFISH_X86_64
1286*4882a593Smuzhiyun	tristate "Blowfish cipher algorithm (x86_64)"
1287*4882a593Smuzhiyun	depends on X86 && 64BIT
1288*4882a593Smuzhiyun	select CRYPTO_SKCIPHER
1289*4882a593Smuzhiyun	select CRYPTO_BLOWFISH_COMMON
1290*4882a593Smuzhiyun	help
1291*4882a593Smuzhiyun	  Blowfish cipher algorithm (x86_64), by Bruce Schneier.
1292*4882a593Smuzhiyun
1293*4882a593Smuzhiyun	  This is a variable key length cipher which can use keys from 32
1294*4882a593Smuzhiyun	  bits to 448 bits in length.  It's fast, simple and specifically
1295*4882a593Smuzhiyun	  designed for use on "large microprocessors".
1296*4882a593Smuzhiyun
1297*4882a593Smuzhiyun	  See also:
1298*4882a593Smuzhiyun	  <https://www.schneier.com/blowfish.html>
1299*4882a593Smuzhiyun
1300*4882a593Smuzhiyunconfig CRYPTO_CAMELLIA
1301*4882a593Smuzhiyun	tristate "Camellia cipher algorithms"
1302*4882a593Smuzhiyun	depends on CRYPTO
1303*4882a593Smuzhiyun	select CRYPTO_ALGAPI
1304*4882a593Smuzhiyun	help
1305*4882a593Smuzhiyun	  Camellia cipher algorithms module.
1306*4882a593Smuzhiyun
1307*4882a593Smuzhiyun	  Camellia is a symmetric key block cipher developed jointly
1308*4882a593Smuzhiyun	  at NTT and Mitsubishi Electric Corporation.
1309*4882a593Smuzhiyun
1310*4882a593Smuzhiyun	  The Camellia specifies three key sizes: 128, 192 and 256 bits.
1311*4882a593Smuzhiyun
1312*4882a593Smuzhiyun	  See also:
1313*4882a593Smuzhiyun	  <https://info.isl.ntt.co.jp/crypt/eng/camellia/index_s.html>
1314*4882a593Smuzhiyun
1315*4882a593Smuzhiyunconfig CRYPTO_CAMELLIA_X86_64
1316*4882a593Smuzhiyun	tristate "Camellia cipher algorithm (x86_64)"
1317*4882a593Smuzhiyun	depends on X86 && 64BIT
1318*4882a593Smuzhiyun	depends on CRYPTO
1319*4882a593Smuzhiyun	select CRYPTO_SKCIPHER
1320*4882a593Smuzhiyun	select CRYPTO_GLUE_HELPER_X86
1321*4882a593Smuzhiyun	help
1322*4882a593Smuzhiyun	  Camellia cipher algorithm module (x86_64).
1323*4882a593Smuzhiyun
1324*4882a593Smuzhiyun	  Camellia is a symmetric key block cipher developed jointly
1325*4882a593Smuzhiyun	  at NTT and Mitsubishi Electric Corporation.
1326*4882a593Smuzhiyun
1327*4882a593Smuzhiyun	  The Camellia specifies three key sizes: 128, 192 and 256 bits.
1328*4882a593Smuzhiyun
1329*4882a593Smuzhiyun	  See also:
1330*4882a593Smuzhiyun	  <https://info.isl.ntt.co.jp/crypt/eng/camellia/index_s.html>
1331*4882a593Smuzhiyun
1332*4882a593Smuzhiyunconfig CRYPTO_CAMELLIA_AESNI_AVX_X86_64
1333*4882a593Smuzhiyun	tristate "Camellia cipher algorithm (x86_64/AES-NI/AVX)"
1334*4882a593Smuzhiyun	depends on X86 && 64BIT
1335*4882a593Smuzhiyun	depends on CRYPTO
1336*4882a593Smuzhiyun	select CRYPTO_SKCIPHER
1337*4882a593Smuzhiyun	select CRYPTO_CAMELLIA_X86_64
1338*4882a593Smuzhiyun	select CRYPTO_GLUE_HELPER_X86
1339*4882a593Smuzhiyun	select CRYPTO_SIMD
1340*4882a593Smuzhiyun	select CRYPTO_XTS
1341*4882a593Smuzhiyun	help
1342*4882a593Smuzhiyun	  Camellia cipher algorithm module (x86_64/AES-NI/AVX).
1343*4882a593Smuzhiyun
1344*4882a593Smuzhiyun	  Camellia is a symmetric key block cipher developed jointly
1345*4882a593Smuzhiyun	  at NTT and Mitsubishi Electric Corporation.
1346*4882a593Smuzhiyun
1347*4882a593Smuzhiyun	  The Camellia specifies three key sizes: 128, 192 and 256 bits.
1348*4882a593Smuzhiyun
1349*4882a593Smuzhiyun	  See also:
1350*4882a593Smuzhiyun	  <https://info.isl.ntt.co.jp/crypt/eng/camellia/index_s.html>
1351*4882a593Smuzhiyun
1352*4882a593Smuzhiyunconfig CRYPTO_CAMELLIA_AESNI_AVX2_X86_64
1353*4882a593Smuzhiyun	tristate "Camellia cipher algorithm (x86_64/AES-NI/AVX2)"
1354*4882a593Smuzhiyun	depends on X86 && 64BIT
1355*4882a593Smuzhiyun	depends on CRYPTO
1356*4882a593Smuzhiyun	select CRYPTO_CAMELLIA_AESNI_AVX_X86_64
1357*4882a593Smuzhiyun	help
1358*4882a593Smuzhiyun	  Camellia cipher algorithm module (x86_64/AES-NI/AVX2).
1359*4882a593Smuzhiyun
1360*4882a593Smuzhiyun	  Camellia is a symmetric key block cipher developed jointly
1361*4882a593Smuzhiyun	  at NTT and Mitsubishi Electric Corporation.
1362*4882a593Smuzhiyun
1363*4882a593Smuzhiyun	  The Camellia specifies three key sizes: 128, 192 and 256 bits.
1364*4882a593Smuzhiyun
1365*4882a593Smuzhiyun	  See also:
1366*4882a593Smuzhiyun	  <https://info.isl.ntt.co.jp/crypt/eng/camellia/index_s.html>
1367*4882a593Smuzhiyun
1368*4882a593Smuzhiyunconfig CRYPTO_CAMELLIA_SPARC64
1369*4882a593Smuzhiyun	tristate "Camellia cipher algorithm (SPARC64)"
1370*4882a593Smuzhiyun	depends on SPARC64
1371*4882a593Smuzhiyun	depends on CRYPTO
1372*4882a593Smuzhiyun	select CRYPTO_ALGAPI
1373*4882a593Smuzhiyun	select CRYPTO_SKCIPHER
1374*4882a593Smuzhiyun	help
1375*4882a593Smuzhiyun	  Camellia cipher algorithm module (SPARC64).
1376*4882a593Smuzhiyun
1377*4882a593Smuzhiyun	  Camellia is a symmetric key block cipher developed jointly
1378*4882a593Smuzhiyun	  at NTT and Mitsubishi Electric Corporation.
1379*4882a593Smuzhiyun
1380*4882a593Smuzhiyun	  The Camellia specifies three key sizes: 128, 192 and 256 bits.
1381*4882a593Smuzhiyun
1382*4882a593Smuzhiyun	  See also:
1383*4882a593Smuzhiyun	  <https://info.isl.ntt.co.jp/crypt/eng/camellia/index_s.html>
1384*4882a593Smuzhiyun
1385*4882a593Smuzhiyunconfig CRYPTO_CAST_COMMON
1386*4882a593Smuzhiyun	tristate
1387*4882a593Smuzhiyun	help
1388*4882a593Smuzhiyun	  Common parts of the CAST cipher algorithms shared by the
1389*4882a593Smuzhiyun	  generic c and the assembler implementations.
1390*4882a593Smuzhiyun
1391*4882a593Smuzhiyunconfig CRYPTO_CAST5
1392*4882a593Smuzhiyun	tristate "CAST5 (CAST-128) cipher algorithm"
1393*4882a593Smuzhiyun	select CRYPTO_ALGAPI
1394*4882a593Smuzhiyun	select CRYPTO_CAST_COMMON
1395*4882a593Smuzhiyun	help
1396*4882a593Smuzhiyun	  The CAST5 encryption algorithm (synonymous with CAST-128) is
1397*4882a593Smuzhiyun	  described in RFC2144.
1398*4882a593Smuzhiyun
1399*4882a593Smuzhiyunconfig CRYPTO_CAST5_AVX_X86_64
1400*4882a593Smuzhiyun	tristate "CAST5 (CAST-128) cipher algorithm (x86_64/AVX)"
1401*4882a593Smuzhiyun	depends on X86 && 64BIT
1402*4882a593Smuzhiyun	select CRYPTO_SKCIPHER
1403*4882a593Smuzhiyun	select CRYPTO_CAST5
1404*4882a593Smuzhiyun	select CRYPTO_CAST_COMMON
1405*4882a593Smuzhiyun	select CRYPTO_SIMD
1406*4882a593Smuzhiyun	help
1407*4882a593Smuzhiyun	  The CAST5 encryption algorithm (synonymous with CAST-128) is
1408*4882a593Smuzhiyun	  described in RFC2144.
1409*4882a593Smuzhiyun
1410*4882a593Smuzhiyun	  This module provides the Cast5 cipher algorithm that processes
1411*4882a593Smuzhiyun	  sixteen blocks parallel using the AVX instruction set.
1412*4882a593Smuzhiyun
1413*4882a593Smuzhiyunconfig CRYPTO_CAST6
1414*4882a593Smuzhiyun	tristate "CAST6 (CAST-256) cipher algorithm"
1415*4882a593Smuzhiyun	select CRYPTO_ALGAPI
1416*4882a593Smuzhiyun	select CRYPTO_CAST_COMMON
1417*4882a593Smuzhiyun	help
1418*4882a593Smuzhiyun	  The CAST6 encryption algorithm (synonymous with CAST-256) is
1419*4882a593Smuzhiyun	  described in RFC2612.
1420*4882a593Smuzhiyun
1421*4882a593Smuzhiyunconfig CRYPTO_CAST6_AVX_X86_64
1422*4882a593Smuzhiyun	tristate "CAST6 (CAST-256) cipher algorithm (x86_64/AVX)"
1423*4882a593Smuzhiyun	depends on X86 && 64BIT
1424*4882a593Smuzhiyun	select CRYPTO_SKCIPHER
1425*4882a593Smuzhiyun	select CRYPTO_CAST6
1426*4882a593Smuzhiyun	select CRYPTO_CAST_COMMON
1427*4882a593Smuzhiyun	select CRYPTO_GLUE_HELPER_X86
1428*4882a593Smuzhiyun	select CRYPTO_SIMD
1429*4882a593Smuzhiyun	select CRYPTO_XTS
1430*4882a593Smuzhiyun	help
1431*4882a593Smuzhiyun	  The CAST6 encryption algorithm (synonymous with CAST-256) is
1432*4882a593Smuzhiyun	  described in RFC2612.
1433*4882a593Smuzhiyun
1434*4882a593Smuzhiyun	  This module provides the Cast6 cipher algorithm that processes
1435*4882a593Smuzhiyun	  eight blocks parallel using the AVX instruction set.
1436*4882a593Smuzhiyun
1437*4882a593Smuzhiyunconfig CRYPTO_DES
1438*4882a593Smuzhiyun	tristate "DES and Triple DES EDE cipher algorithms"
1439*4882a593Smuzhiyun	select CRYPTO_ALGAPI
1440*4882a593Smuzhiyun	select CRYPTO_LIB_DES
1441*4882a593Smuzhiyun	help
1442*4882a593Smuzhiyun	  DES cipher algorithm (FIPS 46-2), and Triple DES EDE (FIPS 46-3).
1443*4882a593Smuzhiyun
1444*4882a593Smuzhiyunconfig CRYPTO_DES_SPARC64
1445*4882a593Smuzhiyun	tristate "DES and Triple DES EDE cipher algorithms (SPARC64)"
1446*4882a593Smuzhiyun	depends on SPARC64
1447*4882a593Smuzhiyun	select CRYPTO_ALGAPI
1448*4882a593Smuzhiyun	select CRYPTO_LIB_DES
1449*4882a593Smuzhiyun	select CRYPTO_SKCIPHER
1450*4882a593Smuzhiyun	help
1451*4882a593Smuzhiyun	  DES cipher algorithm (FIPS 46-2), and Triple DES EDE (FIPS 46-3),
1452*4882a593Smuzhiyun	  optimized using SPARC64 crypto opcodes.
1453*4882a593Smuzhiyun
1454*4882a593Smuzhiyunconfig CRYPTO_DES3_EDE_X86_64
1455*4882a593Smuzhiyun	tristate "Triple DES EDE cipher algorithm (x86-64)"
1456*4882a593Smuzhiyun	depends on X86 && 64BIT
1457*4882a593Smuzhiyun	select CRYPTO_SKCIPHER
1458*4882a593Smuzhiyun	select CRYPTO_LIB_DES
1459*4882a593Smuzhiyun	help
1460*4882a593Smuzhiyun	  Triple DES EDE (FIPS 46-3) algorithm.
1461*4882a593Smuzhiyun
1462*4882a593Smuzhiyun	  This module provides implementation of the Triple DES EDE cipher
1463*4882a593Smuzhiyun	  algorithm that is optimized for x86-64 processors. Two versions of
1464*4882a593Smuzhiyun	  algorithm are provided; regular processing one input block and
1465*4882a593Smuzhiyun	  one that processes three blocks parallel.
1466*4882a593Smuzhiyun
1467*4882a593Smuzhiyunconfig CRYPTO_FCRYPT
1468*4882a593Smuzhiyun	tristate "FCrypt cipher algorithm"
1469*4882a593Smuzhiyun	select CRYPTO_ALGAPI
1470*4882a593Smuzhiyun	select CRYPTO_SKCIPHER
1471*4882a593Smuzhiyun	help
1472*4882a593Smuzhiyun	  FCrypt algorithm used by RxRPC.
1473*4882a593Smuzhiyun
1474*4882a593Smuzhiyunconfig CRYPTO_KHAZAD
1475*4882a593Smuzhiyun	tristate "Khazad cipher algorithm"
1476*4882a593Smuzhiyun	depends on CRYPTO_USER_API_ENABLE_OBSOLETE
1477*4882a593Smuzhiyun	select CRYPTO_ALGAPI
1478*4882a593Smuzhiyun	help
1479*4882a593Smuzhiyun	  Khazad cipher algorithm.
1480*4882a593Smuzhiyun
1481*4882a593Smuzhiyun	  Khazad was a finalist in the initial NESSIE competition.  It is
1482*4882a593Smuzhiyun	  an algorithm optimized for 64-bit processors with good performance
1483*4882a593Smuzhiyun	  on 32-bit processors.  Khazad uses an 128 bit key size.
1484*4882a593Smuzhiyun
1485*4882a593Smuzhiyun	  See also:
1486*4882a593Smuzhiyun	  <http://www.larc.usp.br/~pbarreto/KhazadPage.html>
1487*4882a593Smuzhiyun
1488*4882a593Smuzhiyunconfig CRYPTO_SALSA20
1489*4882a593Smuzhiyun	tristate "Salsa20 stream cipher algorithm"
1490*4882a593Smuzhiyun	select CRYPTO_SKCIPHER
1491*4882a593Smuzhiyun	help
1492*4882a593Smuzhiyun	  Salsa20 stream cipher algorithm.
1493*4882a593Smuzhiyun
1494*4882a593Smuzhiyun	  Salsa20 is a stream cipher submitted to eSTREAM, the ECRYPT
1495*4882a593Smuzhiyun	  Stream Cipher Project. See <https://www.ecrypt.eu.org/stream/>
1496*4882a593Smuzhiyun
1497*4882a593Smuzhiyun	  The Salsa20 stream cipher algorithm is designed by Daniel J.
1498*4882a593Smuzhiyun	  Bernstein <djb@cr.yp.to>. See <https://cr.yp.to/snuffle.html>
1499*4882a593Smuzhiyun
1500*4882a593Smuzhiyunconfig CRYPTO_CHACHA20
1501*4882a593Smuzhiyun	tristate "ChaCha stream cipher algorithms"
1502*4882a593Smuzhiyun	select CRYPTO_LIB_CHACHA_GENERIC
1503*4882a593Smuzhiyun	select CRYPTO_SKCIPHER
1504*4882a593Smuzhiyun	help
1505*4882a593Smuzhiyun	  The ChaCha20, XChaCha20, and XChaCha12 stream cipher algorithms.
1506*4882a593Smuzhiyun
1507*4882a593Smuzhiyun	  ChaCha20 is a 256-bit high-speed stream cipher designed by Daniel J.
1508*4882a593Smuzhiyun	  Bernstein and further specified in RFC7539 for use in IETF protocols.
1509*4882a593Smuzhiyun	  This is the portable C implementation of ChaCha20.  See also:
1510*4882a593Smuzhiyun	  <https://cr.yp.to/chacha/chacha-20080128.pdf>
1511*4882a593Smuzhiyun
1512*4882a593Smuzhiyun	  XChaCha20 is the application of the XSalsa20 construction to ChaCha20
1513*4882a593Smuzhiyun	  rather than to Salsa20.  XChaCha20 extends ChaCha20's nonce length
1514*4882a593Smuzhiyun	  from 64 bits (or 96 bits using the RFC7539 convention) to 192 bits,
1515*4882a593Smuzhiyun	  while provably retaining ChaCha20's security.  See also:
1516*4882a593Smuzhiyun	  <https://cr.yp.to/snuffle/xsalsa-20081128.pdf>
1517*4882a593Smuzhiyun
1518*4882a593Smuzhiyun	  XChaCha12 is XChaCha20 reduced to 12 rounds, with correspondingly
1519*4882a593Smuzhiyun	  reduced security margin but increased performance.  It can be needed
1520*4882a593Smuzhiyun	  in some performance-sensitive scenarios.
1521*4882a593Smuzhiyun
1522*4882a593Smuzhiyunconfig CRYPTO_CHACHA20_X86_64
1523*4882a593Smuzhiyun	tristate "ChaCha stream cipher algorithms (x86_64/SSSE3/AVX2/AVX-512VL)"
1524*4882a593Smuzhiyun	depends on X86 && 64BIT
1525*4882a593Smuzhiyun	select CRYPTO_SKCIPHER
1526*4882a593Smuzhiyun	select CRYPTO_LIB_CHACHA_GENERIC
1527*4882a593Smuzhiyun	select CRYPTO_ARCH_HAVE_LIB_CHACHA
1528*4882a593Smuzhiyun	help
1529*4882a593Smuzhiyun	  SSSE3, AVX2, and AVX-512VL optimized implementations of the ChaCha20,
1530*4882a593Smuzhiyun	  XChaCha20, and XChaCha12 stream ciphers.
1531*4882a593Smuzhiyun
1532*4882a593Smuzhiyunconfig CRYPTO_CHACHA_MIPS
1533*4882a593Smuzhiyun	tristate "ChaCha stream cipher algorithms (MIPS 32r2 optimized)"
1534*4882a593Smuzhiyun	depends on CPU_MIPS32_R2
1535*4882a593Smuzhiyun	select CRYPTO_SKCIPHER
1536*4882a593Smuzhiyun	select CRYPTO_ARCH_HAVE_LIB_CHACHA
1537*4882a593Smuzhiyun
1538*4882a593Smuzhiyunconfig CRYPTO_SEED
1539*4882a593Smuzhiyun	tristate "SEED cipher algorithm"
1540*4882a593Smuzhiyun	depends on CRYPTO_USER_API_ENABLE_OBSOLETE
1541*4882a593Smuzhiyun	select CRYPTO_ALGAPI
1542*4882a593Smuzhiyun	help
1543*4882a593Smuzhiyun	  SEED cipher algorithm (RFC4269).
1544*4882a593Smuzhiyun
1545*4882a593Smuzhiyun	  SEED is a 128-bit symmetric key block cipher that has been
1546*4882a593Smuzhiyun	  developed by KISA (Korea Information Security Agency) as a
1547*4882a593Smuzhiyun	  national standard encryption algorithm of the Republic of Korea.
1548*4882a593Smuzhiyun	  It is a 16 round block cipher with the key size of 128 bit.
1549*4882a593Smuzhiyun
1550*4882a593Smuzhiyun	  See also:
1551*4882a593Smuzhiyun	  <http://www.kisa.or.kr/kisa/seed/jsp/seed_eng.jsp>
1552*4882a593Smuzhiyun
1553*4882a593Smuzhiyunconfig CRYPTO_SERPENT
1554*4882a593Smuzhiyun	tristate "Serpent cipher algorithm"
1555*4882a593Smuzhiyun	select CRYPTO_ALGAPI
1556*4882a593Smuzhiyun	help
1557*4882a593Smuzhiyun	  Serpent cipher algorithm, by Anderson, Biham & Knudsen.
1558*4882a593Smuzhiyun
1559*4882a593Smuzhiyun	  Keys are allowed to be from 0 to 256 bits in length, in steps
1560*4882a593Smuzhiyun	  of 8 bits.  Also includes the 'Tnepres' algorithm, a reversed
1561*4882a593Smuzhiyun	  variant of Serpent for compatibility with old kerneli.org code.
1562*4882a593Smuzhiyun
1563*4882a593Smuzhiyun	  See also:
1564*4882a593Smuzhiyun	  <https://www.cl.cam.ac.uk/~rja14/serpent.html>
1565*4882a593Smuzhiyun
1566*4882a593Smuzhiyunconfig CRYPTO_SERPENT_SSE2_X86_64
1567*4882a593Smuzhiyun	tristate "Serpent cipher algorithm (x86_64/SSE2)"
1568*4882a593Smuzhiyun	depends on X86 && 64BIT
1569*4882a593Smuzhiyun	select CRYPTO_SKCIPHER
1570*4882a593Smuzhiyun	select CRYPTO_GLUE_HELPER_X86
1571*4882a593Smuzhiyun	select CRYPTO_SERPENT
1572*4882a593Smuzhiyun	select CRYPTO_SIMD
1573*4882a593Smuzhiyun	help
1574*4882a593Smuzhiyun	  Serpent cipher algorithm, by Anderson, Biham & Knudsen.
1575*4882a593Smuzhiyun
1576*4882a593Smuzhiyun	  Keys are allowed to be from 0 to 256 bits in length, in steps
1577*4882a593Smuzhiyun	  of 8 bits.
1578*4882a593Smuzhiyun
1579*4882a593Smuzhiyun	  This module provides Serpent cipher algorithm that processes eight
1580*4882a593Smuzhiyun	  blocks parallel using SSE2 instruction set.
1581*4882a593Smuzhiyun
1582*4882a593Smuzhiyun	  See also:
1583*4882a593Smuzhiyun	  <https://www.cl.cam.ac.uk/~rja14/serpent.html>
1584*4882a593Smuzhiyun
1585*4882a593Smuzhiyunconfig CRYPTO_SERPENT_SSE2_586
1586*4882a593Smuzhiyun	tristate "Serpent cipher algorithm (i586/SSE2)"
1587*4882a593Smuzhiyun	depends on X86 && !64BIT
1588*4882a593Smuzhiyun	select CRYPTO_SKCIPHER
1589*4882a593Smuzhiyun	select CRYPTO_GLUE_HELPER_X86
1590*4882a593Smuzhiyun	select CRYPTO_SERPENT
1591*4882a593Smuzhiyun	select CRYPTO_SIMD
1592*4882a593Smuzhiyun	help
1593*4882a593Smuzhiyun	  Serpent cipher algorithm, by Anderson, Biham & Knudsen.
1594*4882a593Smuzhiyun
1595*4882a593Smuzhiyun	  Keys are allowed to be from 0 to 256 bits in length, in steps
1596*4882a593Smuzhiyun	  of 8 bits.
1597*4882a593Smuzhiyun
1598*4882a593Smuzhiyun	  This module provides Serpent cipher algorithm that processes four
1599*4882a593Smuzhiyun	  blocks parallel using SSE2 instruction set.
1600*4882a593Smuzhiyun
1601*4882a593Smuzhiyun	  See also:
1602*4882a593Smuzhiyun	  <https://www.cl.cam.ac.uk/~rja14/serpent.html>
1603*4882a593Smuzhiyun
1604*4882a593Smuzhiyunconfig CRYPTO_SERPENT_AVX_X86_64
1605*4882a593Smuzhiyun	tristate "Serpent cipher algorithm (x86_64/AVX)"
1606*4882a593Smuzhiyun	depends on X86 && 64BIT
1607*4882a593Smuzhiyun	select CRYPTO_SKCIPHER
1608*4882a593Smuzhiyun	select CRYPTO_GLUE_HELPER_X86
1609*4882a593Smuzhiyun	select CRYPTO_SERPENT
1610*4882a593Smuzhiyun	select CRYPTO_SIMD
1611*4882a593Smuzhiyun	select CRYPTO_XTS
1612*4882a593Smuzhiyun	help
1613*4882a593Smuzhiyun	  Serpent cipher algorithm, by Anderson, Biham & Knudsen.
1614*4882a593Smuzhiyun
1615*4882a593Smuzhiyun	  Keys are allowed to be from 0 to 256 bits in length, in steps
1616*4882a593Smuzhiyun	  of 8 bits.
1617*4882a593Smuzhiyun
1618*4882a593Smuzhiyun	  This module provides the Serpent cipher algorithm that processes
1619*4882a593Smuzhiyun	  eight blocks parallel using the AVX instruction set.
1620*4882a593Smuzhiyun
1621*4882a593Smuzhiyun	  See also:
1622*4882a593Smuzhiyun	  <https://www.cl.cam.ac.uk/~rja14/serpent.html>
1623*4882a593Smuzhiyun
1624*4882a593Smuzhiyunconfig CRYPTO_SERPENT_AVX2_X86_64
1625*4882a593Smuzhiyun	tristate "Serpent cipher algorithm (x86_64/AVX2)"
1626*4882a593Smuzhiyun	depends on X86 && 64BIT
1627*4882a593Smuzhiyun	select CRYPTO_SERPENT_AVX_X86_64
1628*4882a593Smuzhiyun	help
1629*4882a593Smuzhiyun	  Serpent cipher algorithm, by Anderson, Biham & Knudsen.
1630*4882a593Smuzhiyun
1631*4882a593Smuzhiyun	  Keys are allowed to be from 0 to 256 bits in length, in steps
1632*4882a593Smuzhiyun	  of 8 bits.
1633*4882a593Smuzhiyun
1634*4882a593Smuzhiyun	  This module provides Serpent cipher algorithm that processes 16
1635*4882a593Smuzhiyun	  blocks parallel using AVX2 instruction set.
1636*4882a593Smuzhiyun
1637*4882a593Smuzhiyun	  See also:
1638*4882a593Smuzhiyun	  <https://www.cl.cam.ac.uk/~rja14/serpent.html>
1639*4882a593Smuzhiyun
1640*4882a593Smuzhiyunconfig CRYPTO_SM4
1641*4882a593Smuzhiyun	tristate "SM4 cipher algorithm"
1642*4882a593Smuzhiyun	select CRYPTO_ALGAPI
1643*4882a593Smuzhiyun	help
1644*4882a593Smuzhiyun	  SM4 cipher algorithms (OSCCA GB/T 32907-2016).
1645*4882a593Smuzhiyun
1646*4882a593Smuzhiyun	  SM4 (GBT.32907-2016) is a cryptographic standard issued by the
1647*4882a593Smuzhiyun	  Organization of State Commercial Administration of China (OSCCA)
1648*4882a593Smuzhiyun	  as an authorized cryptographic algorithms for the use within China.
1649*4882a593Smuzhiyun
1650*4882a593Smuzhiyun	  SMS4 was originally created for use in protecting wireless
1651*4882a593Smuzhiyun	  networks, and is mandated in the Chinese National Standard for
1652*4882a593Smuzhiyun	  Wireless LAN WAPI (Wired Authentication and Privacy Infrastructure)
1653*4882a593Smuzhiyun	  (GB.15629.11-2003).
1654*4882a593Smuzhiyun
1655*4882a593Smuzhiyun	  The latest SM4 standard (GBT.32907-2016) was proposed by OSCCA and
1656*4882a593Smuzhiyun	  standardized through TC 260 of the Standardization Administration
1657*4882a593Smuzhiyun	  of the People's Republic of China (SAC).
1658*4882a593Smuzhiyun
1659*4882a593Smuzhiyun	  The input, output, and key of SMS4 are each 128 bits.
1660*4882a593Smuzhiyun
1661*4882a593Smuzhiyun	  See also: <https://eprint.iacr.org/2008/329.pdf>
1662*4882a593Smuzhiyun
1663*4882a593Smuzhiyun	  If unsure, say N.
1664*4882a593Smuzhiyun
1665*4882a593Smuzhiyunconfig CRYPTO_TEA
1666*4882a593Smuzhiyun	tristate "TEA, XTEA and XETA cipher algorithms"
1667*4882a593Smuzhiyun	depends on CRYPTO_USER_API_ENABLE_OBSOLETE
1668*4882a593Smuzhiyun	select CRYPTO_ALGAPI
1669*4882a593Smuzhiyun	help
1670*4882a593Smuzhiyun	  TEA cipher algorithm.
1671*4882a593Smuzhiyun
1672*4882a593Smuzhiyun	  Tiny Encryption Algorithm is a simple cipher that uses
1673*4882a593Smuzhiyun	  many rounds for security.  It is very fast and uses
1674*4882a593Smuzhiyun	  little memory.
1675*4882a593Smuzhiyun
1676*4882a593Smuzhiyun	  Xtendend Tiny Encryption Algorithm is a modification to
1677*4882a593Smuzhiyun	  the TEA algorithm to address a potential key weakness
1678*4882a593Smuzhiyun	  in the TEA algorithm.
1679*4882a593Smuzhiyun
1680*4882a593Smuzhiyun	  Xtendend Encryption Tiny Algorithm is a mis-implementation
1681*4882a593Smuzhiyun	  of the XTEA algorithm for compatibility purposes.
1682*4882a593Smuzhiyun
1683*4882a593Smuzhiyunconfig CRYPTO_TWOFISH
1684*4882a593Smuzhiyun	tristate "Twofish cipher algorithm"
1685*4882a593Smuzhiyun	select CRYPTO_ALGAPI
1686*4882a593Smuzhiyun	select CRYPTO_TWOFISH_COMMON
1687*4882a593Smuzhiyun	help
1688*4882a593Smuzhiyun	  Twofish cipher algorithm.
1689*4882a593Smuzhiyun
1690*4882a593Smuzhiyun	  Twofish was submitted as an AES (Advanced Encryption Standard)
1691*4882a593Smuzhiyun	  candidate cipher by researchers at CounterPane Systems.  It is a
1692*4882a593Smuzhiyun	  16 round block cipher supporting key sizes of 128, 192, and 256
1693*4882a593Smuzhiyun	  bits.
1694*4882a593Smuzhiyun
1695*4882a593Smuzhiyun	  See also:
1696*4882a593Smuzhiyun	  <https://www.schneier.com/twofish.html>
1697*4882a593Smuzhiyun
1698*4882a593Smuzhiyunconfig CRYPTO_TWOFISH_COMMON
1699*4882a593Smuzhiyun	tristate
1700*4882a593Smuzhiyun	help
1701*4882a593Smuzhiyun	  Common parts of the Twofish cipher algorithm shared by the
1702*4882a593Smuzhiyun	  generic c and the assembler implementations.
1703*4882a593Smuzhiyun
1704*4882a593Smuzhiyunconfig CRYPTO_TWOFISH_586
1705*4882a593Smuzhiyun	tristate "Twofish cipher algorithms (i586)"
1706*4882a593Smuzhiyun	depends on (X86 || UML_X86) && !64BIT
1707*4882a593Smuzhiyun	select CRYPTO_ALGAPI
1708*4882a593Smuzhiyun	select CRYPTO_TWOFISH_COMMON
1709*4882a593Smuzhiyun	help
1710*4882a593Smuzhiyun	  Twofish cipher algorithm.
1711*4882a593Smuzhiyun
1712*4882a593Smuzhiyun	  Twofish was submitted as an AES (Advanced Encryption Standard)
1713*4882a593Smuzhiyun	  candidate cipher by researchers at CounterPane Systems.  It is a
1714*4882a593Smuzhiyun	  16 round block cipher supporting key sizes of 128, 192, and 256
1715*4882a593Smuzhiyun	  bits.
1716*4882a593Smuzhiyun
1717*4882a593Smuzhiyun	  See also:
1718*4882a593Smuzhiyun	  <https://www.schneier.com/twofish.html>
1719*4882a593Smuzhiyun
1720*4882a593Smuzhiyunconfig CRYPTO_TWOFISH_X86_64
1721*4882a593Smuzhiyun	tristate "Twofish cipher algorithm (x86_64)"
1722*4882a593Smuzhiyun	depends on (X86 || UML_X86) && 64BIT
1723*4882a593Smuzhiyun	select CRYPTO_ALGAPI
1724*4882a593Smuzhiyun	select CRYPTO_TWOFISH_COMMON
1725*4882a593Smuzhiyun	help
1726*4882a593Smuzhiyun	  Twofish cipher algorithm (x86_64).
1727*4882a593Smuzhiyun
1728*4882a593Smuzhiyun	  Twofish was submitted as an AES (Advanced Encryption Standard)
1729*4882a593Smuzhiyun	  candidate cipher by researchers at CounterPane Systems.  It is a
1730*4882a593Smuzhiyun	  16 round block cipher supporting key sizes of 128, 192, and 256
1731*4882a593Smuzhiyun	  bits.
1732*4882a593Smuzhiyun
1733*4882a593Smuzhiyun	  See also:
1734*4882a593Smuzhiyun	  <https://www.schneier.com/twofish.html>
1735*4882a593Smuzhiyun
1736*4882a593Smuzhiyunconfig CRYPTO_TWOFISH_X86_64_3WAY
1737*4882a593Smuzhiyun	tristate "Twofish cipher algorithm (x86_64, 3-way parallel)"
1738*4882a593Smuzhiyun	depends on X86 && 64BIT
1739*4882a593Smuzhiyun	select CRYPTO_SKCIPHER
1740*4882a593Smuzhiyun	select CRYPTO_TWOFISH_COMMON
1741*4882a593Smuzhiyun	select CRYPTO_TWOFISH_X86_64
1742*4882a593Smuzhiyun	select CRYPTO_GLUE_HELPER_X86
1743*4882a593Smuzhiyun	help
1744*4882a593Smuzhiyun	  Twofish cipher algorithm (x86_64, 3-way parallel).
1745*4882a593Smuzhiyun
1746*4882a593Smuzhiyun	  Twofish was submitted as an AES (Advanced Encryption Standard)
1747*4882a593Smuzhiyun	  candidate cipher by researchers at CounterPane Systems.  It is a
1748*4882a593Smuzhiyun	  16 round block cipher supporting key sizes of 128, 192, and 256
1749*4882a593Smuzhiyun	  bits.
1750*4882a593Smuzhiyun
1751*4882a593Smuzhiyun	  This module provides Twofish cipher algorithm that processes three
1752*4882a593Smuzhiyun	  blocks parallel, utilizing resources of out-of-order CPUs better.
1753*4882a593Smuzhiyun
1754*4882a593Smuzhiyun	  See also:
1755*4882a593Smuzhiyun	  <https://www.schneier.com/twofish.html>
1756*4882a593Smuzhiyun
1757*4882a593Smuzhiyunconfig CRYPTO_TWOFISH_AVX_X86_64
1758*4882a593Smuzhiyun	tristate "Twofish cipher algorithm (x86_64/AVX)"
1759*4882a593Smuzhiyun	depends on X86 && 64BIT
1760*4882a593Smuzhiyun	select CRYPTO_SKCIPHER
1761*4882a593Smuzhiyun	select CRYPTO_GLUE_HELPER_X86
1762*4882a593Smuzhiyun	select CRYPTO_SIMD
1763*4882a593Smuzhiyun	select CRYPTO_TWOFISH_COMMON
1764*4882a593Smuzhiyun	select CRYPTO_TWOFISH_X86_64
1765*4882a593Smuzhiyun	select CRYPTO_TWOFISH_X86_64_3WAY
1766*4882a593Smuzhiyun	help
1767*4882a593Smuzhiyun	  Twofish cipher algorithm (x86_64/AVX).
1768*4882a593Smuzhiyun
1769*4882a593Smuzhiyun	  Twofish was submitted as an AES (Advanced Encryption Standard)
1770*4882a593Smuzhiyun	  candidate cipher by researchers at CounterPane Systems.  It is a
1771*4882a593Smuzhiyun	  16 round block cipher supporting key sizes of 128, 192, and 256
1772*4882a593Smuzhiyun	  bits.
1773*4882a593Smuzhiyun
1774*4882a593Smuzhiyun	  This module provides the Twofish cipher algorithm that processes
1775*4882a593Smuzhiyun	  eight blocks parallel using the AVX Instruction Set.
1776*4882a593Smuzhiyun
1777*4882a593Smuzhiyun	  See also:
1778*4882a593Smuzhiyun	  <https://www.schneier.com/twofish.html>
1779*4882a593Smuzhiyun
1780*4882a593Smuzhiyuncomment "Compression"
1781*4882a593Smuzhiyun
1782*4882a593Smuzhiyunconfig CRYPTO_DEFLATE
1783*4882a593Smuzhiyun	tristate "Deflate compression algorithm"
1784*4882a593Smuzhiyun	select CRYPTO_ALGAPI
1785*4882a593Smuzhiyun	select CRYPTO_ACOMP2
1786*4882a593Smuzhiyun	select ZLIB_INFLATE
1787*4882a593Smuzhiyun	select ZLIB_DEFLATE
1788*4882a593Smuzhiyun	help
1789*4882a593Smuzhiyun	  This is the Deflate algorithm (RFC1951), specified for use in
1790*4882a593Smuzhiyun	  IPSec with the IPCOMP protocol (RFC3173, RFC2394).
1791*4882a593Smuzhiyun
1792*4882a593Smuzhiyun	  You will most probably want this if using IPSec.
1793*4882a593Smuzhiyun
1794*4882a593Smuzhiyunconfig CRYPTO_LZO
1795*4882a593Smuzhiyun	tristate "LZO compression algorithm"
1796*4882a593Smuzhiyun	select CRYPTO_ALGAPI
1797*4882a593Smuzhiyun	select CRYPTO_ACOMP2
1798*4882a593Smuzhiyun	select LZO_COMPRESS
1799*4882a593Smuzhiyun	select LZO_DECOMPRESS
1800*4882a593Smuzhiyun	help
1801*4882a593Smuzhiyun	  This is the LZO algorithm.
1802*4882a593Smuzhiyun
1803*4882a593Smuzhiyunconfig CRYPTO_842
1804*4882a593Smuzhiyun	tristate "842 compression algorithm"
1805*4882a593Smuzhiyun	select CRYPTO_ALGAPI
1806*4882a593Smuzhiyun	select CRYPTO_ACOMP2
1807*4882a593Smuzhiyun	select 842_COMPRESS
1808*4882a593Smuzhiyun	select 842_DECOMPRESS
1809*4882a593Smuzhiyun	help
1810*4882a593Smuzhiyun	  This is the 842 algorithm.
1811*4882a593Smuzhiyun
1812*4882a593Smuzhiyunconfig CRYPTO_LZ4
1813*4882a593Smuzhiyun	tristate "LZ4 compression algorithm"
1814*4882a593Smuzhiyun	select CRYPTO_ALGAPI
1815*4882a593Smuzhiyun	select CRYPTO_ACOMP2
1816*4882a593Smuzhiyun	select LZ4_COMPRESS
1817*4882a593Smuzhiyun	select LZ4_DECOMPRESS
1818*4882a593Smuzhiyun	help
1819*4882a593Smuzhiyun	  This is the LZ4 algorithm.
1820*4882a593Smuzhiyun
1821*4882a593Smuzhiyunconfig CRYPTO_LZ4HC
1822*4882a593Smuzhiyun	tristate "LZ4HC compression algorithm"
1823*4882a593Smuzhiyun	select CRYPTO_ALGAPI
1824*4882a593Smuzhiyun	select CRYPTO_ACOMP2
1825*4882a593Smuzhiyun	select LZ4HC_COMPRESS
1826*4882a593Smuzhiyun	select LZ4_DECOMPRESS
1827*4882a593Smuzhiyun	help
1828*4882a593Smuzhiyun	  This is the LZ4 high compression mode algorithm.
1829*4882a593Smuzhiyun
1830*4882a593Smuzhiyunconfig CRYPTO_ZSTD
1831*4882a593Smuzhiyun	tristate "Zstd compression algorithm"
1832*4882a593Smuzhiyun	select CRYPTO_ALGAPI
1833*4882a593Smuzhiyun	select CRYPTO_ACOMP2
1834*4882a593Smuzhiyun	select ZSTD_COMPRESS
1835*4882a593Smuzhiyun	select ZSTD_DECOMPRESS
1836*4882a593Smuzhiyun	help
1837*4882a593Smuzhiyun	  This is the zstd algorithm.
1838*4882a593Smuzhiyun
1839*4882a593Smuzhiyuncomment "Random Number Generation"
1840*4882a593Smuzhiyun
1841*4882a593Smuzhiyunconfig CRYPTO_ANSI_CPRNG
1842*4882a593Smuzhiyun	tristate "Pseudo Random Number Generation for Cryptographic modules"
1843*4882a593Smuzhiyun	select CRYPTO_AES
1844*4882a593Smuzhiyun	select CRYPTO_RNG
1845*4882a593Smuzhiyun	help
1846*4882a593Smuzhiyun	  This option enables the generic pseudo random number generator
1847*4882a593Smuzhiyun	  for cryptographic modules.  Uses the Algorithm specified in
1848*4882a593Smuzhiyun	  ANSI X9.31 A.2.4. Note that this option must be enabled if
1849*4882a593Smuzhiyun	  CRYPTO_FIPS is selected
1850*4882a593Smuzhiyun
1851*4882a593Smuzhiyunmenuconfig CRYPTO_DRBG_MENU
1852*4882a593Smuzhiyun	tristate "NIST SP800-90A DRBG"
1853*4882a593Smuzhiyun	help
1854*4882a593Smuzhiyun	  NIST SP800-90A compliant DRBG. In the following submenu, one or
1855*4882a593Smuzhiyun	  more of the DRBG types must be selected.
1856*4882a593Smuzhiyun
1857*4882a593Smuzhiyunif CRYPTO_DRBG_MENU
1858*4882a593Smuzhiyun
1859*4882a593Smuzhiyunconfig CRYPTO_DRBG_HMAC
1860*4882a593Smuzhiyun	bool
1861*4882a593Smuzhiyun	default y
1862*4882a593Smuzhiyun	select CRYPTO_HMAC
1863*4882a593Smuzhiyun	select CRYPTO_SHA256
1864*4882a593Smuzhiyun
1865*4882a593Smuzhiyunconfig CRYPTO_DRBG_HASH
1866*4882a593Smuzhiyun	bool "Enable Hash DRBG"
1867*4882a593Smuzhiyun	select CRYPTO_SHA256
1868*4882a593Smuzhiyun	help
1869*4882a593Smuzhiyun	  Enable the Hash DRBG variant as defined in NIST SP800-90A.
1870*4882a593Smuzhiyun
1871*4882a593Smuzhiyunconfig CRYPTO_DRBG_CTR
1872*4882a593Smuzhiyun	bool "Enable CTR DRBG"
1873*4882a593Smuzhiyun	select CRYPTO_AES
1874*4882a593Smuzhiyun	select CRYPTO_CTR
1875*4882a593Smuzhiyun	help
1876*4882a593Smuzhiyun	  Enable the CTR DRBG variant as defined in NIST SP800-90A.
1877*4882a593Smuzhiyun
1878*4882a593Smuzhiyunconfig CRYPTO_DRBG
1879*4882a593Smuzhiyun	tristate
1880*4882a593Smuzhiyun	default CRYPTO_DRBG_MENU
1881*4882a593Smuzhiyun	select CRYPTO_RNG
1882*4882a593Smuzhiyun	select CRYPTO_JITTERENTROPY
1883*4882a593Smuzhiyun
1884*4882a593Smuzhiyunendif	# if CRYPTO_DRBG_MENU
1885*4882a593Smuzhiyun
1886*4882a593Smuzhiyunconfig CRYPTO_JITTERENTROPY
1887*4882a593Smuzhiyun	tristate "Jitterentropy Non-Deterministic Random Number Generator"
1888*4882a593Smuzhiyun	select CRYPTO_RNG
1889*4882a593Smuzhiyun	help
1890*4882a593Smuzhiyun	  The Jitterentropy RNG is a noise that is intended
1891*4882a593Smuzhiyun	  to provide seed to another RNG. The RNG does not
1892*4882a593Smuzhiyun	  perform any cryptographic whitening of the generated
1893*4882a593Smuzhiyun	  random numbers. This Jitterentropy RNG registers with
1894*4882a593Smuzhiyun	  the kernel crypto API and can be used by any caller.
1895*4882a593Smuzhiyun
1896*4882a593Smuzhiyunconfig CRYPTO_USER_API
1897*4882a593Smuzhiyun	tristate
1898*4882a593Smuzhiyun
1899*4882a593Smuzhiyunconfig CRYPTO_USER_API_HASH
1900*4882a593Smuzhiyun	tristate "User-space interface for hash algorithms"
1901*4882a593Smuzhiyun	depends on NET
1902*4882a593Smuzhiyun	select CRYPTO_HASH
1903*4882a593Smuzhiyun	select CRYPTO_USER_API
1904*4882a593Smuzhiyun	help
1905*4882a593Smuzhiyun	  This option enables the user-spaces interface for hash
1906*4882a593Smuzhiyun	  algorithms.
1907*4882a593Smuzhiyun
1908*4882a593Smuzhiyunconfig CRYPTO_USER_API_SKCIPHER
1909*4882a593Smuzhiyun	tristate "User-space interface for symmetric key cipher algorithms"
1910*4882a593Smuzhiyun	depends on NET
1911*4882a593Smuzhiyun	select CRYPTO_SKCIPHER
1912*4882a593Smuzhiyun	select CRYPTO_USER_API
1913*4882a593Smuzhiyun	help
1914*4882a593Smuzhiyun	  This option enables the user-spaces interface for symmetric
1915*4882a593Smuzhiyun	  key cipher algorithms.
1916*4882a593Smuzhiyun
1917*4882a593Smuzhiyunconfig CRYPTO_USER_API_RNG
1918*4882a593Smuzhiyun	tristate "User-space interface for random number generator algorithms"
1919*4882a593Smuzhiyun	depends on NET
1920*4882a593Smuzhiyun	select CRYPTO_RNG
1921*4882a593Smuzhiyun	select CRYPTO_USER_API
1922*4882a593Smuzhiyun	help
1923*4882a593Smuzhiyun	  This option enables the user-spaces interface for random
1924*4882a593Smuzhiyun	  number generator algorithms.
1925*4882a593Smuzhiyun
1926*4882a593Smuzhiyunconfig CRYPTO_USER_API_RNG_CAVP
1927*4882a593Smuzhiyun	bool "Enable CAVP testing of DRBG"
1928*4882a593Smuzhiyun	depends on CRYPTO_USER_API_RNG && CRYPTO_DRBG
1929*4882a593Smuzhiyun	help
1930*4882a593Smuzhiyun	  This option enables extra API for CAVP testing via the user-space
1931*4882a593Smuzhiyun	  interface: resetting of DRBG entropy, and providing Additional Data.
1932*4882a593Smuzhiyun	  This should only be enabled for CAVP testing. You should say
1933*4882a593Smuzhiyun	  no unless you know what this is.
1934*4882a593Smuzhiyun
1935*4882a593Smuzhiyunconfig CRYPTO_USER_API_AEAD
1936*4882a593Smuzhiyun	tristate "User-space interface for AEAD cipher algorithms"
1937*4882a593Smuzhiyun	depends on NET
1938*4882a593Smuzhiyun	select CRYPTO_AEAD
1939*4882a593Smuzhiyun	select CRYPTO_SKCIPHER
1940*4882a593Smuzhiyun	select CRYPTO_NULL
1941*4882a593Smuzhiyun	select CRYPTO_USER_API
1942*4882a593Smuzhiyun	help
1943*4882a593Smuzhiyun	  This option enables the user-spaces interface for AEAD
1944*4882a593Smuzhiyun	  cipher algorithms.
1945*4882a593Smuzhiyun
1946*4882a593Smuzhiyunconfig CRYPTO_USER_API_ENABLE_OBSOLETE
1947*4882a593Smuzhiyun	bool "Enable obsolete cryptographic algorithms for userspace"
1948*4882a593Smuzhiyun	depends on CRYPTO_USER_API
1949*4882a593Smuzhiyun	default y
1950*4882a593Smuzhiyun	help
1951*4882a593Smuzhiyun	  Allow obsolete cryptographic algorithms to be selected that have
1952*4882a593Smuzhiyun	  already been phased out from internal use by the kernel, and are
1953*4882a593Smuzhiyun	  only useful for userspace clients that still rely on them.
1954*4882a593Smuzhiyun
1955*4882a593Smuzhiyunconfig CRYPTO_STATS
1956*4882a593Smuzhiyun	bool "Crypto usage statistics for User-space"
1957*4882a593Smuzhiyun	depends on CRYPTO_USER
1958*4882a593Smuzhiyun	help
1959*4882a593Smuzhiyun	  This option enables the gathering of crypto stats.
1960*4882a593Smuzhiyun	  This will collect:
1961*4882a593Smuzhiyun	  - encrypt/decrypt size and numbers of symmeric operations
1962*4882a593Smuzhiyun	  - compress/decompress size and numbers of compress operations
1963*4882a593Smuzhiyun	  - size and numbers of hash operations
1964*4882a593Smuzhiyun	  - encrypt/decrypt/sign/verify numbers for asymmetric operations
1965*4882a593Smuzhiyun	  - generate/seed numbers for rng operations
1966*4882a593Smuzhiyun
1967*4882a593Smuzhiyunconfig CRYPTO_HASH_INFO
1968*4882a593Smuzhiyun	bool
1969*4882a593Smuzhiyun
1970*4882a593Smuzhiyunsource "drivers/crypto/Kconfig"
1971*4882a593Smuzhiyunsource "crypto/asymmetric_keys/Kconfig"
1972*4882a593Smuzhiyunsource "certs/Kconfig"
1973*4882a593Smuzhiyun
1974*4882a593Smuzhiyunendif	# if CRYPTO
1975