xref: /linux/crypto/Kconfig (revision b7133757da4c4c17d625970f6da3d76af12a8867)
1b2441318SGreg Kroah-Hartman# SPDX-License-Identifier: GPL-2.0
21da177e4SLinus Torvalds#
3685784aaSDan Williams# Generic algorithms support
4685784aaSDan Williams#
5685784aaSDan Williamsconfig XOR_BLOCKS
6685784aaSDan Williams	tristate
7685784aaSDan Williams
8685784aaSDan Williams#
99bc89cd8SDan Williams# async_tx api: hardware offloaded memory transfer/transform support
109bc89cd8SDan Williams#
119bc89cd8SDan Williamssource "crypto/async_tx/Kconfig"
129bc89cd8SDan Williams
139bc89cd8SDan Williams#
141da177e4SLinus Torvalds# Cryptographic API Configuration
151da177e4SLinus Torvalds#
162e290f43SJan Engelhardtmenuconfig CRYPTO
17c3715cb9SSebastian Siewior	tristate "Cryptographic API"
18abfed87eSJason A. Donenfeld	select LIB_MEMNEQ
191da177e4SLinus Torvalds	help
201da177e4SLinus Torvalds	  This option provides the core Cryptographic API.
211da177e4SLinus Torvalds
22cce9e06dSHerbert Xuif CRYPTO
23cce9e06dSHerbert Xu
24584fffc8SSebastian Siewiorcomment "Crypto core or helper"
25584fffc8SSebastian Siewior
26ccb778e1SNeil Hormanconfig CRYPTO_FIPS
27ccb778e1SNeil Horman	bool "FIPS 200 compliance"
28f2c89a10SHerbert Xu	depends on (CRYPTO_ANSI_CPRNG || CRYPTO_DRBG) && !CRYPTO_MANAGER_DISABLE_TESTS
291f696097SAlec Ari	depends on (MODULE_SIG || !MODULES)
30ccb778e1SNeil Horman	help
31d99324c2SGeert Uytterhoeven	  This option enables the fips boot option which is
32d99324c2SGeert Uytterhoeven	  required if you want the system to operate in a FIPS 200
33ccb778e1SNeil Horman	  certification.  You should say no unless you know what
34e84c5480SChuck Ebbert	  this is.
35ccb778e1SNeil Horman
36cce9e06dSHerbert Xuconfig CRYPTO_ALGAPI
37cce9e06dSHerbert Xu	tristate
386a0fcbb4SHerbert Xu	select CRYPTO_ALGAPI2
39cce9e06dSHerbert Xu	help
40cce9e06dSHerbert Xu	  This option provides the API for cryptographic algorithms.
41cce9e06dSHerbert Xu
426a0fcbb4SHerbert Xuconfig CRYPTO_ALGAPI2
436a0fcbb4SHerbert Xu	tristate
446a0fcbb4SHerbert Xu
451ae97820SHerbert Xuconfig CRYPTO_AEAD
461ae97820SHerbert Xu	tristate
476a0fcbb4SHerbert Xu	select CRYPTO_AEAD2
481ae97820SHerbert Xu	select CRYPTO_ALGAPI
491ae97820SHerbert Xu
506a0fcbb4SHerbert Xuconfig CRYPTO_AEAD2
516a0fcbb4SHerbert Xu	tristate
526a0fcbb4SHerbert Xu	select CRYPTO_ALGAPI2
53149a3971SHerbert Xu	select CRYPTO_NULL2
54149a3971SHerbert Xu	select CRYPTO_RNG2
556a0fcbb4SHerbert Xu
56b95bba5dSEric Biggersconfig CRYPTO_SKCIPHER
575cde0af2SHerbert Xu	tristate
58b95bba5dSEric Biggers	select CRYPTO_SKCIPHER2
595cde0af2SHerbert Xu	select CRYPTO_ALGAPI
606a0fcbb4SHerbert Xu
61b95bba5dSEric Biggersconfig CRYPTO_SKCIPHER2
626a0fcbb4SHerbert Xu	tristate
636a0fcbb4SHerbert Xu	select CRYPTO_ALGAPI2
646a0fcbb4SHerbert Xu	select CRYPTO_RNG2
655cde0af2SHerbert Xu
66055bcee3SHerbert Xuconfig CRYPTO_HASH
67055bcee3SHerbert Xu	tristate
686a0fcbb4SHerbert Xu	select CRYPTO_HASH2
69055bcee3SHerbert Xu	select CRYPTO_ALGAPI
70055bcee3SHerbert Xu
716a0fcbb4SHerbert Xuconfig CRYPTO_HASH2
726a0fcbb4SHerbert Xu	tristate
736a0fcbb4SHerbert Xu	select CRYPTO_ALGAPI2
746a0fcbb4SHerbert Xu
7517f0f4a4SNeil Hormanconfig CRYPTO_RNG
7617f0f4a4SNeil Horman	tristate
776a0fcbb4SHerbert Xu	select CRYPTO_RNG2
7817f0f4a4SNeil Horman	select CRYPTO_ALGAPI
7917f0f4a4SNeil Horman
806a0fcbb4SHerbert Xuconfig CRYPTO_RNG2
816a0fcbb4SHerbert Xu	tristate
826a0fcbb4SHerbert Xu	select CRYPTO_ALGAPI2
836a0fcbb4SHerbert Xu
84401e4238SHerbert Xuconfig CRYPTO_RNG_DEFAULT
85401e4238SHerbert Xu	tristate
86401e4238SHerbert Xu	select CRYPTO_DRBG_MENU
87401e4238SHerbert Xu
883c339ab8STadeusz Strukconfig CRYPTO_AKCIPHER2
893c339ab8STadeusz Struk	tristate
903c339ab8STadeusz Struk	select CRYPTO_ALGAPI2
913c339ab8STadeusz Struk
923c339ab8STadeusz Strukconfig CRYPTO_AKCIPHER
933c339ab8STadeusz Struk	tristate
943c339ab8STadeusz Struk	select CRYPTO_AKCIPHER2
953c339ab8STadeusz Struk	select CRYPTO_ALGAPI
963c339ab8STadeusz Struk
974e5f2c40SSalvatore Benedettoconfig CRYPTO_KPP2
984e5f2c40SSalvatore Benedetto	tristate
994e5f2c40SSalvatore Benedetto	select CRYPTO_ALGAPI2
1004e5f2c40SSalvatore Benedetto
1014e5f2c40SSalvatore Benedettoconfig CRYPTO_KPP
1024e5f2c40SSalvatore Benedetto	tristate
1034e5f2c40SSalvatore Benedetto	select CRYPTO_ALGAPI
1044e5f2c40SSalvatore Benedetto	select CRYPTO_KPP2
1054e5f2c40SSalvatore Benedetto
1062ebda74fSGiovanni Cabidduconfig CRYPTO_ACOMP2
1072ebda74fSGiovanni Cabiddu	tristate
1082ebda74fSGiovanni Cabiddu	select CRYPTO_ALGAPI2
1098cd579d2SBart Van Assche	select SGL_ALLOC
1102ebda74fSGiovanni Cabiddu
1112ebda74fSGiovanni Cabidduconfig CRYPTO_ACOMP
1122ebda74fSGiovanni Cabiddu	tristate
1132ebda74fSGiovanni Cabiddu	select CRYPTO_ALGAPI
1142ebda74fSGiovanni Cabiddu	select CRYPTO_ACOMP2
1152ebda74fSGiovanni Cabiddu
1162b8c19dbSHerbert Xuconfig CRYPTO_MANAGER
1172b8c19dbSHerbert Xu	tristate "Cryptographic algorithm manager"
1186a0fcbb4SHerbert Xu	select CRYPTO_MANAGER2
1192b8c19dbSHerbert Xu	help
1202b8c19dbSHerbert Xu	  Create default cryptographic template instantiations such as
1212b8c19dbSHerbert Xu	  cbc(aes).
1222b8c19dbSHerbert Xu
1236a0fcbb4SHerbert Xuconfig CRYPTO_MANAGER2
1246a0fcbb4SHerbert Xu	def_tristate CRYPTO_MANAGER || (CRYPTO_MANAGER!=n && CRYPTO_ALGAPI=y)
1256a0fcbb4SHerbert Xu	select CRYPTO_AEAD2
1266a0fcbb4SHerbert Xu	select CRYPTO_HASH2
127b95bba5dSEric Biggers	select CRYPTO_SKCIPHER2
128946cc463STadeusz Struk	select CRYPTO_AKCIPHER2
1294e5f2c40SSalvatore Benedetto	select CRYPTO_KPP2
1302ebda74fSGiovanni Cabiddu	select CRYPTO_ACOMP2
1316a0fcbb4SHerbert Xu
132a38f7907SSteffen Klassertconfig CRYPTO_USER
133a38f7907SSteffen Klassert	tristate "Userspace cryptographic algorithm configuration"
1345db017aaSHerbert Xu	depends on NET
135a38f7907SSteffen Klassert	select CRYPTO_MANAGER
136a38f7907SSteffen Klassert	help
137d19978f5SValdis.Kletnieks@vt.edu	  Userspace configuration for cryptographic instantiations such as
138a38f7907SSteffen Klassert	  cbc(aes).
139a38f7907SSteffen Klassert
140326a6346SHerbert Xuconfig CRYPTO_MANAGER_DISABLE_TESTS
141326a6346SHerbert Xu	bool "Disable run-time self tests"
14200ca28a5SHerbert Xu	default y
1430b767f96SAlexander Shishkin	help
144326a6346SHerbert Xu	  Disable run-time self tests that normally take place at
145326a6346SHerbert Xu	  algorithm registration.
1460b767f96SAlexander Shishkin
1475b2706a4SEric Biggersconfig CRYPTO_MANAGER_EXTRA_TESTS
1485b2706a4SEric Biggers	bool "Enable extra run-time crypto self tests"
1496569e309SJason A. Donenfeld	depends on DEBUG_KERNEL && !CRYPTO_MANAGER_DISABLE_TESTS && CRYPTO_MANAGER
1505b2706a4SEric Biggers	help
1515b2706a4SEric Biggers	  Enable extra run-time self tests of registered crypto algorithms,
1525b2706a4SEric Biggers	  including randomized fuzz tests.
1535b2706a4SEric Biggers
1545b2706a4SEric Biggers	  This is intended for developer use only, as these tests take much
1555b2706a4SEric Biggers	  longer to run than the normal self tests.
1565b2706a4SEric Biggers
157584fffc8SSebastian Siewiorconfig CRYPTO_GF128MUL
158e590e132SEric Biggers	tristate
159584fffc8SSebastian Siewior
160584fffc8SSebastian Siewiorconfig CRYPTO_NULL
161584fffc8SSebastian Siewior	tristate "Null algorithms"
162149a3971SHerbert Xu	select CRYPTO_NULL2
163584fffc8SSebastian Siewior	help
164584fffc8SSebastian Siewior	  These are 'Null' algorithms, used by IPsec, which do nothing.
165584fffc8SSebastian Siewior
166149a3971SHerbert Xuconfig CRYPTO_NULL2
167dd43c4e9SHerbert Xu	tristate
168149a3971SHerbert Xu	select CRYPTO_ALGAPI2
169b95bba5dSEric Biggers	select CRYPTO_SKCIPHER2
170149a3971SHerbert Xu	select CRYPTO_HASH2
171149a3971SHerbert Xu
1725068c7a8SSteffen Klassertconfig CRYPTO_PCRYPT
1733b4afaf2SKees Cook	tristate "Parallel crypto engine"
1743b4afaf2SKees Cook	depends on SMP
1755068c7a8SSteffen Klassert	select PADATA
1765068c7a8SSteffen Klassert	select CRYPTO_MANAGER
1775068c7a8SSteffen Klassert	select CRYPTO_AEAD
1785068c7a8SSteffen Klassert	help
1795068c7a8SSteffen Klassert	  This converts an arbitrary crypto algorithm into a parallel
1805068c7a8SSteffen Klassert	  algorithm that executes in kernel threads.
1815068c7a8SSteffen Klassert
182584fffc8SSebastian Siewiorconfig CRYPTO_CRYPTD
183584fffc8SSebastian Siewior	tristate "Software async crypto daemon"
184b95bba5dSEric Biggers	select CRYPTO_SKCIPHER
185b8a28251SLoc Ho	select CRYPTO_HASH
186584fffc8SSebastian Siewior	select CRYPTO_MANAGER
187584fffc8SSebastian Siewior	help
188584fffc8SSebastian Siewior	  This is a generic software asynchronous crypto daemon that
189584fffc8SSebastian Siewior	  converts an arbitrary synchronous software crypto algorithm
190584fffc8SSebastian Siewior	  into an asynchronous algorithm that executes in a kernel thread.
191584fffc8SSebastian Siewior
192584fffc8SSebastian Siewiorconfig CRYPTO_AUTHENC
193584fffc8SSebastian Siewior	tristate "Authenc support"
194584fffc8SSebastian Siewior	select CRYPTO_AEAD
195b95bba5dSEric Biggers	select CRYPTO_SKCIPHER
196584fffc8SSebastian Siewior	select CRYPTO_MANAGER
197584fffc8SSebastian Siewior	select CRYPTO_HASH
198e94c6a7aSHerbert Xu	select CRYPTO_NULL
199584fffc8SSebastian Siewior	help
200584fffc8SSebastian Siewior	  Authenc: Combined mode wrapper for IPsec.
201584fffc8SSebastian Siewior	  This is required for IPSec.
202584fffc8SSebastian Siewior
203584fffc8SSebastian Siewiorconfig CRYPTO_TEST
204584fffc8SSebastian Siewior	tristate "Testing module"
20500ea27f1SArd Biesheuvel	depends on m || EXPERT
206da7f033dSHerbert Xu	select CRYPTO_MANAGER
207584fffc8SSebastian Siewior	help
208584fffc8SSebastian Siewior	  Quick & dirty crypto test module.
209584fffc8SSebastian Siewior
210266d0516SHerbert Xuconfig CRYPTO_SIMD
211266d0516SHerbert Xu	tristate
212266d0516SHerbert Xu	select CRYPTO_CRYPTD
213266d0516SHerbert Xu
214735d37b5SBaolin Wangconfig CRYPTO_ENGINE
215735d37b5SBaolin Wang	tristate
216735d37b5SBaolin Wang
2173d6228a5SVitaly Chikunovcomment "Public-key cryptography"
2183d6228a5SVitaly Chikunov
2193d6228a5SVitaly Chikunovconfig CRYPTO_RSA
2203d6228a5SVitaly Chikunov	tristate "RSA algorithm"
2213d6228a5SVitaly Chikunov	select CRYPTO_AKCIPHER
2223d6228a5SVitaly Chikunov	select CRYPTO_MANAGER
2233d6228a5SVitaly Chikunov	select MPILIB
2243d6228a5SVitaly Chikunov	select ASN1
2253d6228a5SVitaly Chikunov	help
2263d6228a5SVitaly Chikunov	  Generic implementation of the RSA public key algorithm.
2273d6228a5SVitaly Chikunov
2283d6228a5SVitaly Chikunovconfig CRYPTO_DH
2293d6228a5SVitaly Chikunov	tristate "Diffie-Hellman algorithm"
2303d6228a5SVitaly Chikunov	select CRYPTO_KPP
2313d6228a5SVitaly Chikunov	select MPILIB
2323d6228a5SVitaly Chikunov	help
2333d6228a5SVitaly Chikunov	  Generic implementation of the Diffie-Hellman algorithm.
2343d6228a5SVitaly Chikunov
2357dce5981SNicolai Stangeconfig CRYPTO_DH_RFC7919_GROUPS
2367dce5981SNicolai Stange	bool "Support for RFC 7919 FFDHE group parameters"
2377dce5981SNicolai Stange	depends on CRYPTO_DH
2381e207964SNicolai Stange	select CRYPTO_RNG_DEFAULT
2397dce5981SNicolai Stange	help
2407dce5981SNicolai Stange	  Provide support for RFC 7919 FFDHE group parameters. If unsure, say N.
2417dce5981SNicolai Stange
2424a2289daSVitaly Chikunovconfig CRYPTO_ECC
2434a2289daSVitaly Chikunov	tristate
24438aa192aSArnd Bergmann	select CRYPTO_RNG_DEFAULT
2454a2289daSVitaly Chikunov
2463d6228a5SVitaly Chikunovconfig CRYPTO_ECDH
2473d6228a5SVitaly Chikunov	tristate "ECDH algorithm"
2484a2289daSVitaly Chikunov	select CRYPTO_ECC
2493d6228a5SVitaly Chikunov	select CRYPTO_KPP
2503d6228a5SVitaly Chikunov	help
2513d6228a5SVitaly Chikunov	  Generic implementation of the ECDH algorithm
2523d6228a5SVitaly Chikunov
2534e660291SStefan Bergerconfig CRYPTO_ECDSA
2544e660291SStefan Berger	tristate "ECDSA (NIST P192, P256 etc.) algorithm"
2554e660291SStefan Berger	select CRYPTO_ECC
2564e660291SStefan Berger	select CRYPTO_AKCIPHER
2574e660291SStefan Berger	select ASN1
2584e660291SStefan Berger	help
2594e660291SStefan Berger	  Elliptic Curve Digital Signature Algorithm (NIST P192, P256 etc.)
2604e660291SStefan Berger	  is A NIST cryptographic standard algorithm. Only signature verification
2614e660291SStefan Berger	  is implemented.
2624e660291SStefan Berger
2630d7a7864SVitaly Chikunovconfig CRYPTO_ECRDSA
2640d7a7864SVitaly Chikunov	tristate "EC-RDSA (GOST 34.10) algorithm"
2650d7a7864SVitaly Chikunov	select CRYPTO_ECC
2660d7a7864SVitaly Chikunov	select CRYPTO_AKCIPHER
2670d7a7864SVitaly Chikunov	select CRYPTO_STREEBOG
2681036633eSVitaly Chikunov	select OID_REGISTRY
2691036633eSVitaly Chikunov	select ASN1
2700d7a7864SVitaly Chikunov	help
2710d7a7864SVitaly Chikunov	  Elliptic Curve Russian Digital Signature Algorithm (GOST R 34.10-2012,
2720d7a7864SVitaly Chikunov	  RFC 7091, ISO/IEC 14888-3:2018) is one of the Russian cryptographic
2730d7a7864SVitaly Chikunov	  standard algorithms (called GOST algorithms). Only signature verification
2740d7a7864SVitaly Chikunov	  is implemented.
2750d7a7864SVitaly Chikunov
276ea7ecb66STianjia Zhangconfig CRYPTO_SM2
277ea7ecb66STianjia Zhang	tristate "SM2 algorithm"
278d2825fa9SJason A. Donenfeld	select CRYPTO_SM3
279ea7ecb66STianjia Zhang	select CRYPTO_AKCIPHER
280ea7ecb66STianjia Zhang	select CRYPTO_MANAGER
281ea7ecb66STianjia Zhang	select MPILIB
282ea7ecb66STianjia Zhang	select ASN1
283ea7ecb66STianjia Zhang	help
284ea7ecb66STianjia Zhang	  Generic implementation of the SM2 public key algorithm. It was
285ea7ecb66STianjia Zhang	  published by State Encryption Management Bureau, China.
286ea7ecb66STianjia Zhang	  as specified by OSCCA GM/T 0003.1-2012 -- 0003.5-2012.
287ea7ecb66STianjia Zhang
288ea7ecb66STianjia Zhang	  References:
289ea7ecb66STianjia Zhang	  https://tools.ietf.org/html/draft-shen-sm2-ecdsa-02
290ea7ecb66STianjia Zhang	  http://www.oscca.gov.cn/sca/xxgk/2010-12/17/content_1002386.shtml
291ea7ecb66STianjia Zhang	  http://www.gmbz.org.cn/main/bzlb.html
292ea7ecb66STianjia Zhang
293ee772cb6SArd Biesheuvelconfig CRYPTO_CURVE25519
294ee772cb6SArd Biesheuvel	tristate "Curve25519 algorithm"
295ee772cb6SArd Biesheuvel	select CRYPTO_KPP
296ee772cb6SArd Biesheuvel	select CRYPTO_LIB_CURVE25519_GENERIC
297ee772cb6SArd Biesheuvel
298bb611bdfSJason A. Donenfeldconfig CRYPTO_CURVE25519_X86
299bb611bdfSJason A. Donenfeld	tristate "x86_64 accelerated Curve25519 scalar multiplication library"
300bb611bdfSJason A. Donenfeld	depends on X86 && 64BIT
301bb611bdfSJason A. Donenfeld	select CRYPTO_LIB_CURVE25519_GENERIC
302bb611bdfSJason A. Donenfeld	select CRYPTO_ARCH_HAVE_LIB_CURVE25519
303bb611bdfSJason A. Donenfeld
304584fffc8SSebastian Siewiorcomment "Authenticated Encryption with Associated Data"
305584fffc8SSebastian Siewior
306584fffc8SSebastian Siewiorconfig CRYPTO_CCM
307584fffc8SSebastian Siewior	tristate "CCM support"
308584fffc8SSebastian Siewior	select CRYPTO_CTR
309f15f05b0SArd Biesheuvel	select CRYPTO_HASH
310584fffc8SSebastian Siewior	select CRYPTO_AEAD
311c8a3315aSEric Biggers	select CRYPTO_MANAGER
312584fffc8SSebastian Siewior	help
313584fffc8SSebastian Siewior	  Support for Counter with CBC MAC. Required for IPsec.
314584fffc8SSebastian Siewior
315584fffc8SSebastian Siewiorconfig CRYPTO_GCM
316584fffc8SSebastian Siewior	tristate "GCM/GMAC support"
317584fffc8SSebastian Siewior	select CRYPTO_CTR
318584fffc8SSebastian Siewior	select CRYPTO_AEAD
3199382d97aSHuang Ying	select CRYPTO_GHASH
3209489667dSJussi Kivilinna	select CRYPTO_NULL
321c8a3315aSEric Biggers	select CRYPTO_MANAGER
322584fffc8SSebastian Siewior	help
323584fffc8SSebastian Siewior	  Support for Galois/Counter Mode (GCM) and Galois Message
324584fffc8SSebastian Siewior	  Authentication Code (GMAC). Required for IPSec.
325584fffc8SSebastian Siewior
32671ebc4d1SMartin Williconfig CRYPTO_CHACHA20POLY1305
32771ebc4d1SMartin Willi	tristate "ChaCha20-Poly1305 AEAD support"
32871ebc4d1SMartin Willi	select CRYPTO_CHACHA20
32971ebc4d1SMartin Willi	select CRYPTO_POLY1305
33071ebc4d1SMartin Willi	select CRYPTO_AEAD
331c8a3315aSEric Biggers	select CRYPTO_MANAGER
33271ebc4d1SMartin Willi	help
33371ebc4d1SMartin Willi	  ChaCha20-Poly1305 AEAD support, RFC7539.
33471ebc4d1SMartin Willi
33571ebc4d1SMartin Willi	  Support for the AEAD wrapper using the ChaCha20 stream cipher combined
33671ebc4d1SMartin Willi	  with the Poly1305 authenticator. It is defined in RFC7539 for use in
33771ebc4d1SMartin Willi	  IETF protocols.
33871ebc4d1SMartin Willi
339f606a88eSOndrej Mosnacekconfig CRYPTO_AEGIS128
340f606a88eSOndrej Mosnacek	tristate "AEGIS-128 AEAD algorithm"
341f606a88eSOndrej Mosnacek	select CRYPTO_AEAD
342f606a88eSOndrej Mosnacek	select CRYPTO_AES  # for AES S-box tables
343f606a88eSOndrej Mosnacek	help
344f606a88eSOndrej Mosnacek	 Support for the AEGIS-128 dedicated AEAD algorithm.
345f606a88eSOndrej Mosnacek
346a4397635SArd Biesheuvelconfig CRYPTO_AEGIS128_SIMD
347a4397635SArd Biesheuvel	bool "Support SIMD acceleration for AEGIS-128"
348a4397635SArd Biesheuvel	depends on CRYPTO_AEGIS128 && ((ARM || ARM64) && KERNEL_MODE_NEON)
349a4397635SArd Biesheuvel	default y
350a4397635SArd Biesheuvel
3511d373d4eSOndrej Mosnacekconfig CRYPTO_AEGIS128_AESNI_SSE2
3521d373d4eSOndrej Mosnacek	tristate "AEGIS-128 AEAD algorithm (x86_64 AESNI+SSE2 implementation)"
3531d373d4eSOndrej Mosnacek	depends on X86 && 64BIT
3541d373d4eSOndrej Mosnacek	select CRYPTO_AEAD
355de272ca7SEric Biggers	select CRYPTO_SIMD
3561d373d4eSOndrej Mosnacek	help
3574e5180ebSOndrej Mosnacek	 AESNI+SSE2 implementation of the AEGIS-128 dedicated AEAD algorithm.
3581d373d4eSOndrej Mosnacek
359584fffc8SSebastian Siewiorconfig CRYPTO_SEQIV
360584fffc8SSebastian Siewior	tristate "Sequence Number IV Generator"
361584fffc8SSebastian Siewior	select CRYPTO_AEAD
362b95bba5dSEric Biggers	select CRYPTO_SKCIPHER
363856e3f40SHerbert Xu	select CRYPTO_NULL
364401e4238SHerbert Xu	select CRYPTO_RNG_DEFAULT
365c8a3315aSEric Biggers	select CRYPTO_MANAGER
366584fffc8SSebastian Siewior	help
367584fffc8SSebastian Siewior	  This IV generator generates an IV based on a sequence number by
368584fffc8SSebastian Siewior	  xoring it with a salt.  This algorithm is mainly useful for CTR
369584fffc8SSebastian Siewior
370a10f554fSHerbert Xuconfig CRYPTO_ECHAINIV
371a10f554fSHerbert Xu	tristate "Encrypted Chain IV Generator"
372a10f554fSHerbert Xu	select CRYPTO_AEAD
373a10f554fSHerbert Xu	select CRYPTO_NULL
374401e4238SHerbert Xu	select CRYPTO_RNG_DEFAULT
375c8a3315aSEric Biggers	select CRYPTO_MANAGER
376a10f554fSHerbert Xu	help
377a10f554fSHerbert Xu	  This IV generator generates an IV based on the encryption of
378a10f554fSHerbert Xu	  a sequence number xored with a salt.  This is the default
379a10f554fSHerbert Xu	  algorithm for CBC.
380a10f554fSHerbert Xu
381584fffc8SSebastian Siewiorcomment "Block modes"
382584fffc8SSebastian Siewior
383584fffc8SSebastian Siewiorconfig CRYPTO_CBC
384584fffc8SSebastian Siewior	tristate "CBC support"
385b95bba5dSEric Biggers	select CRYPTO_SKCIPHER
386584fffc8SSebastian Siewior	select CRYPTO_MANAGER
387584fffc8SSebastian Siewior	help
388584fffc8SSebastian Siewior	  CBC: Cipher Block Chaining mode
389584fffc8SSebastian Siewior	  This block cipher algorithm is required for IPSec.
390584fffc8SSebastian Siewior
391a7d85e06SJames Bottomleyconfig CRYPTO_CFB
392a7d85e06SJames Bottomley	tristate "CFB support"
393b95bba5dSEric Biggers	select CRYPTO_SKCIPHER
394a7d85e06SJames Bottomley	select CRYPTO_MANAGER
395a7d85e06SJames Bottomley	help
396a7d85e06SJames Bottomley	  CFB: Cipher FeedBack mode
397a7d85e06SJames Bottomley	  This block cipher algorithm is required for TPM2 Cryptography.
398a7d85e06SJames Bottomley
399584fffc8SSebastian Siewiorconfig CRYPTO_CTR
400584fffc8SSebastian Siewior	tristate "CTR support"
401b95bba5dSEric Biggers	select CRYPTO_SKCIPHER
402584fffc8SSebastian Siewior	select CRYPTO_MANAGER
403584fffc8SSebastian Siewior	help
404584fffc8SSebastian Siewior	  CTR: Counter mode
405584fffc8SSebastian Siewior	  This block cipher algorithm is required for IPSec.
406584fffc8SSebastian Siewior
407584fffc8SSebastian Siewiorconfig CRYPTO_CTS
408584fffc8SSebastian Siewior	tristate "CTS support"
409b95bba5dSEric Biggers	select CRYPTO_SKCIPHER
410c8a3315aSEric Biggers	select CRYPTO_MANAGER
411584fffc8SSebastian Siewior	help
412584fffc8SSebastian Siewior	  CTS: Cipher Text Stealing
413584fffc8SSebastian Siewior	  This is the Cipher Text Stealing mode as described by
414ecd6d5c9SGilad Ben-Yossef	  Section 8 of rfc2040 and referenced by rfc3962
415ecd6d5c9SGilad Ben-Yossef	  (rfc3962 includes errata information in its Appendix A) or
416ecd6d5c9SGilad Ben-Yossef	  CBC-CS3 as defined by NIST in Sp800-38A addendum from Oct 2010.
417584fffc8SSebastian Siewior	  This mode is required for Kerberos gss mechanism support
418584fffc8SSebastian Siewior	  for AES encryption.
419584fffc8SSebastian Siewior
420ecd6d5c9SGilad Ben-Yossef	  See: https://csrc.nist.gov/publications/detail/sp/800-38a/addendum/final
421ecd6d5c9SGilad Ben-Yossef
422584fffc8SSebastian Siewiorconfig CRYPTO_ECB
423584fffc8SSebastian Siewior	tristate "ECB support"
424b95bba5dSEric Biggers	select CRYPTO_SKCIPHER
425584fffc8SSebastian Siewior	select CRYPTO_MANAGER
426584fffc8SSebastian Siewior	help
427584fffc8SSebastian Siewior	  ECB: Electronic CodeBook mode
428584fffc8SSebastian Siewior	  This is the simplest block cipher algorithm.  It simply encrypts
429584fffc8SSebastian Siewior	  the input block by block.
430584fffc8SSebastian Siewior
431584fffc8SSebastian Siewiorconfig CRYPTO_LRW
4322470a2b2SJussi Kivilinna	tristate "LRW support"
433b95bba5dSEric Biggers	select CRYPTO_SKCIPHER
434584fffc8SSebastian Siewior	select CRYPTO_MANAGER
435584fffc8SSebastian Siewior	select CRYPTO_GF128MUL
436f60bbbbeSHerbert Xu	select CRYPTO_ECB
437584fffc8SSebastian Siewior	help
438584fffc8SSebastian Siewior	  LRW: Liskov Rivest Wagner, a tweakable, non malleable, non movable
439584fffc8SSebastian Siewior	  narrow block cipher mode for dm-crypt.  Use it with cipher
440584fffc8SSebastian Siewior	  specification string aes-lrw-benbi, the key must be 256, 320 or 384.
441584fffc8SSebastian Siewior	  The first 128, 192 or 256 bits in the key are used for AES and the
442584fffc8SSebastian Siewior	  rest is used to tie each cipher block to its logical position.
443584fffc8SSebastian Siewior
444e497c518SGilad Ben-Yossefconfig CRYPTO_OFB
445e497c518SGilad Ben-Yossef	tristate "OFB support"
446b95bba5dSEric Biggers	select CRYPTO_SKCIPHER
447e497c518SGilad Ben-Yossef	select CRYPTO_MANAGER
448e497c518SGilad Ben-Yossef	help
449e497c518SGilad Ben-Yossef	  OFB: the Output Feedback mode makes a block cipher into a synchronous
450e497c518SGilad Ben-Yossef	  stream cipher. It generates keystream blocks, which are then XORed
451e497c518SGilad Ben-Yossef	  with the plaintext blocks to get the ciphertext. Flipping a bit in the
452e497c518SGilad Ben-Yossef	  ciphertext produces a flipped bit in the plaintext at the same
453e497c518SGilad Ben-Yossef	  location. This property allows many error correcting codes to function
454e497c518SGilad Ben-Yossef	  normally even when applied before encryption.
455e497c518SGilad Ben-Yossef
456584fffc8SSebastian Siewiorconfig CRYPTO_PCBC
457584fffc8SSebastian Siewior	tristate "PCBC support"
458b95bba5dSEric Biggers	select CRYPTO_SKCIPHER
459584fffc8SSebastian Siewior	select CRYPTO_MANAGER
460584fffc8SSebastian Siewior	help
461584fffc8SSebastian Siewior	  PCBC: Propagating Cipher Block Chaining mode
462584fffc8SSebastian Siewior	  This block cipher algorithm is required for RxRPC.
463584fffc8SSebastian Siewior
464584fffc8SSebastian Siewiorconfig CRYPTO_XTS
4655bcf8e6dSJussi Kivilinna	tristate "XTS support"
466b95bba5dSEric Biggers	select CRYPTO_SKCIPHER
467584fffc8SSebastian Siewior	select CRYPTO_MANAGER
46812cb3a1cSMilan Broz	select CRYPTO_ECB
469584fffc8SSebastian Siewior	help
470584fffc8SSebastian Siewior	  XTS: IEEE1619/D16 narrow block cipher use with aes-xts-plain,
471584fffc8SSebastian Siewior	  key size 256, 384 or 512 bits. This implementation currently
472584fffc8SSebastian Siewior	  can't handle a sectorsize which is not a multiple of 16 bytes.
473584fffc8SSebastian Siewior
4741c49678eSStephan Muellerconfig CRYPTO_KEYWRAP
4751c49678eSStephan Mueller	tristate "Key wrapping support"
476b95bba5dSEric Biggers	select CRYPTO_SKCIPHER
477c8a3315aSEric Biggers	select CRYPTO_MANAGER
4781c49678eSStephan Mueller	help
4791c49678eSStephan Mueller	  Support for key wrapping (NIST SP800-38F / RFC3394) without
4801c49678eSStephan Mueller	  padding.
4811c49678eSStephan Mueller
48226609a21SEric Biggersconfig CRYPTO_NHPOLY1305
48326609a21SEric Biggers	tristate
48426609a21SEric Biggers	select CRYPTO_HASH
48548ea8c6eSArd Biesheuvel	select CRYPTO_LIB_POLY1305_GENERIC
48626609a21SEric Biggers
487012c8238SEric Biggersconfig CRYPTO_NHPOLY1305_SSE2
488012c8238SEric Biggers	tristate "NHPoly1305 hash function (x86_64 SSE2 implementation)"
489012c8238SEric Biggers	depends on X86 && 64BIT
490012c8238SEric Biggers	select CRYPTO_NHPOLY1305
491012c8238SEric Biggers	help
492012c8238SEric Biggers	  SSE2 optimized implementation of the hash function used by the
493012c8238SEric Biggers	  Adiantum encryption mode.
494012c8238SEric Biggers
4950f961f9fSEric Biggersconfig CRYPTO_NHPOLY1305_AVX2
4960f961f9fSEric Biggers	tristate "NHPoly1305 hash function (x86_64 AVX2 implementation)"
4970f961f9fSEric Biggers	depends on X86 && 64BIT
4980f961f9fSEric Biggers	select CRYPTO_NHPOLY1305
4990f961f9fSEric Biggers	help
5000f961f9fSEric Biggers	  AVX2 optimized implementation of the hash function used by the
5010f961f9fSEric Biggers	  Adiantum encryption mode.
5020f961f9fSEric Biggers
503059c2a4dSEric Biggersconfig CRYPTO_ADIANTUM
504059c2a4dSEric Biggers	tristate "Adiantum support"
505059c2a4dSEric Biggers	select CRYPTO_CHACHA20
50648ea8c6eSArd Biesheuvel	select CRYPTO_LIB_POLY1305_GENERIC
507059c2a4dSEric Biggers	select CRYPTO_NHPOLY1305
508c8a3315aSEric Biggers	select CRYPTO_MANAGER
509059c2a4dSEric Biggers	help
510059c2a4dSEric Biggers	  Adiantum is a tweakable, length-preserving encryption mode
511059c2a4dSEric Biggers	  designed for fast and secure disk encryption, especially on
512059c2a4dSEric Biggers	  CPUs without dedicated crypto instructions.  It encrypts
513059c2a4dSEric Biggers	  each sector using the XChaCha12 stream cipher, two passes of
514059c2a4dSEric Biggers	  an ε-almost-∆-universal hash function, and an invocation of
515059c2a4dSEric Biggers	  the AES-256 block cipher on a single 16-byte block.  On CPUs
516059c2a4dSEric Biggers	  without AES instructions, Adiantum is much faster than
517059c2a4dSEric Biggers	  AES-XTS.
518059c2a4dSEric Biggers
519059c2a4dSEric Biggers	  Adiantum's security is provably reducible to that of its
520059c2a4dSEric Biggers	  underlying stream and block ciphers, subject to a security
521059c2a4dSEric Biggers	  bound.  Unlike XTS, Adiantum is a true wide-block encryption
522059c2a4dSEric Biggers	  mode, so it actually provides an even stronger notion of
523059c2a4dSEric Biggers	  security than XTS, subject to the security bound.
524059c2a4dSEric Biggers
525059c2a4dSEric Biggers	  If unsure, say N.
526059c2a4dSEric Biggers
527be1eb7f7SArd Biesheuvelconfig CRYPTO_ESSIV
528be1eb7f7SArd Biesheuvel	tristate "ESSIV support for block encryption"
529be1eb7f7SArd Biesheuvel	select CRYPTO_AUTHENC
530be1eb7f7SArd Biesheuvel	help
531be1eb7f7SArd Biesheuvel	  Encrypted salt-sector initialization vector (ESSIV) is an IV
532be1eb7f7SArd Biesheuvel	  generation method that is used in some cases by fscrypt and/or
533be1eb7f7SArd Biesheuvel	  dm-crypt. It uses the hash of the block encryption key as the
534be1eb7f7SArd Biesheuvel	  symmetric key for a block encryption pass applied to the input
535be1eb7f7SArd Biesheuvel	  IV, making low entropy IV sources more suitable for block
536be1eb7f7SArd Biesheuvel	  encryption.
537be1eb7f7SArd Biesheuvel
538be1eb7f7SArd Biesheuvel	  This driver implements a crypto API template that can be
539ab3d436bSGeert Uytterhoeven	  instantiated either as an skcipher or as an AEAD (depending on the
540be1eb7f7SArd Biesheuvel	  type of the first template argument), and which defers encryption
541be1eb7f7SArd Biesheuvel	  and decryption requests to the encapsulated cipher after applying
542ab3d436bSGeert Uytterhoeven	  ESSIV to the input IV. Note that in the AEAD case, it is assumed
543be1eb7f7SArd Biesheuvel	  that the keys are presented in the same format used by the authenc
544be1eb7f7SArd Biesheuvel	  template, and that the IV appears at the end of the authenticated
545be1eb7f7SArd Biesheuvel	  associated data (AAD) region (which is how dm-crypt uses it.)
546be1eb7f7SArd Biesheuvel
547be1eb7f7SArd Biesheuvel	  Note that the use of ESSIV is not recommended for new deployments,
548be1eb7f7SArd Biesheuvel	  and so this only needs to be enabled when interoperability with
549be1eb7f7SArd Biesheuvel	  existing encrypted volumes of filesystems is required, or when
550be1eb7f7SArd Biesheuvel	  building for a particular system that requires it (e.g., when
551be1eb7f7SArd Biesheuvel	  the SoC in question has accelerated CBC but not XTS, making CBC
552be1eb7f7SArd Biesheuvel	  combined with ESSIV the only feasible mode for h/w accelerated
553be1eb7f7SArd Biesheuvel	  block encryption)
554be1eb7f7SArd Biesheuvel
555584fffc8SSebastian Siewiorcomment "Hash modes"
556584fffc8SSebastian Siewior
55793b5e86aSJussi Kivilinnaconfig CRYPTO_CMAC
55893b5e86aSJussi Kivilinna	tristate "CMAC support"
55993b5e86aSJussi Kivilinna	select CRYPTO_HASH
56093b5e86aSJussi Kivilinna	select CRYPTO_MANAGER
56193b5e86aSJussi Kivilinna	help
56293b5e86aSJussi Kivilinna	  Cipher-based Message Authentication Code (CMAC) specified by
56393b5e86aSJussi Kivilinna	  The National Institute of Standards and Technology (NIST).
56493b5e86aSJussi Kivilinna
56593b5e86aSJussi Kivilinna	  https://tools.ietf.org/html/rfc4493
56693b5e86aSJussi Kivilinna	  http://csrc.nist.gov/publications/nistpubs/800-38B/SP_800-38B.pdf
56793b5e86aSJussi Kivilinna
5681da177e4SLinus Torvaldsconfig CRYPTO_HMAC
5698425165dSHerbert Xu	tristate "HMAC support"
5700796ae06SHerbert Xu	select CRYPTO_HASH
57143518407SHerbert Xu	select CRYPTO_MANAGER
5721da177e4SLinus Torvalds	help
5731da177e4SLinus Torvalds	  HMAC: Keyed-Hashing for Message Authentication (RFC2104).
5741da177e4SLinus Torvalds	  This is required for IPSec.
5751da177e4SLinus Torvalds
576333b0d7eSKazunori MIYAZAWAconfig CRYPTO_XCBC
577333b0d7eSKazunori MIYAZAWA	tristate "XCBC support"
578333b0d7eSKazunori MIYAZAWA	select CRYPTO_HASH
579333b0d7eSKazunori MIYAZAWA	select CRYPTO_MANAGER
580333b0d7eSKazunori MIYAZAWA	help
581333b0d7eSKazunori MIYAZAWA	  XCBC: Keyed-Hashing with encryption algorithm
5829332a9e7SAlexander A. Klimov		https://www.ietf.org/rfc/rfc3566.txt
583333b0d7eSKazunori MIYAZAWA		http://csrc.nist.gov/encryption/modes/proposedmodes/
584333b0d7eSKazunori MIYAZAWA		 xcbc-mac/xcbc-mac-spec.pdf
585333b0d7eSKazunori MIYAZAWA
586f1939f7cSShane Wangconfig CRYPTO_VMAC
587f1939f7cSShane Wang	tristate "VMAC support"
588f1939f7cSShane Wang	select CRYPTO_HASH
589f1939f7cSShane Wang	select CRYPTO_MANAGER
590f1939f7cSShane Wang	help
591f1939f7cSShane Wang	  VMAC is a message authentication algorithm designed for
592f1939f7cSShane Wang	  very high speed on 64-bit architectures.
593f1939f7cSShane Wang
594f1939f7cSShane Wang	  See also:
5959332a9e7SAlexander A. Klimov	  <https://fastcrypto.org/vmac>
596f1939f7cSShane Wang
597584fffc8SSebastian Siewiorcomment "Digest"
598584fffc8SSebastian Siewior
599584fffc8SSebastian Siewiorconfig CRYPTO_CRC32C
600584fffc8SSebastian Siewior	tristate "CRC32c CRC algorithm"
6015773a3e6SHerbert Xu	select CRYPTO_HASH
6026a0962b2SDarrick J. Wong	select CRC32
6031da177e4SLinus Torvalds	help
604584fffc8SSebastian Siewior	  Castagnoli, et al Cyclic Redundancy-Check Algorithm.  Used
605584fffc8SSebastian Siewior	  by iSCSI for header and data digests and by others.
60669c35efcSHerbert Xu	  See Castagnoli93.  Module will be crc32c.
6071da177e4SLinus Torvalds
6088cb51ba8SAustin Zhangconfig CRYPTO_CRC32C_INTEL
6098cb51ba8SAustin Zhang	tristate "CRC32c INTEL hardware acceleration"
6108cb51ba8SAustin Zhang	depends on X86
6118cb51ba8SAustin Zhang	select CRYPTO_HASH
6128cb51ba8SAustin Zhang	help
6138cb51ba8SAustin Zhang	  In Intel processor with SSE4.2 supported, the processor will
6148cb51ba8SAustin Zhang	  support CRC32C implementation using hardware accelerated CRC32
6158cb51ba8SAustin Zhang	  instruction. This option will create 'crc32c-intel' module,
6168cb51ba8SAustin Zhang	  which will enable any routine to use the CRC32 instruction to
6178cb51ba8SAustin Zhang	  gain performance compared with software implementation.
6188cb51ba8SAustin Zhang	  Module will be crc32c-intel.
6198cb51ba8SAustin Zhang
6207cf31864SJean Delvareconfig CRYPTO_CRC32C_VPMSUM
6216dd7a82cSAnton Blanchard	tristate "CRC32c CRC algorithm (powerpc64)"
622c12abf34SMichael Ellerman	depends on PPC64 && ALTIVEC
6236dd7a82cSAnton Blanchard	select CRYPTO_HASH
6246dd7a82cSAnton Blanchard	select CRC32
6256dd7a82cSAnton Blanchard	help
6266dd7a82cSAnton Blanchard	  CRC32c algorithm implemented using vector polynomial multiply-sum
6276dd7a82cSAnton Blanchard	  (vpmsum) instructions, introduced in POWER8. Enable on POWER8
6286dd7a82cSAnton Blanchard	  and newer processors for improved performance.
6296dd7a82cSAnton Blanchard
6306dd7a82cSAnton Blanchard
631442a7c40SDavid S. Millerconfig CRYPTO_CRC32C_SPARC64
632442a7c40SDavid S. Miller	tristate "CRC32c CRC algorithm (SPARC64)"
633442a7c40SDavid S. Miller	depends on SPARC64
634442a7c40SDavid S. Miller	select CRYPTO_HASH
635442a7c40SDavid S. Miller	select CRC32
636442a7c40SDavid S. Miller	help
637442a7c40SDavid S. Miller	  CRC32c CRC algorithm implemented using sparc64 crypto instructions,
638442a7c40SDavid S. Miller	  when available.
639442a7c40SDavid S. Miller
64078c37d19SAlexander Boykoconfig CRYPTO_CRC32
64178c37d19SAlexander Boyko	tristate "CRC32 CRC algorithm"
64278c37d19SAlexander Boyko	select CRYPTO_HASH
64378c37d19SAlexander Boyko	select CRC32
64478c37d19SAlexander Boyko	help
64578c37d19SAlexander Boyko	  CRC-32-IEEE 802.3 cyclic redundancy-check algorithm.
64678c37d19SAlexander Boyko	  Shash crypto api wrappers to crc32_le function.
64778c37d19SAlexander Boyko
64878c37d19SAlexander Boykoconfig CRYPTO_CRC32_PCLMUL
64978c37d19SAlexander Boyko	tristate "CRC32 PCLMULQDQ hardware acceleration"
65078c37d19SAlexander Boyko	depends on X86
65178c37d19SAlexander Boyko	select CRYPTO_HASH
65278c37d19SAlexander Boyko	select CRC32
65378c37d19SAlexander Boyko	help
65478c37d19SAlexander Boyko	  From Intel Westmere and AMD Bulldozer processor with SSE4.2
65578c37d19SAlexander Boyko	  and PCLMULQDQ supported, the processor will support
65678c37d19SAlexander Boyko	  CRC32 PCLMULQDQ implementation using hardware accelerated PCLMULQDQ
657af8cb01fShaco	  instruction. This option will create 'crc32-pclmul' module,
65878c37d19SAlexander Boyko	  which will enable any routine to use the CRC-32-IEEE 802.3 checksum
65978c37d19SAlexander Boyko	  and gain better performance as compared with the table implementation.
66078c37d19SAlexander Boyko
6614a5dc51eSMarcin Nowakowskiconfig CRYPTO_CRC32_MIPS
6624a5dc51eSMarcin Nowakowski	tristate "CRC32c and CRC32 CRC algorithm (MIPS)"
6634a5dc51eSMarcin Nowakowski	depends on MIPS_CRC_SUPPORT
6644a5dc51eSMarcin Nowakowski	select CRYPTO_HASH
6654a5dc51eSMarcin Nowakowski	help
6664a5dc51eSMarcin Nowakowski	  CRC32c and CRC32 CRC algorithms implemented using mips crypto
6674a5dc51eSMarcin Nowakowski	  instructions, when available.
6684a5dc51eSMarcin Nowakowski
669*b7133757SJason A. Donenfeldconfig CRYPTO_CRC32_S390
670*b7133757SJason A. Donenfeld	tristate "CRC-32 algorithms"
671*b7133757SJason A. Donenfeld	depends on S390
672*b7133757SJason A. Donenfeld	select CRYPTO_HASH
673*b7133757SJason A. Donenfeld	select CRC32
674*b7133757SJason A. Donenfeld	help
675*b7133757SJason A. Donenfeld	  Select this option if you want to use hardware accelerated
676*b7133757SJason A. Donenfeld	  implementations of CRC algorithms.  With this option, you
677*b7133757SJason A. Donenfeld	  can optimize the computation of CRC-32 (IEEE 802.3 Ethernet)
678*b7133757SJason A. Donenfeld	  and CRC-32C (Castagnoli).
679*b7133757SJason A. Donenfeld
680*b7133757SJason A. Donenfeld	  It is available with IBM z13 or later.
6814a5dc51eSMarcin Nowakowski
68267882e76SNikolay Borisovconfig CRYPTO_XXHASH
68367882e76SNikolay Borisov	tristate "xxHash hash algorithm"
68467882e76SNikolay Borisov	select CRYPTO_HASH
68567882e76SNikolay Borisov	select XXHASH
68667882e76SNikolay Borisov	help
68767882e76SNikolay Borisov	  xxHash non-cryptographic hash algorithm. Extremely fast, working at
68867882e76SNikolay Borisov	  speeds close to RAM limits.
68967882e76SNikolay Borisov
69091d68933SDavid Sterbaconfig CRYPTO_BLAKE2B
69191d68933SDavid Sterba	tristate "BLAKE2b digest algorithm"
69291d68933SDavid Sterba	select CRYPTO_HASH
69391d68933SDavid Sterba	help
69491d68933SDavid Sterba	  Implementation of cryptographic hash function BLAKE2b (or just BLAKE2),
69591d68933SDavid Sterba	  optimized for 64bit platforms and can produce digests of any size
69691d68933SDavid Sterba	  between 1 to 64.  The keyed hash is also implemented.
69791d68933SDavid Sterba
69891d68933SDavid Sterba	  This module provides the following algorithms:
69991d68933SDavid Sterba
70091d68933SDavid Sterba	  - blake2b-160
70191d68933SDavid Sterba	  - blake2b-256
70291d68933SDavid Sterba	  - blake2b-384
70391d68933SDavid Sterba	  - blake2b-512
70491d68933SDavid Sterba
70591d68933SDavid Sterba	  See https://blake2.net for further information.
70691d68933SDavid Sterba
7077f9b0880SArd Biesheuvelconfig CRYPTO_BLAKE2S
7087f9b0880SArd Biesheuvel	tristate "BLAKE2s digest algorithm"
7097f9b0880SArd Biesheuvel	select CRYPTO_LIB_BLAKE2S_GENERIC
7107f9b0880SArd Biesheuvel	select CRYPTO_HASH
7117f9b0880SArd Biesheuvel	help
7127f9b0880SArd Biesheuvel	  Implementation of cryptographic hash function BLAKE2s
7137f9b0880SArd Biesheuvel	  optimized for 8-32bit platforms and can produce digests of any size
7147f9b0880SArd Biesheuvel	  between 1 to 32.  The keyed hash is also implemented.
7157f9b0880SArd Biesheuvel
7167f9b0880SArd Biesheuvel	  This module provides the following algorithms:
7177f9b0880SArd Biesheuvel
7187f9b0880SArd Biesheuvel	  - blake2s-128
7197f9b0880SArd Biesheuvel	  - blake2s-160
7207f9b0880SArd Biesheuvel	  - blake2s-224
7217f9b0880SArd Biesheuvel	  - blake2s-256
7227f9b0880SArd Biesheuvel
7237f9b0880SArd Biesheuvel	  See https://blake2.net for further information.
7247f9b0880SArd Biesheuvel
725ed0356edSJason A. Donenfeldconfig CRYPTO_BLAKE2S_X86
726ed0356edSJason A. Donenfeld	tristate "BLAKE2s digest algorithm (x86 accelerated version)"
727ed0356edSJason A. Donenfeld	depends on X86 && 64BIT
728ed0356edSJason A. Donenfeld	select CRYPTO_LIB_BLAKE2S_GENERIC
729ed0356edSJason A. Donenfeld	select CRYPTO_ARCH_HAVE_LIB_BLAKE2S
730ed0356edSJason A. Donenfeld
73168411521SHerbert Xuconfig CRYPTO_CRCT10DIF
73268411521SHerbert Xu	tristate "CRCT10DIF algorithm"
73368411521SHerbert Xu	select CRYPTO_HASH
73468411521SHerbert Xu	help
73568411521SHerbert Xu	  CRC T10 Data Integrity Field computation is being cast as
73668411521SHerbert Xu	  a crypto transform.  This allows for faster crc t10 diff
73768411521SHerbert Xu	  transforms to be used if they are available.
73868411521SHerbert Xu
73968411521SHerbert Xuconfig CRYPTO_CRCT10DIF_PCLMUL
74068411521SHerbert Xu	tristate "CRCT10DIF PCLMULQDQ hardware acceleration"
74168411521SHerbert Xu	depends on X86 && 64BIT && CRC_T10DIF
74268411521SHerbert Xu	select CRYPTO_HASH
74368411521SHerbert Xu	help
74468411521SHerbert Xu	  For x86_64 processors with SSE4.2 and PCLMULQDQ supported,
74568411521SHerbert Xu	  CRC T10 DIF PCLMULQDQ computation can be hardware
74668411521SHerbert Xu	  accelerated PCLMULQDQ instruction. This option will create
747af8cb01fShaco	  'crct10dif-pclmul' module, which is faster when computing the
74868411521SHerbert Xu	  crct10dif checksum as compared with the generic table implementation.
74968411521SHerbert Xu
750b01df1c1SDaniel Axtensconfig CRYPTO_CRCT10DIF_VPMSUM
751b01df1c1SDaniel Axtens	tristate "CRC32T10DIF powerpc64 hardware acceleration"
752b01df1c1SDaniel Axtens	depends on PPC64 && ALTIVEC && CRC_T10DIF
753b01df1c1SDaniel Axtens	select CRYPTO_HASH
754b01df1c1SDaniel Axtens	help
755b01df1c1SDaniel Axtens	  CRC10T10DIF algorithm implemented using vector polynomial
756b01df1c1SDaniel Axtens	  multiply-sum (vpmsum) instructions, introduced in POWER8. Enable on
757b01df1c1SDaniel Axtens	  POWER8 and newer processors for improved performance.
758b01df1c1SDaniel Axtens
759f3813f4bSKeith Buschconfig CRYPTO_CRC64_ROCKSOFT
760f3813f4bSKeith Busch	tristate "Rocksoft Model CRC64 algorithm"
761f3813f4bSKeith Busch	depends on CRC64
762f3813f4bSKeith Busch	select CRYPTO_HASH
763f3813f4bSKeith Busch
764146c8688SDaniel Axtensconfig CRYPTO_VPMSUM_TESTER
765146c8688SDaniel Axtens	tristate "Powerpc64 vpmsum hardware acceleration tester"
766146c8688SDaniel Axtens	depends on CRYPTO_CRCT10DIF_VPMSUM && CRYPTO_CRC32C_VPMSUM
767146c8688SDaniel Axtens	help
768146c8688SDaniel Axtens	  Stress test for CRC32c and CRC-T10DIF algorithms implemented with
769146c8688SDaniel Axtens	  POWER8 vpmsum instructions.
770146c8688SDaniel Axtens	  Unless you are testing these algorithms, you don't need this.
771146c8688SDaniel Axtens
7722cdc6899SHuang Yingconfig CRYPTO_GHASH
7738dfa20fcSEric Biggers	tristate "GHASH hash function"
7742cdc6899SHuang Ying	select CRYPTO_GF128MUL
775578c60fbSArnd Bergmann	select CRYPTO_HASH
7762cdc6899SHuang Ying	help
7778dfa20fcSEric Biggers	  GHASH is the hash function used in GCM (Galois/Counter Mode).
7788dfa20fcSEric Biggers	  It is not a general-purpose cryptographic hash function.
7792cdc6899SHuang Ying
780f979e014SMartin Williconfig CRYPTO_POLY1305
781f979e014SMartin Willi	tristate "Poly1305 authenticator algorithm"
782578c60fbSArnd Bergmann	select CRYPTO_HASH
78348ea8c6eSArd Biesheuvel	select CRYPTO_LIB_POLY1305_GENERIC
784f979e014SMartin Willi	help
785f979e014SMartin Willi	  Poly1305 authenticator algorithm, RFC7539.
786f979e014SMartin Willi
787f979e014SMartin Willi	  Poly1305 is an authenticator algorithm designed by Daniel J. Bernstein.
788f979e014SMartin Willi	  It is used for the ChaCha20-Poly1305 AEAD, specified in RFC7539 for use
789f979e014SMartin Willi	  in IETF protocols. This is the portable C implementation of Poly1305.
790f979e014SMartin Willi
791c70f4abeSMartin Williconfig CRYPTO_POLY1305_X86_64
792b1ccc8f4SMartin Willi	tristate "Poly1305 authenticator algorithm (x86_64/SSE2/AVX2)"
793c70f4abeSMartin Willi	depends on X86 && 64BIT
7941b2c6a51SArd Biesheuvel	select CRYPTO_LIB_POLY1305_GENERIC
795f0e89bcfSArd Biesheuvel	select CRYPTO_ARCH_HAVE_LIB_POLY1305
796c70f4abeSMartin Willi	help
797c70f4abeSMartin Willi	  Poly1305 authenticator algorithm, RFC7539.
798c70f4abeSMartin Willi
799c70f4abeSMartin Willi	  Poly1305 is an authenticator algorithm designed by Daniel J. Bernstein.
800c70f4abeSMartin Willi	  It is used for the ChaCha20-Poly1305 AEAD, specified in RFC7539 for use
801c70f4abeSMartin Willi	  in IETF protocols. This is the x86_64 assembler implementation using SIMD
802c70f4abeSMartin Willi	  instructions.
803c70f4abeSMartin Willi
804a11d055eSArd Biesheuvelconfig CRYPTO_POLY1305_MIPS
805a11d055eSArd Biesheuvel	tristate "Poly1305 authenticator algorithm (MIPS optimized)"
8066c810cf2SMaciej W. Rozycki	depends on MIPS
807a11d055eSArd Biesheuvel	select CRYPTO_ARCH_HAVE_LIB_POLY1305
808a11d055eSArd Biesheuvel
8091da177e4SLinus Torvaldsconfig CRYPTO_MD4
8101da177e4SLinus Torvalds	tristate "MD4 digest algorithm"
811808a1763SAdrian-Ken Rueegsegger	select CRYPTO_HASH
8121da177e4SLinus Torvalds	help
8131da177e4SLinus Torvalds	  MD4 message digest algorithm (RFC1320).
8141da177e4SLinus Torvalds
8151da177e4SLinus Torvaldsconfig CRYPTO_MD5
8161da177e4SLinus Torvalds	tristate "MD5 digest algorithm"
81714b75ba7SAdrian-Ken Rueegsegger	select CRYPTO_HASH
8181da177e4SLinus Torvalds	help
8191da177e4SLinus Torvalds	  MD5 message digest algorithm (RFC1321).
8201da177e4SLinus Torvalds
821d69e75deSAaro Koskinenconfig CRYPTO_MD5_OCTEON
822d69e75deSAaro Koskinen	tristate "MD5 digest algorithm (OCTEON)"
823d69e75deSAaro Koskinen	depends on CPU_CAVIUM_OCTEON
824d69e75deSAaro Koskinen	select CRYPTO_MD5
825d69e75deSAaro Koskinen	select CRYPTO_HASH
826d69e75deSAaro Koskinen	help
827d69e75deSAaro Koskinen	  MD5 message digest algorithm (RFC1321) implemented
828d69e75deSAaro Koskinen	  using OCTEON crypto instructions, when available.
829d69e75deSAaro Koskinen
830e8e59953SMarkus Stockhausenconfig CRYPTO_MD5_PPC
831e8e59953SMarkus Stockhausen	tristate "MD5 digest algorithm (PPC)"
832e8e59953SMarkus Stockhausen	depends on PPC
833e8e59953SMarkus Stockhausen	select CRYPTO_HASH
834e8e59953SMarkus Stockhausen	help
835e8e59953SMarkus Stockhausen	  MD5 message digest algorithm (RFC1321) implemented
836e8e59953SMarkus Stockhausen	  in PPC assembler.
837e8e59953SMarkus Stockhausen
838fa4dfedcSDavid S. Millerconfig CRYPTO_MD5_SPARC64
839fa4dfedcSDavid S. Miller	tristate "MD5 digest algorithm (SPARC64)"
840fa4dfedcSDavid S. Miller	depends on SPARC64
841fa4dfedcSDavid S. Miller	select CRYPTO_MD5
842fa4dfedcSDavid S. Miller	select CRYPTO_HASH
843fa4dfedcSDavid S. Miller	help
844fa4dfedcSDavid S. Miller	  MD5 message digest algorithm (RFC1321) implemented
845fa4dfedcSDavid S. Miller	  using sparc64 crypto instructions, when available.
846fa4dfedcSDavid S. Miller
847584fffc8SSebastian Siewiorconfig CRYPTO_MICHAEL_MIC
848584fffc8SSebastian Siewior	tristate "Michael MIC keyed digest algorithm"
84919e2bf14SAdrian-Ken Rueegsegger	select CRYPTO_HASH
850584fffc8SSebastian Siewior	help
851584fffc8SSebastian Siewior	  Michael MIC is used for message integrity protection in TKIP
852584fffc8SSebastian Siewior	  (IEEE 802.11i). This algorithm is required for TKIP, but it
853584fffc8SSebastian Siewior	  should not be used for other purposes because of the weakness
854584fffc8SSebastian Siewior	  of the algorithm.
855584fffc8SSebastian Siewior
85682798f90SAdrian-Ken Rueegseggerconfig CRYPTO_RMD160
85782798f90SAdrian-Ken Rueegsegger	tristate "RIPEMD-160 digest algorithm"
858e5835fbaSHerbert Xu	select CRYPTO_HASH
85982798f90SAdrian-Ken Rueegsegger	help
86082798f90SAdrian-Ken Rueegsegger	  RIPEMD-160 (ISO/IEC 10118-3:2004).
86182798f90SAdrian-Ken Rueegsegger
86282798f90SAdrian-Ken Rueegsegger	  RIPEMD-160 is a 160-bit cryptographic hash function. It is intended
86382798f90SAdrian-Ken Rueegsegger	  to be used as a secure replacement for the 128-bit hash functions
864b6d44341SAdrian Bunk	  MD4, MD5 and it's predecessor RIPEMD
865b6d44341SAdrian Bunk	  (not to be confused with RIPEMD-128).
86682798f90SAdrian-Ken Rueegsegger
867b6d44341SAdrian Bunk	  It's speed is comparable to SHA1 and there are no known attacks
868b6d44341SAdrian Bunk	  against RIPEMD-160.
869534fe2c1SAdrian-Ken Rueegsegger
870534fe2c1SAdrian-Ken Rueegsegger	  Developed by Hans Dobbertin, Antoon Bosselaers and Bart Preneel.
8719332a9e7SAlexander A. Klimov	  See <https://homes.esat.kuleuven.be/~bosselae/ripemd160.html>
872534fe2c1SAdrian-Ken Rueegsegger
8731da177e4SLinus Torvaldsconfig CRYPTO_SHA1
8741da177e4SLinus Torvalds	tristate "SHA1 digest algorithm"
87554ccb367SAdrian-Ken Rueegsegger	select CRYPTO_HASH
8761da177e4SLinus Torvalds	help
8771da177e4SLinus Torvalds	  SHA-1 secure hash standard (FIPS 180-1/DFIPS 180-2).
8781da177e4SLinus Torvalds
87966be8951SMathias Krauseconfig CRYPTO_SHA1_SSSE3
880e38b6b7fStim	tristate "SHA1 digest algorithm (SSSE3/AVX/AVX2/SHA-NI)"
88166be8951SMathias Krause	depends on X86 && 64BIT
88266be8951SMathias Krause	select CRYPTO_SHA1
88366be8951SMathias Krause	select CRYPTO_HASH
88466be8951SMathias Krause	help
88566be8951SMathias Krause	  SHA-1 secure hash standard (FIPS 180-1/DFIPS 180-2) implemented
88666be8951SMathias Krause	  using Supplemental SSE3 (SSSE3) instructions or Advanced Vector
887e38b6b7fStim	  Extensions (AVX/AVX2) or SHA-NI(SHA Extensions New Instructions),
888e38b6b7fStim	  when available.
88966be8951SMathias Krause
8908275d1aaSTim Chenconfig CRYPTO_SHA256_SSSE3
891e38b6b7fStim	tristate "SHA256 digest algorithm (SSSE3/AVX/AVX2/SHA-NI)"
8928275d1aaSTim Chen	depends on X86 && 64BIT
8938275d1aaSTim Chen	select CRYPTO_SHA256
8948275d1aaSTim Chen	select CRYPTO_HASH
8958275d1aaSTim Chen	help
8968275d1aaSTim Chen	  SHA-256 secure hash standard (DFIPS 180-2) implemented
8978275d1aaSTim Chen	  using Supplemental SSE3 (SSSE3) instructions, or Advanced Vector
8988275d1aaSTim Chen	  Extensions version 1 (AVX1), or Advanced Vector Extensions
899e38b6b7fStim	  version 2 (AVX2) instructions, or SHA-NI (SHA Extensions New
900e38b6b7fStim	  Instructions) when available.
9018275d1aaSTim Chen
90287de4579STim Chenconfig CRYPTO_SHA512_SSSE3
90387de4579STim Chen	tristate "SHA512 digest algorithm (SSSE3/AVX/AVX2)"
90487de4579STim Chen	depends on X86 && 64BIT
90587de4579STim Chen	select CRYPTO_SHA512
90687de4579STim Chen	select CRYPTO_HASH
90787de4579STim Chen	help
90887de4579STim Chen	  SHA-512 secure hash standard (DFIPS 180-2) implemented
90987de4579STim Chen	  using Supplemental SSE3 (SSSE3) instructions, or Advanced Vector
91087de4579STim Chen	  Extensions version 1 (AVX1), or Advanced Vector Extensions
91187de4579STim Chen	  version 2 (AVX2) instructions, when available.
91287de4579STim Chen
913*b7133757SJason A. Donenfeldconfig CRYPTO_SHA512_S390
914*b7133757SJason A. Donenfeld	tristate "SHA384 and SHA512 digest algorithm"
915*b7133757SJason A. Donenfeld	depends on S390
916*b7133757SJason A. Donenfeld	select CRYPTO_HASH
917*b7133757SJason A. Donenfeld	help
918*b7133757SJason A. Donenfeld	  This is the s390 hardware accelerated implementation of the
919*b7133757SJason A. Donenfeld	  SHA512 secure hash standard.
920*b7133757SJason A. Donenfeld
921*b7133757SJason A. Donenfeld	  It is available as of z10.
922*b7133757SJason A. Donenfeld
923efdb6f6eSAaro Koskinenconfig CRYPTO_SHA1_OCTEON
924efdb6f6eSAaro Koskinen	tristate "SHA1 digest algorithm (OCTEON)"
925efdb6f6eSAaro Koskinen	depends on CPU_CAVIUM_OCTEON
926efdb6f6eSAaro Koskinen	select CRYPTO_SHA1
927efdb6f6eSAaro Koskinen	select CRYPTO_HASH
928efdb6f6eSAaro Koskinen	help
929efdb6f6eSAaro Koskinen	  SHA-1 secure hash standard (FIPS 180-1/DFIPS 180-2) implemented
930efdb6f6eSAaro Koskinen	  using OCTEON crypto instructions, when available.
931efdb6f6eSAaro Koskinen
9324ff28d4cSDavid S. Millerconfig CRYPTO_SHA1_SPARC64
9334ff28d4cSDavid S. Miller	tristate "SHA1 digest algorithm (SPARC64)"
9344ff28d4cSDavid S. Miller	depends on SPARC64
9354ff28d4cSDavid S. Miller	select CRYPTO_SHA1
9364ff28d4cSDavid S. Miller	select CRYPTO_HASH
9374ff28d4cSDavid S. Miller	help
9384ff28d4cSDavid S. Miller	  SHA-1 secure hash standard (FIPS 180-1/DFIPS 180-2) implemented
9394ff28d4cSDavid S. Miller	  using sparc64 crypto instructions, when available.
9404ff28d4cSDavid S. Miller
941323a6bf1SMichael Ellermanconfig CRYPTO_SHA1_PPC
942323a6bf1SMichael Ellerman	tristate "SHA1 digest algorithm (powerpc)"
943323a6bf1SMichael Ellerman	depends on PPC
944323a6bf1SMichael Ellerman	help
945323a6bf1SMichael Ellerman	  This is the powerpc hardware accelerated implementation of the
946323a6bf1SMichael Ellerman	  SHA-1 secure hash standard (FIPS 180-1/DFIPS 180-2).
947323a6bf1SMichael Ellerman
948d9850fc5SMarkus Stockhausenconfig CRYPTO_SHA1_PPC_SPE
949d9850fc5SMarkus Stockhausen	tristate "SHA1 digest algorithm (PPC SPE)"
950d9850fc5SMarkus Stockhausen	depends on PPC && SPE
951d9850fc5SMarkus Stockhausen	help
952d9850fc5SMarkus Stockhausen	  SHA-1 secure hash standard (DFIPS 180-4) implemented
953d9850fc5SMarkus Stockhausen	  using powerpc SPE SIMD instruction set.
954d9850fc5SMarkus Stockhausen
955*b7133757SJason A. Donenfeldconfig CRYPTO_SHA1_S390
956*b7133757SJason A. Donenfeld	tristate "SHA1 digest algorithm"
957*b7133757SJason A. Donenfeld	depends on S390
958*b7133757SJason A. Donenfeld	select CRYPTO_HASH
959*b7133757SJason A. Donenfeld	help
960*b7133757SJason A. Donenfeld	  This is the s390 hardware accelerated implementation of the
961*b7133757SJason A. Donenfeld	  SHA-1 secure hash standard (FIPS 180-1/DFIPS 180-2).
962*b7133757SJason A. Donenfeld
963*b7133757SJason A. Donenfeld	  It is available as of z990.
964*b7133757SJason A. Donenfeld
9651da177e4SLinus Torvaldsconfig CRYPTO_SHA256
966cd12fb90SJonathan Lynch	tristate "SHA224 and SHA256 digest algorithm"
96750e109b5SAdrian-Ken Rueegsegger	select CRYPTO_HASH
96808c327f6SHans de Goede	select CRYPTO_LIB_SHA256
9691da177e4SLinus Torvalds	help
9701da177e4SLinus Torvalds	  SHA256 secure hash standard (DFIPS 180-2).
9711da177e4SLinus Torvalds
9721da177e4SLinus Torvalds	  This version of SHA implements a 256 bit hash with 128 bits of
9731da177e4SLinus Torvalds	  security against collision attacks.
9741da177e4SLinus Torvalds
975cd12fb90SJonathan Lynch	  This code also includes SHA-224, a 224 bit hash with 112 bits
976cd12fb90SJonathan Lynch	  of security against collision attacks.
977cd12fb90SJonathan Lynch
9782ecc1e95SMarkus Stockhausenconfig CRYPTO_SHA256_PPC_SPE
9792ecc1e95SMarkus Stockhausen	tristate "SHA224 and SHA256 digest algorithm (PPC SPE)"
9802ecc1e95SMarkus Stockhausen	depends on PPC && SPE
9812ecc1e95SMarkus Stockhausen	select CRYPTO_SHA256
9822ecc1e95SMarkus Stockhausen	select CRYPTO_HASH
9832ecc1e95SMarkus Stockhausen	help
9842ecc1e95SMarkus Stockhausen	  SHA224 and SHA256 secure hash standard (DFIPS 180-2)
9852ecc1e95SMarkus Stockhausen	  implemented using powerpc SPE SIMD instruction set.
9862ecc1e95SMarkus Stockhausen
987efdb6f6eSAaro Koskinenconfig CRYPTO_SHA256_OCTEON
988efdb6f6eSAaro Koskinen	tristate "SHA224 and SHA256 digest algorithm (OCTEON)"
989efdb6f6eSAaro Koskinen	depends on CPU_CAVIUM_OCTEON
990efdb6f6eSAaro Koskinen	select CRYPTO_SHA256
991efdb6f6eSAaro Koskinen	select CRYPTO_HASH
992efdb6f6eSAaro Koskinen	help
993efdb6f6eSAaro Koskinen	  SHA-256 secure hash standard (DFIPS 180-2) implemented
994efdb6f6eSAaro Koskinen	  using OCTEON crypto instructions, when available.
995efdb6f6eSAaro Koskinen
99686c93b24SDavid S. Millerconfig CRYPTO_SHA256_SPARC64
99786c93b24SDavid S. Miller	tristate "SHA224 and SHA256 digest algorithm (SPARC64)"
99886c93b24SDavid S. Miller	depends on SPARC64
99986c93b24SDavid S. Miller	select CRYPTO_SHA256
100086c93b24SDavid S. Miller	select CRYPTO_HASH
100186c93b24SDavid S. Miller	help
100286c93b24SDavid S. Miller	  SHA-256 secure hash standard (DFIPS 180-2) implemented
100386c93b24SDavid S. Miller	  using sparc64 crypto instructions, when available.
100486c93b24SDavid S. Miller
1005*b7133757SJason A. Donenfeldconfig CRYPTO_SHA256_S390
1006*b7133757SJason A. Donenfeld	tristate "SHA256 digest algorithm"
1007*b7133757SJason A. Donenfeld	depends on S390
1008*b7133757SJason A. Donenfeld	select CRYPTO_HASH
1009*b7133757SJason A. Donenfeld	help
1010*b7133757SJason A. Donenfeld	  This is the s390 hardware accelerated implementation of the
1011*b7133757SJason A. Donenfeld	  SHA256 secure hash standard (DFIPS 180-2).
1012*b7133757SJason A. Donenfeld
1013*b7133757SJason A. Donenfeld	  It is available as of z9.
1014*b7133757SJason A. Donenfeld
10151da177e4SLinus Torvaldsconfig CRYPTO_SHA512
10161da177e4SLinus Torvalds	tristate "SHA384 and SHA512 digest algorithms"
1017bd9d20dbSAdrian-Ken Rueegsegger	select CRYPTO_HASH
10181da177e4SLinus Torvalds	help
10191da177e4SLinus Torvalds	  SHA512 secure hash standard (DFIPS 180-2).
10201da177e4SLinus Torvalds
10211da177e4SLinus Torvalds	  This version of SHA implements a 512 bit hash with 256 bits of
10221da177e4SLinus Torvalds	  security against collision attacks.
10231da177e4SLinus Torvalds
10241da177e4SLinus Torvalds	  This code also includes SHA-384, a 384 bit hash with 192 bits
10251da177e4SLinus Torvalds	  of security against collision attacks.
10261da177e4SLinus Torvalds
1027efdb6f6eSAaro Koskinenconfig CRYPTO_SHA512_OCTEON
1028efdb6f6eSAaro Koskinen	tristate "SHA384 and SHA512 digest algorithms (OCTEON)"
1029efdb6f6eSAaro Koskinen	depends on CPU_CAVIUM_OCTEON
1030efdb6f6eSAaro Koskinen	select CRYPTO_SHA512
1031efdb6f6eSAaro Koskinen	select CRYPTO_HASH
1032efdb6f6eSAaro Koskinen	help
1033efdb6f6eSAaro Koskinen	  SHA-512 secure hash standard (DFIPS 180-2) implemented
1034efdb6f6eSAaro Koskinen	  using OCTEON crypto instructions, when available.
1035efdb6f6eSAaro Koskinen
1036775e0c69SDavid S. Millerconfig CRYPTO_SHA512_SPARC64
1037775e0c69SDavid S. Miller	tristate "SHA384 and SHA512 digest algorithm (SPARC64)"
1038775e0c69SDavid S. Miller	depends on SPARC64
1039775e0c69SDavid S. Miller	select CRYPTO_SHA512
1040775e0c69SDavid S. Miller	select CRYPTO_HASH
1041775e0c69SDavid S. Miller	help
1042775e0c69SDavid S. Miller	  SHA-512 secure hash standard (DFIPS 180-2) implemented
1043775e0c69SDavid S. Miller	  using sparc64 crypto instructions, when available.
1044775e0c69SDavid S. Miller
104553964b9eSJeff Garzikconfig CRYPTO_SHA3
104653964b9eSJeff Garzik	tristate "SHA3 digest algorithm"
104753964b9eSJeff Garzik	select CRYPTO_HASH
104853964b9eSJeff Garzik	help
104953964b9eSJeff Garzik	  SHA-3 secure hash standard (DFIPS 202). It's based on
105053964b9eSJeff Garzik	  cryptographic sponge function family called Keccak.
105153964b9eSJeff Garzik
105253964b9eSJeff Garzik	  References:
105353964b9eSJeff Garzik	  http://keccak.noekeon.org/
105453964b9eSJeff Garzik
1055*b7133757SJason A. Donenfeldconfig CRYPTO_SHA3_256_S390
1056*b7133757SJason A. Donenfeld	tristate "SHA3_224 and SHA3_256 digest algorithm"
1057*b7133757SJason A. Donenfeld	depends on S390
1058*b7133757SJason A. Donenfeld	select CRYPTO_HASH
1059*b7133757SJason A. Donenfeld	help
1060*b7133757SJason A. Donenfeld	  This is the s390 hardware accelerated implementation of the
1061*b7133757SJason A. Donenfeld	  SHA3_256 secure hash standard.
1062*b7133757SJason A. Donenfeld
1063*b7133757SJason A. Donenfeld	  It is available as of z14.
1064*b7133757SJason A. Donenfeld
1065*b7133757SJason A. Donenfeldconfig CRYPTO_SHA3_512_S390
1066*b7133757SJason A. Donenfeld	tristate "SHA3_384 and SHA3_512 digest algorithm"
1067*b7133757SJason A. Donenfeld	depends on S390
1068*b7133757SJason A. Donenfeld	select CRYPTO_HASH
1069*b7133757SJason A. Donenfeld	help
1070*b7133757SJason A. Donenfeld	  This is the s390 hardware accelerated implementation of the
1071*b7133757SJason A. Donenfeld	  SHA3_512 secure hash standard.
1072*b7133757SJason A. Donenfeld
1073*b7133757SJason A. Donenfeld	  It is available as of z14.
1074*b7133757SJason A. Donenfeld
10754f0fc160SGilad Ben-Yossefconfig CRYPTO_SM3
1076d2825fa9SJason A. Donenfeld	tristate
1077d2825fa9SJason A. Donenfeld
1078d2825fa9SJason A. Donenfeldconfig CRYPTO_SM3_GENERIC
10794f0fc160SGilad Ben-Yossef	tristate "SM3 digest algorithm"
10804f0fc160SGilad Ben-Yossef	select CRYPTO_HASH
1081d2825fa9SJason A. Donenfeld	select CRYPTO_SM3
10824f0fc160SGilad Ben-Yossef	help
10834f0fc160SGilad Ben-Yossef	  SM3 secure hash function as defined by OSCCA GM/T 0004-2012 SM3).
10844f0fc160SGilad Ben-Yossef	  It is part of the Chinese Commercial Cryptography suite.
10854f0fc160SGilad Ben-Yossef
10864f0fc160SGilad Ben-Yossef	  References:
10874f0fc160SGilad Ben-Yossef	  http://www.oscca.gov.cn/UpFile/20101222141857786.pdf
10884f0fc160SGilad Ben-Yossef	  https://datatracker.ietf.org/doc/html/draft-shen-sm3-hash
10894f0fc160SGilad Ben-Yossef
1090930ab34dSTianjia Zhangconfig CRYPTO_SM3_AVX_X86_64
1091930ab34dSTianjia Zhang	tristate "SM3 digest algorithm (x86_64/AVX)"
1092930ab34dSTianjia Zhang	depends on X86 && 64BIT
1093930ab34dSTianjia Zhang	select CRYPTO_HASH
1094d2825fa9SJason A. Donenfeld	select CRYPTO_SM3
1095930ab34dSTianjia Zhang	help
1096930ab34dSTianjia Zhang	  SM3 secure hash function as defined by OSCCA GM/T 0004-2012 SM3).
1097930ab34dSTianjia Zhang	  It is part of the Chinese Commercial Cryptography suite. This is
1098930ab34dSTianjia Zhang	  SM3 optimized implementation using Advanced Vector Extensions (AVX)
1099930ab34dSTianjia Zhang	  when available.
1100930ab34dSTianjia Zhang
1101930ab34dSTianjia Zhang	  If unsure, say N.
1102930ab34dSTianjia Zhang
1103fe18957eSVitaly Chikunovconfig CRYPTO_STREEBOG
1104fe18957eSVitaly Chikunov	tristate "Streebog Hash Function"
1105fe18957eSVitaly Chikunov	select CRYPTO_HASH
1106fe18957eSVitaly Chikunov	help
1107fe18957eSVitaly Chikunov	  Streebog Hash Function (GOST R 34.11-2012, RFC 6986) is one of the Russian
1108fe18957eSVitaly Chikunov	  cryptographic standard algorithms (called GOST algorithms).
1109fe18957eSVitaly Chikunov	  This setting enables two hash algorithms with 256 and 512 bits output.
1110fe18957eSVitaly Chikunov
1111fe18957eSVitaly Chikunov	  References:
1112fe18957eSVitaly Chikunov	  https://tc26.ru/upload/iblock/fed/feddbb4d26b685903faa2ba11aea43f6.pdf
1113fe18957eSVitaly Chikunov	  https://tools.ietf.org/html/rfc6986
1114fe18957eSVitaly Chikunov
1115584fffc8SSebastian Siewiorconfig CRYPTO_WP512
1116584fffc8SSebastian Siewior	tristate "Whirlpool digest algorithms"
11174946510bSAdrian-Ken Rueegsegger	select CRYPTO_HASH
11181da177e4SLinus Torvalds	help
1119584fffc8SSebastian Siewior	  Whirlpool hash algorithm 512, 384 and 256-bit hashes
11201da177e4SLinus Torvalds
1121584fffc8SSebastian Siewior	  Whirlpool-512 is part of the NESSIE cryptographic primitives.
1122584fffc8SSebastian Siewior	  Whirlpool will be part of the ISO/IEC 10118-3:2003(E) standard
11231da177e4SLinus Torvalds
11241da177e4SLinus Torvalds	  See also:
11256d8de74cSJustin P. Mattock	  <http://www.larc.usp.br/~pbarreto/WhirlpoolPage.html>
11261da177e4SLinus Torvalds
11270e1227d3SHuang Yingconfig CRYPTO_GHASH_CLMUL_NI_INTEL
11288dfa20fcSEric Biggers	tristate "GHASH hash function (CLMUL-NI accelerated)"
11298af00860SRichard Weinberger	depends on X86 && 64BIT
11300e1227d3SHuang Ying	select CRYPTO_CRYPTD
11310e1227d3SHuang Ying	help
11328dfa20fcSEric Biggers	  This is the x86_64 CLMUL-NI accelerated implementation of
11338dfa20fcSEric Biggers	  GHASH, the hash function used in GCM (Galois/Counter mode).
11340e1227d3SHuang Ying
1135*b7133757SJason A. Donenfeldconfig CRYPTO_GHASH_S390
1136*b7133757SJason A. Donenfeld	tristate "GHASH hash function"
1137*b7133757SJason A. Donenfeld	depends on S390
1138*b7133757SJason A. Donenfeld	select CRYPTO_HASH
1139*b7133757SJason A. Donenfeld	help
1140*b7133757SJason A. Donenfeld	  This is the s390 hardware accelerated implementation of GHASH,
1141*b7133757SJason A. Donenfeld	  the hash function used in GCM (Galois/Counter mode).
1142*b7133757SJason A. Donenfeld
1143*b7133757SJason A. Donenfeld	  It is available as of z196.
1144*b7133757SJason A. Donenfeld
1145584fffc8SSebastian Siewiorcomment "Ciphers"
11461da177e4SLinus Torvalds
11471da177e4SLinus Torvaldsconfig CRYPTO_AES
11481da177e4SLinus Torvalds	tristate "AES cipher algorithms"
1149cce9e06dSHerbert Xu	select CRYPTO_ALGAPI
11505bb12d78SArd Biesheuvel	select CRYPTO_LIB_AES
11511da177e4SLinus Torvalds	help
11521da177e4SLinus Torvalds	  AES cipher algorithms (FIPS-197). AES uses the Rijndael
11531da177e4SLinus Torvalds	  algorithm.
11541da177e4SLinus Torvalds
11551da177e4SLinus Torvalds	  Rijndael appears to be consistently a very good performer in
11561da177e4SLinus Torvalds	  both hardware and software across a wide range of computing
11571da177e4SLinus Torvalds	  environments regardless of its use in feedback or non-feedback
11581da177e4SLinus Torvalds	  modes. Its key setup time is excellent, and its key agility is
11591da177e4SLinus Torvalds	  good. Rijndael's very low memory requirements make it very well
11601da177e4SLinus Torvalds	  suited for restricted-space environments, in which it also
11611da177e4SLinus Torvalds	  demonstrates excellent performance. Rijndael's operations are
11621da177e4SLinus Torvalds	  among the easiest to defend against power and timing attacks.
11631da177e4SLinus Torvalds
11641da177e4SLinus Torvalds	  The AES specifies three key sizes: 128, 192 and 256 bits
11651da177e4SLinus Torvalds
11661da177e4SLinus Torvalds	  See <http://csrc.nist.gov/CryptoToolkit/aes/> for more information.
11671da177e4SLinus Torvalds
1168b5e0b032SArd Biesheuvelconfig CRYPTO_AES_TI
1169b5e0b032SArd Biesheuvel	tristate "Fixed time AES cipher"
1170b5e0b032SArd Biesheuvel	select CRYPTO_ALGAPI
1171e59c1c98SArd Biesheuvel	select CRYPTO_LIB_AES
1172b5e0b032SArd Biesheuvel	help
1173b5e0b032SArd Biesheuvel	  This is a generic implementation of AES that attempts to eliminate
1174b5e0b032SArd Biesheuvel	  data dependent latencies as much as possible without affecting
1175b5e0b032SArd Biesheuvel	  performance too much. It is intended for use by the generic CCM
1176b5e0b032SArd Biesheuvel	  and GCM drivers, and other CTR or CMAC/XCBC based modes that rely
1177b5e0b032SArd Biesheuvel	  solely on encryption (although decryption is supported as well, but
1178b5e0b032SArd Biesheuvel	  with a more dramatic performance hit)
1179b5e0b032SArd Biesheuvel
1180b5e0b032SArd Biesheuvel	  Instead of using 16 lookup tables of 1 KB each, (8 for encryption and
1181b5e0b032SArd Biesheuvel	  8 for decryption), this implementation only uses just two S-boxes of
1182b5e0b032SArd Biesheuvel	  256 bytes each, and attempts to eliminate data dependent latencies by
1183b5e0b032SArd Biesheuvel	  prefetching the entire table into the cache at the start of each
11840a6a40c2SEric Biggers	  block. Interrupts are also disabled to avoid races where cachelines
11850a6a40c2SEric Biggers	  are evicted when the CPU is interrupted to do something else.
1186b5e0b032SArd Biesheuvel
118754b6a1bdSHuang Yingconfig CRYPTO_AES_NI_INTEL
118854b6a1bdSHuang Ying	tristate "AES cipher algorithms (AES-NI)"
11898af00860SRichard Weinberger	depends on X86
119085671860SHerbert Xu	select CRYPTO_AEAD
11912c53fd11SArd Biesheuvel	select CRYPTO_LIB_AES
119254b6a1bdSHuang Ying	select CRYPTO_ALGAPI
1193b95bba5dSEric Biggers	select CRYPTO_SKCIPHER
119485671860SHerbert Xu	select CRYPTO_SIMD
119554b6a1bdSHuang Ying	help
119654b6a1bdSHuang Ying	  Use Intel AES-NI instructions for AES algorithm.
119754b6a1bdSHuang Ying
119854b6a1bdSHuang Ying	  AES cipher algorithms (FIPS-197). AES uses the Rijndael
119954b6a1bdSHuang Ying	  algorithm.
120054b6a1bdSHuang Ying
120154b6a1bdSHuang Ying	  Rijndael appears to be consistently a very good performer in
120254b6a1bdSHuang Ying	  both hardware and software across a wide range of computing
120354b6a1bdSHuang Ying	  environments regardless of its use in feedback or non-feedback
120454b6a1bdSHuang Ying	  modes. Its key setup time is excellent, and its key agility is
120554b6a1bdSHuang Ying	  good. Rijndael's very low memory requirements make it very well
120654b6a1bdSHuang Ying	  suited for restricted-space environments, in which it also
120754b6a1bdSHuang Ying	  demonstrates excellent performance. Rijndael's operations are
120854b6a1bdSHuang Ying	  among the easiest to defend against power and timing attacks.
120954b6a1bdSHuang Ying
121054b6a1bdSHuang Ying	  The AES specifies three key sizes: 128, 192 and 256 bits
121154b6a1bdSHuang Ying
121254b6a1bdSHuang Ying	  See <http://csrc.nist.gov/encryption/aes/> for more information.
121354b6a1bdSHuang Ying
12140d258efbSMathias Krause	  In addition to AES cipher algorithm support, the acceleration
12150d258efbSMathias Krause	  for some popular block cipher mode is supported too, including
1216944585a6SArd Biesheuvel	  ECB, CBC, LRW, XTS. The 64 bit version has additional
12170d258efbSMathias Krause	  acceleration for CTR.
12182cf4ac8bSHuang Ying
12199bf4852dSDavid S. Millerconfig CRYPTO_AES_SPARC64
12209bf4852dSDavid S. Miller	tristate "AES cipher algorithms (SPARC64)"
12219bf4852dSDavid S. Miller	depends on SPARC64
1222b95bba5dSEric Biggers	select CRYPTO_SKCIPHER
12239bf4852dSDavid S. Miller	help
12249bf4852dSDavid S. Miller	  Use SPARC64 crypto opcodes for AES algorithm.
12259bf4852dSDavid S. Miller
12269bf4852dSDavid S. Miller	  AES cipher algorithms (FIPS-197). AES uses the Rijndael
12279bf4852dSDavid S. Miller	  algorithm.
12289bf4852dSDavid S. Miller
12299bf4852dSDavid S. Miller	  Rijndael appears to be consistently a very good performer in
12309bf4852dSDavid S. Miller	  both hardware and software across a wide range of computing
12319bf4852dSDavid S. Miller	  environments regardless of its use in feedback or non-feedback
12329bf4852dSDavid S. Miller	  modes. Its key setup time is excellent, and its key agility is
12339bf4852dSDavid S. Miller	  good. Rijndael's very low memory requirements make it very well
12349bf4852dSDavid S. Miller	  suited for restricted-space environments, in which it also
12359bf4852dSDavid S. Miller	  demonstrates excellent performance. Rijndael's operations are
12369bf4852dSDavid S. Miller	  among the easiest to defend against power and timing attacks.
12379bf4852dSDavid S. Miller
12389bf4852dSDavid S. Miller	  The AES specifies three key sizes: 128, 192 and 256 bits
12399bf4852dSDavid S. Miller
12409bf4852dSDavid S. Miller	  See <http://csrc.nist.gov/encryption/aes/> for more information.
12419bf4852dSDavid S. Miller
12429bf4852dSDavid S. Miller	  In addition to AES cipher algorithm support, the acceleration
12439bf4852dSDavid S. Miller	  for some popular block cipher mode is supported too, including
12449bf4852dSDavid S. Miller	  ECB and CBC.
12459bf4852dSDavid S. Miller
1246504c6143SMarkus Stockhausenconfig CRYPTO_AES_PPC_SPE
1247504c6143SMarkus Stockhausen	tristate "AES cipher algorithms (PPC SPE)"
1248504c6143SMarkus Stockhausen	depends on PPC && SPE
1249b95bba5dSEric Biggers	select CRYPTO_SKCIPHER
1250504c6143SMarkus Stockhausen	help
1251504c6143SMarkus Stockhausen	  AES cipher algorithms (FIPS-197). Additionally the acceleration
1252504c6143SMarkus Stockhausen	  for popular block cipher modes ECB, CBC, CTR and XTS is supported.
1253504c6143SMarkus Stockhausen	  This module should only be used for low power (router) devices
1254504c6143SMarkus Stockhausen	  without hardware AES acceleration (e.g. caam crypto). It reduces the
1255504c6143SMarkus Stockhausen	  size of the AES tables from 16KB to 8KB + 256 bytes and mitigates
1256504c6143SMarkus Stockhausen	  timining attacks. Nevertheless it might be not as secure as other
1257504c6143SMarkus Stockhausen	  architecture specific assembler implementations that work on 1KB
1258504c6143SMarkus Stockhausen	  tables or 256 bytes S-boxes.
1259504c6143SMarkus Stockhausen
1260*b7133757SJason A. Donenfeldconfig CRYPTO_AES_S390
1261*b7133757SJason A. Donenfeld	tristate "AES cipher algorithms"
1262*b7133757SJason A. Donenfeld	depends on S390
1263*b7133757SJason A. Donenfeld	select CRYPTO_ALGAPI
1264*b7133757SJason A. Donenfeld	select CRYPTO_SKCIPHER
1265*b7133757SJason A. Donenfeld	help
1266*b7133757SJason A. Donenfeld	  This is the s390 hardware accelerated implementation of the
1267*b7133757SJason A. Donenfeld	  AES cipher algorithms (FIPS-197).
1268*b7133757SJason A. Donenfeld
1269*b7133757SJason A. Donenfeld	  As of z9 the ECB and CBC modes are hardware accelerated
1270*b7133757SJason A. Donenfeld	  for 128 bit keys.
1271*b7133757SJason A. Donenfeld	  As of z10 the ECB and CBC modes are hardware accelerated
1272*b7133757SJason A. Donenfeld	  for all AES key sizes.
1273*b7133757SJason A. Donenfeld	  As of z196 the CTR mode is hardware accelerated for all AES
1274*b7133757SJason A. Donenfeld	  key sizes and XTS mode is hardware accelerated for 256 and
1275*b7133757SJason A. Donenfeld	  512 bit keys.
1276*b7133757SJason A. Donenfeld
12771da177e4SLinus Torvaldsconfig CRYPTO_ANUBIS
12781da177e4SLinus Torvalds	tristate "Anubis cipher algorithm"
12791674aea5SArd Biesheuvel	depends on CRYPTO_USER_API_ENABLE_OBSOLETE
1280cce9e06dSHerbert Xu	select CRYPTO_ALGAPI
12811da177e4SLinus Torvalds	help
12821da177e4SLinus Torvalds	  Anubis cipher algorithm.
12831da177e4SLinus Torvalds
12841da177e4SLinus Torvalds	  Anubis is a variable key length cipher which can use keys from
12851da177e4SLinus Torvalds	  128 bits to 320 bits in length.  It was evaluated as a entrant
12861da177e4SLinus Torvalds	  in the NESSIE competition.
12871da177e4SLinus Torvalds
12881da177e4SLinus Torvalds	  See also:
12896d8de74cSJustin P. Mattock	  <https://www.cosic.esat.kuleuven.be/nessie/reports/>
12906d8de74cSJustin P. Mattock	  <http://www.larc.usp.br/~pbarreto/AnubisPage.html>
12911da177e4SLinus Torvalds
1292584fffc8SSebastian Siewiorconfig CRYPTO_ARC4
1293584fffc8SSebastian Siewior	tristate "ARC4 cipher algorithm"
12949ace6771SArd Biesheuvel	depends on CRYPTO_USER_API_ENABLE_OBSOLETE
1295b95bba5dSEric Biggers	select CRYPTO_SKCIPHER
1296dc51f257SArd Biesheuvel	select CRYPTO_LIB_ARC4
1297e2ee95b8SHye-Shik Chang	help
1298584fffc8SSebastian Siewior	  ARC4 cipher algorithm.
1299e2ee95b8SHye-Shik Chang
1300584fffc8SSebastian Siewior	  ARC4 is a stream cipher using keys ranging from 8 bits to 2048
1301584fffc8SSebastian Siewior	  bits in length.  This algorithm is required for driver-based
1302584fffc8SSebastian Siewior	  WEP, but it should not be for other purposes because of the
1303584fffc8SSebastian Siewior	  weakness of the algorithm.
1304584fffc8SSebastian Siewior
1305584fffc8SSebastian Siewiorconfig CRYPTO_BLOWFISH
1306584fffc8SSebastian Siewior	tristate "Blowfish cipher algorithm"
1307584fffc8SSebastian Siewior	select CRYPTO_ALGAPI
130852ba867cSJussi Kivilinna	select CRYPTO_BLOWFISH_COMMON
1309584fffc8SSebastian Siewior	help
1310584fffc8SSebastian Siewior	  Blowfish cipher algorithm, by Bruce Schneier.
1311584fffc8SSebastian Siewior
1312584fffc8SSebastian Siewior	  This is a variable key length cipher which can use keys from 32
1313584fffc8SSebastian Siewior	  bits to 448 bits in length.  It's fast, simple and specifically
1314584fffc8SSebastian Siewior	  designed for use on "large microprocessors".
1315e2ee95b8SHye-Shik Chang
1316e2ee95b8SHye-Shik Chang	  See also:
13179332a9e7SAlexander A. Klimov	  <https://www.schneier.com/blowfish.html>
1318584fffc8SSebastian Siewior
131952ba867cSJussi Kivilinnaconfig CRYPTO_BLOWFISH_COMMON
132052ba867cSJussi Kivilinna	tristate
132152ba867cSJussi Kivilinna	help
132252ba867cSJussi Kivilinna	  Common parts of the Blowfish cipher algorithm shared by the
132352ba867cSJussi Kivilinna	  generic c and the assembler implementations.
132452ba867cSJussi Kivilinna
132552ba867cSJussi Kivilinna	  See also:
13269332a9e7SAlexander A. Klimov	  <https://www.schneier.com/blowfish.html>
132752ba867cSJussi Kivilinna
132864b94ceaSJussi Kivilinnaconfig CRYPTO_BLOWFISH_X86_64
132964b94ceaSJussi Kivilinna	tristate "Blowfish cipher algorithm (x86_64)"
1330f21a7c19SAl Viro	depends on X86 && 64BIT
1331b95bba5dSEric Biggers	select CRYPTO_SKCIPHER
133264b94ceaSJussi Kivilinna	select CRYPTO_BLOWFISH_COMMON
1333c0a64926SArd Biesheuvel	imply CRYPTO_CTR
133464b94ceaSJussi Kivilinna	help
133564b94ceaSJussi Kivilinna	  Blowfish cipher algorithm (x86_64), by Bruce Schneier.
133664b94ceaSJussi Kivilinna
133764b94ceaSJussi Kivilinna	  This is a variable key length cipher which can use keys from 32
133864b94ceaSJussi Kivilinna	  bits to 448 bits in length.  It's fast, simple and specifically
133964b94ceaSJussi Kivilinna	  designed for use on "large microprocessors".
134064b94ceaSJussi Kivilinna
134164b94ceaSJussi Kivilinna	  See also:
13429332a9e7SAlexander A. Klimov	  <https://www.schneier.com/blowfish.html>
134364b94ceaSJussi Kivilinna
1344584fffc8SSebastian Siewiorconfig CRYPTO_CAMELLIA
1345584fffc8SSebastian Siewior	tristate "Camellia cipher algorithms"
1346584fffc8SSebastian Siewior	select CRYPTO_ALGAPI
1347584fffc8SSebastian Siewior	help
1348584fffc8SSebastian Siewior	  Camellia cipher algorithms module.
1349584fffc8SSebastian Siewior
1350584fffc8SSebastian Siewior	  Camellia is a symmetric key block cipher developed jointly
1351584fffc8SSebastian Siewior	  at NTT and Mitsubishi Electric Corporation.
1352584fffc8SSebastian Siewior
1353584fffc8SSebastian Siewior	  The Camellia specifies three key sizes: 128, 192 and 256 bits.
1354584fffc8SSebastian Siewior
1355584fffc8SSebastian Siewior	  See also:
1356584fffc8SSebastian Siewior	  <https://info.isl.ntt.co.jp/crypt/eng/camellia/index_s.html>
1357584fffc8SSebastian Siewior
13580b95ec56SJussi Kivilinnaconfig CRYPTO_CAMELLIA_X86_64
13590b95ec56SJussi Kivilinna	tristate "Camellia cipher algorithm (x86_64)"
1360f21a7c19SAl Viro	depends on X86 && 64BIT
1361b95bba5dSEric Biggers	select CRYPTO_SKCIPHER
1362a1f91ecfSArd Biesheuvel	imply CRYPTO_CTR
13630b95ec56SJussi Kivilinna	help
13640b95ec56SJussi Kivilinna	  Camellia cipher algorithm module (x86_64).
13650b95ec56SJussi Kivilinna
13660b95ec56SJussi Kivilinna	  Camellia is a symmetric key block cipher developed jointly
13670b95ec56SJussi Kivilinna	  at NTT and Mitsubishi Electric Corporation.
13680b95ec56SJussi Kivilinna
13690b95ec56SJussi Kivilinna	  The Camellia specifies three key sizes: 128, 192 and 256 bits.
13700b95ec56SJussi Kivilinna
13710b95ec56SJussi Kivilinna	  See also:
13720b95ec56SJussi Kivilinna	  <https://info.isl.ntt.co.jp/crypt/eng/camellia/index_s.html>
13730b95ec56SJussi Kivilinna
1374d9b1d2e7SJussi Kivilinnaconfig CRYPTO_CAMELLIA_AESNI_AVX_X86_64
1375d9b1d2e7SJussi Kivilinna	tristate "Camellia cipher algorithm (x86_64/AES-NI/AVX)"
1376d9b1d2e7SJussi Kivilinna	depends on X86 && 64BIT
1377b95bba5dSEric Biggers	select CRYPTO_SKCIPHER
1378d9b1d2e7SJussi Kivilinna	select CRYPTO_CAMELLIA_X86_64
137944893bc2SEric Biggers	select CRYPTO_SIMD
138055a7e88fSArd Biesheuvel	imply CRYPTO_XTS
1381d9b1d2e7SJussi Kivilinna	help
1382d9b1d2e7SJussi Kivilinna	  Camellia cipher algorithm module (x86_64/AES-NI/AVX).
1383d9b1d2e7SJussi Kivilinna
1384d9b1d2e7SJussi Kivilinna	  Camellia is a symmetric key block cipher developed jointly
1385d9b1d2e7SJussi Kivilinna	  at NTT and Mitsubishi Electric Corporation.
1386d9b1d2e7SJussi Kivilinna
1387d9b1d2e7SJussi Kivilinna	  The Camellia specifies three key sizes: 128, 192 and 256 bits.
1388d9b1d2e7SJussi Kivilinna
1389d9b1d2e7SJussi Kivilinna	  See also:
1390d9b1d2e7SJussi Kivilinna	  <https://info.isl.ntt.co.jp/crypt/eng/camellia/index_s.html>
1391d9b1d2e7SJussi Kivilinna
1392f3f935a7SJussi Kivilinnaconfig CRYPTO_CAMELLIA_AESNI_AVX2_X86_64
1393f3f935a7SJussi Kivilinna	tristate "Camellia cipher algorithm (x86_64/AES-NI/AVX2)"
1394f3f935a7SJussi Kivilinna	depends on X86 && 64BIT
1395f3f935a7SJussi Kivilinna	select CRYPTO_CAMELLIA_AESNI_AVX_X86_64
1396f3f935a7SJussi Kivilinna	help
1397f3f935a7SJussi Kivilinna	  Camellia cipher algorithm module (x86_64/AES-NI/AVX2).
1398f3f935a7SJussi Kivilinna
1399f3f935a7SJussi Kivilinna	  Camellia is a symmetric key block cipher developed jointly
1400f3f935a7SJussi Kivilinna	  at NTT and Mitsubishi Electric Corporation.
1401f3f935a7SJussi Kivilinna
1402f3f935a7SJussi Kivilinna	  The Camellia specifies three key sizes: 128, 192 and 256 bits.
1403f3f935a7SJussi Kivilinna
1404f3f935a7SJussi Kivilinna	  See also:
1405f3f935a7SJussi Kivilinna	  <https://info.isl.ntt.co.jp/crypt/eng/camellia/index_s.html>
1406f3f935a7SJussi Kivilinna
140781658ad0SDavid S. Millerconfig CRYPTO_CAMELLIA_SPARC64
140881658ad0SDavid S. Miller	tristate "Camellia cipher algorithm (SPARC64)"
140981658ad0SDavid S. Miller	depends on SPARC64
141081658ad0SDavid S. Miller	select CRYPTO_ALGAPI
1411b95bba5dSEric Biggers	select CRYPTO_SKCIPHER
141281658ad0SDavid S. Miller	help
141381658ad0SDavid S. Miller	  Camellia cipher algorithm module (SPARC64).
141481658ad0SDavid S. Miller
141581658ad0SDavid S. Miller	  Camellia is a symmetric key block cipher developed jointly
141681658ad0SDavid S. Miller	  at NTT and Mitsubishi Electric Corporation.
141781658ad0SDavid S. Miller
141881658ad0SDavid S. Miller	  The Camellia specifies three key sizes: 128, 192 and 256 bits.
141981658ad0SDavid S. Miller
142081658ad0SDavid S. Miller	  See also:
142181658ad0SDavid S. Miller	  <https://info.isl.ntt.co.jp/crypt/eng/camellia/index_s.html>
142281658ad0SDavid S. Miller
1423044ab525SJussi Kivilinnaconfig CRYPTO_CAST_COMMON
1424044ab525SJussi Kivilinna	tristate
1425044ab525SJussi Kivilinna	help
1426044ab525SJussi Kivilinna	  Common parts of the CAST cipher algorithms shared by the
1427044ab525SJussi Kivilinna	  generic c and the assembler implementations.
1428044ab525SJussi Kivilinna
1429584fffc8SSebastian Siewiorconfig CRYPTO_CAST5
1430584fffc8SSebastian Siewior	tristate "CAST5 (CAST-128) cipher algorithm"
1431584fffc8SSebastian Siewior	select CRYPTO_ALGAPI
1432044ab525SJussi Kivilinna	select CRYPTO_CAST_COMMON
1433584fffc8SSebastian Siewior	help
1434584fffc8SSebastian Siewior	  The CAST5 encryption algorithm (synonymous with CAST-128) is
1435584fffc8SSebastian Siewior	  described in RFC2144.
1436584fffc8SSebastian Siewior
14374d6d6a2cSJohannes Goetzfriedconfig CRYPTO_CAST5_AVX_X86_64
14384d6d6a2cSJohannes Goetzfried	tristate "CAST5 (CAST-128) cipher algorithm (x86_64/AVX)"
14394d6d6a2cSJohannes Goetzfried	depends on X86 && 64BIT
1440b95bba5dSEric Biggers	select CRYPTO_SKCIPHER
14414d6d6a2cSJohannes Goetzfried	select CRYPTO_CAST5
14421e63183aSEric Biggers	select CRYPTO_CAST_COMMON
14431e63183aSEric Biggers	select CRYPTO_SIMD
1444e2d60e2fSArd Biesheuvel	imply CRYPTO_CTR
14454d6d6a2cSJohannes Goetzfried	help
14464d6d6a2cSJohannes Goetzfried	  The CAST5 encryption algorithm (synonymous with CAST-128) is
14474d6d6a2cSJohannes Goetzfried	  described in RFC2144.
14484d6d6a2cSJohannes Goetzfried
14494d6d6a2cSJohannes Goetzfried	  This module provides the Cast5 cipher algorithm that processes
14504d6d6a2cSJohannes Goetzfried	  sixteen blocks parallel using the AVX instruction set.
14514d6d6a2cSJohannes Goetzfried
1452584fffc8SSebastian Siewiorconfig CRYPTO_CAST6
1453584fffc8SSebastian Siewior	tristate "CAST6 (CAST-256) cipher algorithm"
1454584fffc8SSebastian Siewior	select CRYPTO_ALGAPI
1455044ab525SJussi Kivilinna	select CRYPTO_CAST_COMMON
1456584fffc8SSebastian Siewior	help
1457584fffc8SSebastian Siewior	  The CAST6 encryption algorithm (synonymous with CAST-256) is
1458584fffc8SSebastian Siewior	  described in RFC2612.
1459584fffc8SSebastian Siewior
14604ea1277dSJohannes Goetzfriedconfig CRYPTO_CAST6_AVX_X86_64
14614ea1277dSJohannes Goetzfried	tristate "CAST6 (CAST-256) cipher algorithm (x86_64/AVX)"
14624ea1277dSJohannes Goetzfried	depends on X86 && 64BIT
1463b95bba5dSEric Biggers	select CRYPTO_SKCIPHER
14644ea1277dSJohannes Goetzfried	select CRYPTO_CAST6
14654bd96924SEric Biggers	select CRYPTO_CAST_COMMON
14664bd96924SEric Biggers	select CRYPTO_SIMD
14672cc0fedbSArd Biesheuvel	imply CRYPTO_XTS
14687a6623ccSArd Biesheuvel	imply CRYPTO_CTR
14694ea1277dSJohannes Goetzfried	help
14704ea1277dSJohannes Goetzfried	  The CAST6 encryption algorithm (synonymous with CAST-256) is
14714ea1277dSJohannes Goetzfried	  described in RFC2612.
14724ea1277dSJohannes Goetzfried
14734ea1277dSJohannes Goetzfried	  This module provides the Cast6 cipher algorithm that processes
14744ea1277dSJohannes Goetzfried	  eight blocks parallel using the AVX instruction set.
14754ea1277dSJohannes Goetzfried
1476584fffc8SSebastian Siewiorconfig CRYPTO_DES
1477584fffc8SSebastian Siewior	tristate "DES and Triple DES EDE cipher algorithms"
1478584fffc8SSebastian Siewior	select CRYPTO_ALGAPI
147904007b0eSArd Biesheuvel	select CRYPTO_LIB_DES
1480584fffc8SSebastian Siewior	help
1481584fffc8SSebastian Siewior	  DES cipher algorithm (FIPS 46-2), and Triple DES EDE (FIPS 46-3).
1482584fffc8SSebastian Siewior
1483c5aac2dfSDavid S. Millerconfig CRYPTO_DES_SPARC64
1484c5aac2dfSDavid S. Miller	tristate "DES and Triple DES EDE cipher algorithms (SPARC64)"
148597da37b3SDave Jones	depends on SPARC64
1486c5aac2dfSDavid S. Miller	select CRYPTO_ALGAPI
148704007b0eSArd Biesheuvel	select CRYPTO_LIB_DES
1488b95bba5dSEric Biggers	select CRYPTO_SKCIPHER
1489c5aac2dfSDavid S. Miller	help
1490c5aac2dfSDavid S. Miller	  DES cipher algorithm (FIPS 46-2), and Triple DES EDE (FIPS 46-3),
1491c5aac2dfSDavid S. Miller	  optimized using SPARC64 crypto opcodes.
1492c5aac2dfSDavid S. Miller
14936574e6c6SJussi Kivilinnaconfig CRYPTO_DES3_EDE_X86_64
14946574e6c6SJussi Kivilinna	tristate "Triple DES EDE cipher algorithm (x86-64)"
14956574e6c6SJussi Kivilinna	depends on X86 && 64BIT
1496b95bba5dSEric Biggers	select CRYPTO_SKCIPHER
149704007b0eSArd Biesheuvel	select CRYPTO_LIB_DES
1498768db5feSArd Biesheuvel	imply CRYPTO_CTR
14996574e6c6SJussi Kivilinna	help
15006574e6c6SJussi Kivilinna	  Triple DES EDE (FIPS 46-3) algorithm.
15016574e6c6SJussi Kivilinna
15026574e6c6SJussi Kivilinna	  This module provides implementation of the Triple DES EDE cipher
15036574e6c6SJussi Kivilinna	  algorithm that is optimized for x86-64 processors. Two versions of
15046574e6c6SJussi Kivilinna	  algorithm are provided; regular processing one input block and
15056574e6c6SJussi Kivilinna	  one that processes three blocks parallel.
15066574e6c6SJussi Kivilinna
1507*b7133757SJason A. Donenfeldconfig CRYPTO_DES_S390
1508*b7133757SJason A. Donenfeld	tristate "DES and Triple DES cipher algorithms"
1509*b7133757SJason A. Donenfeld	depends on S390
1510*b7133757SJason A. Donenfeld	select CRYPTO_ALGAPI
1511*b7133757SJason A. Donenfeld	select CRYPTO_SKCIPHER
1512*b7133757SJason A. Donenfeld	select CRYPTO_LIB_DES
1513*b7133757SJason A. Donenfeld	help
1514*b7133757SJason A. Donenfeld	  This is the s390 hardware accelerated implementation of the
1515*b7133757SJason A. Donenfeld	  DES cipher algorithm (FIPS 46-2), and Triple DES EDE (FIPS 46-3).
1516*b7133757SJason A. Donenfeld
1517*b7133757SJason A. Donenfeld	  As of z990 the ECB and CBC mode are hardware accelerated.
1518*b7133757SJason A. Donenfeld	  As of z196 the CTR mode is hardware accelerated.
1519*b7133757SJason A. Donenfeld
1520584fffc8SSebastian Siewiorconfig CRYPTO_FCRYPT
1521584fffc8SSebastian Siewior	tristate "FCrypt cipher algorithm"
1522584fffc8SSebastian Siewior	select CRYPTO_ALGAPI
1523b95bba5dSEric Biggers	select CRYPTO_SKCIPHER
1524584fffc8SSebastian Siewior	help
1525584fffc8SSebastian Siewior	  FCrypt algorithm used by RxRPC.
1526584fffc8SSebastian Siewior
1527584fffc8SSebastian Siewiorconfig CRYPTO_KHAZAD
1528584fffc8SSebastian Siewior	tristate "Khazad cipher algorithm"
15291674aea5SArd Biesheuvel	depends on CRYPTO_USER_API_ENABLE_OBSOLETE
1530584fffc8SSebastian Siewior	select CRYPTO_ALGAPI
1531584fffc8SSebastian Siewior	help
1532584fffc8SSebastian Siewior	  Khazad cipher algorithm.
1533584fffc8SSebastian Siewior
1534584fffc8SSebastian Siewior	  Khazad was a finalist in the initial NESSIE competition.  It is
1535584fffc8SSebastian Siewior	  an algorithm optimized for 64-bit processors with good performance
1536584fffc8SSebastian Siewior	  on 32-bit processors.  Khazad uses an 128 bit key size.
1537584fffc8SSebastian Siewior
1538584fffc8SSebastian Siewior	  See also:
15396d8de74cSJustin P. Mattock	  <http://www.larc.usp.br/~pbarreto/KhazadPage.html>
1540e2ee95b8SHye-Shik Chang
1541c08d0e64SMartin Williconfig CRYPTO_CHACHA20
1542aa762409SEric Biggers	tristate "ChaCha stream cipher algorithms"
15435fb8ef25SArd Biesheuvel	select CRYPTO_LIB_CHACHA_GENERIC
1544b95bba5dSEric Biggers	select CRYPTO_SKCIPHER
1545c08d0e64SMartin Willi	help
1546aa762409SEric Biggers	  The ChaCha20, XChaCha20, and XChaCha12 stream cipher algorithms.
1547c08d0e64SMartin Willi
1548c08d0e64SMartin Willi	  ChaCha20 is a 256-bit high-speed stream cipher designed by Daniel J.
1549c08d0e64SMartin Willi	  Bernstein and further specified in RFC7539 for use in IETF protocols.
1550de61d7aeSEric Biggers	  This is the portable C implementation of ChaCha20.  See also:
15519332a9e7SAlexander A. Klimov	  <https://cr.yp.to/chacha/chacha-20080128.pdf>
1552c08d0e64SMartin Willi
1553de61d7aeSEric Biggers	  XChaCha20 is the application of the XSalsa20 construction to ChaCha20
1554de61d7aeSEric Biggers	  rather than to Salsa20.  XChaCha20 extends ChaCha20's nonce length
1555de61d7aeSEric Biggers	  from 64 bits (or 96 bits using the RFC7539 convention) to 192 bits,
1556de61d7aeSEric Biggers	  while provably retaining ChaCha20's security.  See also:
1557de61d7aeSEric Biggers	  <https://cr.yp.to/snuffle/xsalsa-20081128.pdf>
1558de61d7aeSEric Biggers
1559aa762409SEric Biggers	  XChaCha12 is XChaCha20 reduced to 12 rounds, with correspondingly
1560aa762409SEric Biggers	  reduced security margin but increased performance.  It can be needed
1561aa762409SEric Biggers	  in some performance-sensitive scenarios.
1562aa762409SEric Biggers
1563c9320b6dSMartin Williconfig CRYPTO_CHACHA20_X86_64
15644af78261SEric Biggers	tristate "ChaCha stream cipher algorithms (x86_64/SSSE3/AVX2/AVX-512VL)"
1565c9320b6dSMartin Willi	depends on X86 && 64BIT
1566b95bba5dSEric Biggers	select CRYPTO_SKCIPHER
156728e8d89bSArd Biesheuvel	select CRYPTO_LIB_CHACHA_GENERIC
156884e03fa3SArd Biesheuvel	select CRYPTO_ARCH_HAVE_LIB_CHACHA
1569c9320b6dSMartin Willi	help
15707a507d62SEric Biggers	  SSSE3, AVX2, and AVX-512VL optimized implementations of the ChaCha20,
15717a507d62SEric Biggers	  XChaCha20, and XChaCha12 stream ciphers.
1572c9320b6dSMartin Willi
15733a2f58f3SArd Biesheuvelconfig CRYPTO_CHACHA_MIPS
15743a2f58f3SArd Biesheuvel	tristate "ChaCha stream cipher algorithms (MIPS 32r2 optimized)"
15753a2f58f3SArd Biesheuvel	depends on CPU_MIPS32_R2
1576660eda8dSEric Biggers	select CRYPTO_SKCIPHER
15773a2f58f3SArd Biesheuvel	select CRYPTO_ARCH_HAVE_LIB_CHACHA
15783a2f58f3SArd Biesheuvel
1579*b7133757SJason A. Donenfeldconfig CRYPTO_CHACHA_S390
1580*b7133757SJason A. Donenfeld	tristate "ChaCha20 stream cipher"
1581*b7133757SJason A. Donenfeld	depends on S390
1582*b7133757SJason A. Donenfeld	select CRYPTO_SKCIPHER
1583*b7133757SJason A. Donenfeld	select CRYPTO_LIB_CHACHA_GENERIC
1584*b7133757SJason A. Donenfeld	select CRYPTO_ARCH_HAVE_LIB_CHACHA
1585*b7133757SJason A. Donenfeld	help
1586*b7133757SJason A. Donenfeld	  This is the s390 SIMD implementation of the ChaCha20 stream
1587*b7133757SJason A. Donenfeld	  cipher (RFC 7539).
1588*b7133757SJason A. Donenfeld
1589*b7133757SJason A. Donenfeld	  It is available as of z13.
1590*b7133757SJason A. Donenfeld
1591584fffc8SSebastian Siewiorconfig CRYPTO_SEED
1592584fffc8SSebastian Siewior	tristate "SEED cipher algorithm"
15931674aea5SArd Biesheuvel	depends on CRYPTO_USER_API_ENABLE_OBSOLETE
1594584fffc8SSebastian Siewior	select CRYPTO_ALGAPI
1595584fffc8SSebastian Siewior	help
1596584fffc8SSebastian Siewior	  SEED cipher algorithm (RFC4269).
1597584fffc8SSebastian Siewior
1598584fffc8SSebastian Siewior	  SEED is a 128-bit symmetric key block cipher that has been
1599584fffc8SSebastian Siewior	  developed by KISA (Korea Information Security Agency) as a
1600584fffc8SSebastian Siewior	  national standard encryption algorithm of the Republic of Korea.
1601584fffc8SSebastian Siewior	  It is a 16 round block cipher with the key size of 128 bit.
1602584fffc8SSebastian Siewior
1603584fffc8SSebastian Siewior	  See also:
1604584fffc8SSebastian Siewior	  <http://www.kisa.or.kr/kisa/seed/jsp/seed_eng.jsp>
1605584fffc8SSebastian Siewior
1606584fffc8SSebastian Siewiorconfig CRYPTO_SERPENT
1607584fffc8SSebastian Siewior	tristate "Serpent cipher algorithm"
1608584fffc8SSebastian Siewior	select CRYPTO_ALGAPI
1609584fffc8SSebastian Siewior	help
1610584fffc8SSebastian Siewior	  Serpent cipher algorithm, by Anderson, Biham & Knudsen.
1611584fffc8SSebastian Siewior
1612584fffc8SSebastian Siewior	  Keys are allowed to be from 0 to 256 bits in length, in steps
1613784506a1SArd Biesheuvel	  of 8 bits.
1614584fffc8SSebastian Siewior
1615584fffc8SSebastian Siewior	  See also:
16169332a9e7SAlexander A. Klimov	  <https://www.cl.cam.ac.uk/~rja14/serpent.html>
1617584fffc8SSebastian Siewior
1618937c30d7SJussi Kivilinnaconfig CRYPTO_SERPENT_SSE2_X86_64
1619937c30d7SJussi Kivilinna	tristate "Serpent cipher algorithm (x86_64/SSE2)"
1620937c30d7SJussi Kivilinna	depends on X86 && 64BIT
1621b95bba5dSEric Biggers	select CRYPTO_SKCIPHER
1622937c30d7SJussi Kivilinna	select CRYPTO_SERPENT
1623e0f409dcSEric Biggers	select CRYPTO_SIMD
16242e9440aeSArd Biesheuvel	imply CRYPTO_CTR
1625937c30d7SJussi Kivilinna	help
1626937c30d7SJussi Kivilinna	  Serpent cipher algorithm, by Anderson, Biham & Knudsen.
1627937c30d7SJussi Kivilinna
1628937c30d7SJussi Kivilinna	  Keys are allowed to be from 0 to 256 bits in length, in steps
1629937c30d7SJussi Kivilinna	  of 8 bits.
1630937c30d7SJussi Kivilinna
16311e6232f8SMasanari Iida	  This module provides Serpent cipher algorithm that processes eight
1632937c30d7SJussi Kivilinna	  blocks parallel using SSE2 instruction set.
1633937c30d7SJussi Kivilinna
1634937c30d7SJussi Kivilinna	  See also:
16359332a9e7SAlexander A. Klimov	  <https://www.cl.cam.ac.uk/~rja14/serpent.html>
1636937c30d7SJussi Kivilinna
1637251496dbSJussi Kivilinnaconfig CRYPTO_SERPENT_SSE2_586
1638251496dbSJussi Kivilinna	tristate "Serpent cipher algorithm (i586/SSE2)"
1639251496dbSJussi Kivilinna	depends on X86 && !64BIT
1640b95bba5dSEric Biggers	select CRYPTO_SKCIPHER
1641251496dbSJussi Kivilinna	select CRYPTO_SERPENT
1642e0f409dcSEric Biggers	select CRYPTO_SIMD
16432e9440aeSArd Biesheuvel	imply CRYPTO_CTR
1644251496dbSJussi Kivilinna	help
1645251496dbSJussi Kivilinna	  Serpent cipher algorithm, by Anderson, Biham & Knudsen.
1646251496dbSJussi Kivilinna
1647251496dbSJussi Kivilinna	  Keys are allowed to be from 0 to 256 bits in length, in steps
1648251496dbSJussi Kivilinna	  of 8 bits.
1649251496dbSJussi Kivilinna
1650251496dbSJussi Kivilinna	  This module provides Serpent cipher algorithm that processes four
1651251496dbSJussi Kivilinna	  blocks parallel using SSE2 instruction set.
1652251496dbSJussi Kivilinna
1653251496dbSJussi Kivilinna	  See also:
16549332a9e7SAlexander A. Klimov	  <https://www.cl.cam.ac.uk/~rja14/serpent.html>
1655251496dbSJussi Kivilinna
16567efe4076SJohannes Goetzfriedconfig CRYPTO_SERPENT_AVX_X86_64
16577efe4076SJohannes Goetzfried	tristate "Serpent cipher algorithm (x86_64/AVX)"
16587efe4076SJohannes Goetzfried	depends on X86 && 64BIT
1659b95bba5dSEric Biggers	select CRYPTO_SKCIPHER
16607efe4076SJohannes Goetzfried	select CRYPTO_SERPENT
1661e16bf974SEric Biggers	select CRYPTO_SIMD
16629ec0af8aSArd Biesheuvel	imply CRYPTO_XTS
16632e9440aeSArd Biesheuvel	imply CRYPTO_CTR
16647efe4076SJohannes Goetzfried	help
16657efe4076SJohannes Goetzfried	  Serpent cipher algorithm, by Anderson, Biham & Knudsen.
16667efe4076SJohannes Goetzfried
16677efe4076SJohannes Goetzfried	  Keys are allowed to be from 0 to 256 bits in length, in steps
16687efe4076SJohannes Goetzfried	  of 8 bits.
16697efe4076SJohannes Goetzfried
16707efe4076SJohannes Goetzfried	  This module provides the Serpent cipher algorithm that processes
16717efe4076SJohannes Goetzfried	  eight blocks parallel using the AVX instruction set.
16727efe4076SJohannes Goetzfried
16737efe4076SJohannes Goetzfried	  See also:
16749332a9e7SAlexander A. Klimov	  <https://www.cl.cam.ac.uk/~rja14/serpent.html>
16757efe4076SJohannes Goetzfried
167656d76c96SJussi Kivilinnaconfig CRYPTO_SERPENT_AVX2_X86_64
167756d76c96SJussi Kivilinna	tristate "Serpent cipher algorithm (x86_64/AVX2)"
167856d76c96SJussi Kivilinna	depends on X86 && 64BIT
167956d76c96SJussi Kivilinna	select CRYPTO_SERPENT_AVX_X86_64
168056d76c96SJussi Kivilinna	help
168156d76c96SJussi Kivilinna	  Serpent cipher algorithm, by Anderson, Biham & Knudsen.
168256d76c96SJussi Kivilinna
168356d76c96SJussi Kivilinna	  Keys are allowed to be from 0 to 256 bits in length, in steps
168456d76c96SJussi Kivilinna	  of 8 bits.
168556d76c96SJussi Kivilinna
168656d76c96SJussi Kivilinna	  This module provides Serpent cipher algorithm that processes 16
168756d76c96SJussi Kivilinna	  blocks parallel using AVX2 instruction set.
168856d76c96SJussi Kivilinna
168956d76c96SJussi Kivilinna	  See also:
16909332a9e7SAlexander A. Klimov	  <https://www.cl.cam.ac.uk/~rja14/serpent.html>
169156d76c96SJussi Kivilinna
1692747c8ce4SGilad Ben-Yossefconfig CRYPTO_SM4
1693d2825fa9SJason A. Donenfeld	tristate
1694d2825fa9SJason A. Donenfeld
1695d2825fa9SJason A. Donenfeldconfig CRYPTO_SM4_GENERIC
1696747c8ce4SGilad Ben-Yossef	tristate "SM4 cipher algorithm"
1697747c8ce4SGilad Ben-Yossef	select CRYPTO_ALGAPI
1698d2825fa9SJason A. Donenfeld	select CRYPTO_SM4
1699747c8ce4SGilad Ben-Yossef	help
1700747c8ce4SGilad Ben-Yossef	  SM4 cipher algorithms (OSCCA GB/T 32907-2016).
1701747c8ce4SGilad Ben-Yossef
1702747c8ce4SGilad Ben-Yossef	  SM4 (GBT.32907-2016) is a cryptographic standard issued by the
1703747c8ce4SGilad Ben-Yossef	  Organization of State Commercial Administration of China (OSCCA)
1704747c8ce4SGilad Ben-Yossef	  as an authorized cryptographic algorithms for the use within China.
1705747c8ce4SGilad Ben-Yossef
1706747c8ce4SGilad Ben-Yossef	  SMS4 was originally created for use in protecting wireless
1707747c8ce4SGilad Ben-Yossef	  networks, and is mandated in the Chinese National Standard for
1708747c8ce4SGilad Ben-Yossef	  Wireless LAN WAPI (Wired Authentication and Privacy Infrastructure)
1709747c8ce4SGilad Ben-Yossef	  (GB.15629.11-2003).
1710747c8ce4SGilad Ben-Yossef
1711747c8ce4SGilad Ben-Yossef	  The latest SM4 standard (GBT.32907-2016) was proposed by OSCCA and
1712747c8ce4SGilad Ben-Yossef	  standardized through TC 260 of the Standardization Administration
1713747c8ce4SGilad Ben-Yossef	  of the People's Republic of China (SAC).
1714747c8ce4SGilad Ben-Yossef
1715747c8ce4SGilad Ben-Yossef	  The input, output, and key of SMS4 are each 128 bits.
1716747c8ce4SGilad Ben-Yossef
1717747c8ce4SGilad Ben-Yossef	  See also: <https://eprint.iacr.org/2008/329.pdf>
1718747c8ce4SGilad Ben-Yossef
1719747c8ce4SGilad Ben-Yossef	  If unsure, say N.
1720747c8ce4SGilad Ben-Yossef
1721a7ee22eeSTianjia Zhangconfig CRYPTO_SM4_AESNI_AVX_X86_64
1722a7ee22eeSTianjia Zhang	tristate "SM4 cipher algorithm (x86_64/AES-NI/AVX)"
1723a7ee22eeSTianjia Zhang	depends on X86 && 64BIT
1724a7ee22eeSTianjia Zhang	select CRYPTO_SKCIPHER
1725a7ee22eeSTianjia Zhang	select CRYPTO_SIMD
1726a7ee22eeSTianjia Zhang	select CRYPTO_ALGAPI
1727d2825fa9SJason A. Donenfeld	select CRYPTO_SM4
1728a7ee22eeSTianjia Zhang	help
1729a7ee22eeSTianjia Zhang	  SM4 cipher algorithms (OSCCA GB/T 32907-2016) (x86_64/AES-NI/AVX).
1730a7ee22eeSTianjia Zhang
1731a7ee22eeSTianjia Zhang	  SM4 (GBT.32907-2016) is a cryptographic standard issued by the
1732a7ee22eeSTianjia Zhang	  Organization of State Commercial Administration of China (OSCCA)
1733a7ee22eeSTianjia Zhang	  as an authorized cryptographic algorithms for the use within China.
1734a7ee22eeSTianjia Zhang
1735a7ee22eeSTianjia Zhang	  This is SM4 optimized implementation using AES-NI/AVX/x86_64
1736a7ee22eeSTianjia Zhang	  instruction set for block cipher. Through two affine transforms,
1737a7ee22eeSTianjia Zhang	  we can use the AES S-Box to simulate the SM4 S-Box to achieve the
1738a7ee22eeSTianjia Zhang	  effect of instruction acceleration.
1739a7ee22eeSTianjia Zhang
1740a7ee22eeSTianjia Zhang	  If unsure, say N.
1741a7ee22eeSTianjia Zhang
17425b2efa2bSTianjia Zhangconfig CRYPTO_SM4_AESNI_AVX2_X86_64
17435b2efa2bSTianjia Zhang	tristate "SM4 cipher algorithm (x86_64/AES-NI/AVX2)"
17445b2efa2bSTianjia Zhang	depends on X86 && 64BIT
17455b2efa2bSTianjia Zhang	select CRYPTO_SKCIPHER
17465b2efa2bSTianjia Zhang	select CRYPTO_SIMD
17475b2efa2bSTianjia Zhang	select CRYPTO_ALGAPI
1748d2825fa9SJason A. Donenfeld	select CRYPTO_SM4
17495b2efa2bSTianjia Zhang	select CRYPTO_SM4_AESNI_AVX_X86_64
17505b2efa2bSTianjia Zhang	help
17515b2efa2bSTianjia Zhang	  SM4 cipher algorithms (OSCCA GB/T 32907-2016) (x86_64/AES-NI/AVX2).
17525b2efa2bSTianjia Zhang
17535b2efa2bSTianjia Zhang	  SM4 (GBT.32907-2016) is a cryptographic standard issued by the
17545b2efa2bSTianjia Zhang	  Organization of State Commercial Administration of China (OSCCA)
17555b2efa2bSTianjia Zhang	  as an authorized cryptographic algorithms for the use within China.
17565b2efa2bSTianjia Zhang
17575b2efa2bSTianjia Zhang	  This is SM4 optimized implementation using AES-NI/AVX2/x86_64
17585b2efa2bSTianjia Zhang	  instruction set for block cipher. Through two affine transforms,
17595b2efa2bSTianjia Zhang	  we can use the AES S-Box to simulate the SM4 S-Box to achieve the
17605b2efa2bSTianjia Zhang	  effect of instruction acceleration.
17615b2efa2bSTianjia Zhang
17625b2efa2bSTianjia Zhang	  If unsure, say N.
17635b2efa2bSTianjia Zhang
1764584fffc8SSebastian Siewiorconfig CRYPTO_TEA
1765584fffc8SSebastian Siewior	tristate "TEA, XTEA and XETA cipher algorithms"
17661674aea5SArd Biesheuvel	depends on CRYPTO_USER_API_ENABLE_OBSOLETE
1767584fffc8SSebastian Siewior	select CRYPTO_ALGAPI
1768584fffc8SSebastian Siewior	help
1769584fffc8SSebastian Siewior	  TEA cipher algorithm.
1770584fffc8SSebastian Siewior
1771584fffc8SSebastian Siewior	  Tiny Encryption Algorithm is a simple cipher that uses
1772584fffc8SSebastian Siewior	  many rounds for security.  It is very fast and uses
1773584fffc8SSebastian Siewior	  little memory.
1774584fffc8SSebastian Siewior
1775584fffc8SSebastian Siewior	  Xtendend Tiny Encryption Algorithm is a modification to
1776584fffc8SSebastian Siewior	  the TEA algorithm to address a potential key weakness
1777584fffc8SSebastian Siewior	  in the TEA algorithm.
1778584fffc8SSebastian Siewior
1779584fffc8SSebastian Siewior	  Xtendend Encryption Tiny Algorithm is a mis-implementation
1780584fffc8SSebastian Siewior	  of the XTEA algorithm for compatibility purposes.
1781584fffc8SSebastian Siewior
1782584fffc8SSebastian Siewiorconfig CRYPTO_TWOFISH
1783584fffc8SSebastian Siewior	tristate "Twofish cipher algorithm"
1784584fffc8SSebastian Siewior	select CRYPTO_ALGAPI
1785584fffc8SSebastian Siewior	select CRYPTO_TWOFISH_COMMON
1786584fffc8SSebastian Siewior	help
1787584fffc8SSebastian Siewior	  Twofish cipher algorithm.
1788584fffc8SSebastian Siewior
1789584fffc8SSebastian Siewior	  Twofish was submitted as an AES (Advanced Encryption Standard)
1790584fffc8SSebastian Siewior	  candidate cipher by researchers at CounterPane Systems.  It is a
1791584fffc8SSebastian Siewior	  16 round block cipher supporting key sizes of 128, 192, and 256
1792584fffc8SSebastian Siewior	  bits.
1793584fffc8SSebastian Siewior
1794584fffc8SSebastian Siewior	  See also:
17959332a9e7SAlexander A. Klimov	  <https://www.schneier.com/twofish.html>
1796584fffc8SSebastian Siewior
1797584fffc8SSebastian Siewiorconfig CRYPTO_TWOFISH_COMMON
1798584fffc8SSebastian Siewior	tristate
1799584fffc8SSebastian Siewior	help
1800584fffc8SSebastian Siewior	  Common parts of the Twofish cipher algorithm shared by the
1801584fffc8SSebastian Siewior	  generic c and the assembler implementations.
1802584fffc8SSebastian Siewior
1803584fffc8SSebastian Siewiorconfig CRYPTO_TWOFISH_586
1804584fffc8SSebastian Siewior	tristate "Twofish cipher algorithms (i586)"
1805584fffc8SSebastian Siewior	depends on (X86 || UML_X86) && !64BIT
1806584fffc8SSebastian Siewior	select CRYPTO_ALGAPI
1807584fffc8SSebastian Siewior	select CRYPTO_TWOFISH_COMMON
1808f43dcaf2SArd Biesheuvel	imply CRYPTO_CTR
1809584fffc8SSebastian Siewior	help
1810584fffc8SSebastian Siewior	  Twofish cipher algorithm.
1811584fffc8SSebastian Siewior
1812584fffc8SSebastian Siewior	  Twofish was submitted as an AES (Advanced Encryption Standard)
1813584fffc8SSebastian Siewior	  candidate cipher by researchers at CounterPane Systems.  It is a
1814584fffc8SSebastian Siewior	  16 round block cipher supporting key sizes of 128, 192, and 256
1815584fffc8SSebastian Siewior	  bits.
1816584fffc8SSebastian Siewior
1817584fffc8SSebastian Siewior	  See also:
18189332a9e7SAlexander A. Klimov	  <https://www.schneier.com/twofish.html>
1819584fffc8SSebastian Siewior
1820584fffc8SSebastian Siewiorconfig CRYPTO_TWOFISH_X86_64
1821584fffc8SSebastian Siewior	tristate "Twofish cipher algorithm (x86_64)"
1822584fffc8SSebastian Siewior	depends on (X86 || UML_X86) && 64BIT
1823584fffc8SSebastian Siewior	select CRYPTO_ALGAPI
1824584fffc8SSebastian Siewior	select CRYPTO_TWOFISH_COMMON
1825f43dcaf2SArd Biesheuvel	imply CRYPTO_CTR
1826584fffc8SSebastian Siewior	help
1827584fffc8SSebastian Siewior	  Twofish cipher algorithm (x86_64).
1828584fffc8SSebastian Siewior
1829584fffc8SSebastian Siewior	  Twofish was submitted as an AES (Advanced Encryption Standard)
1830584fffc8SSebastian Siewior	  candidate cipher by researchers at CounterPane Systems.  It is a
1831584fffc8SSebastian Siewior	  16 round block cipher supporting key sizes of 128, 192, and 256
1832584fffc8SSebastian Siewior	  bits.
1833584fffc8SSebastian Siewior
1834584fffc8SSebastian Siewior	  See also:
18359332a9e7SAlexander A. Klimov	  <https://www.schneier.com/twofish.html>
1836584fffc8SSebastian Siewior
18378280daadSJussi Kivilinnaconfig CRYPTO_TWOFISH_X86_64_3WAY
18388280daadSJussi Kivilinna	tristate "Twofish cipher algorithm (x86_64, 3-way parallel)"
1839f21a7c19SAl Viro	depends on X86 && 64BIT
1840b95bba5dSEric Biggers	select CRYPTO_SKCIPHER
18418280daadSJussi Kivilinna	select CRYPTO_TWOFISH_COMMON
18428280daadSJussi Kivilinna	select CRYPTO_TWOFISH_X86_64
18438280daadSJussi Kivilinna	help
18448280daadSJussi Kivilinna	  Twofish cipher algorithm (x86_64, 3-way parallel).
18458280daadSJussi Kivilinna
18468280daadSJussi Kivilinna	  Twofish was submitted as an AES (Advanced Encryption Standard)
18478280daadSJussi Kivilinna	  candidate cipher by researchers at CounterPane Systems.  It is a
18488280daadSJussi Kivilinna	  16 round block cipher supporting key sizes of 128, 192, and 256
18498280daadSJussi Kivilinna	  bits.
18508280daadSJussi Kivilinna
18518280daadSJussi Kivilinna	  This module provides Twofish cipher algorithm that processes three
18528280daadSJussi Kivilinna	  blocks parallel, utilizing resources of out-of-order CPUs better.
18538280daadSJussi Kivilinna
18548280daadSJussi Kivilinna	  See also:
18559332a9e7SAlexander A. Klimov	  <https://www.schneier.com/twofish.html>
18568280daadSJussi Kivilinna
1857107778b5SJohannes Goetzfriedconfig CRYPTO_TWOFISH_AVX_X86_64
1858107778b5SJohannes Goetzfried	tristate "Twofish cipher algorithm (x86_64/AVX)"
1859107778b5SJohannes Goetzfried	depends on X86 && 64BIT
1860b95bba5dSEric Biggers	select CRYPTO_SKCIPHER
18610e6ab46dSEric Biggers	select CRYPTO_SIMD
1862107778b5SJohannes Goetzfried	select CRYPTO_TWOFISH_COMMON
1863107778b5SJohannes Goetzfried	select CRYPTO_TWOFISH_X86_64
1864107778b5SJohannes Goetzfried	select CRYPTO_TWOFISH_X86_64_3WAY
1865da4df93aSArd Biesheuvel	imply CRYPTO_XTS
1866107778b5SJohannes Goetzfried	help
1867107778b5SJohannes Goetzfried	  Twofish cipher algorithm (x86_64/AVX).
1868107778b5SJohannes Goetzfried
1869107778b5SJohannes Goetzfried	  Twofish was submitted as an AES (Advanced Encryption Standard)
1870107778b5SJohannes Goetzfried	  candidate cipher by researchers at CounterPane Systems.  It is a
1871107778b5SJohannes Goetzfried	  16 round block cipher supporting key sizes of 128, 192, and 256
1872107778b5SJohannes Goetzfried	  bits.
1873107778b5SJohannes Goetzfried
1874107778b5SJohannes Goetzfried	  This module provides the Twofish cipher algorithm that processes
1875107778b5SJohannes Goetzfried	  eight blocks parallel using the AVX Instruction Set.
1876107778b5SJohannes Goetzfried
1877107778b5SJohannes Goetzfried	  See also:
18789332a9e7SAlexander A. Klimov	  <https://www.schneier.com/twofish.html>
1879107778b5SJohannes Goetzfried
1880584fffc8SSebastian Siewiorcomment "Compression"
1881584fffc8SSebastian Siewior
18821da177e4SLinus Torvaldsconfig CRYPTO_DEFLATE
18831da177e4SLinus Torvalds	tristate "Deflate compression algorithm"
1884cce9e06dSHerbert Xu	select CRYPTO_ALGAPI
1885f6ded09dSGiovanni Cabiddu	select CRYPTO_ACOMP2
18861da177e4SLinus Torvalds	select ZLIB_INFLATE
18871da177e4SLinus Torvalds	select ZLIB_DEFLATE
18881da177e4SLinus Torvalds	help
18891da177e4SLinus Torvalds	  This is the Deflate algorithm (RFC1951), specified for use in
18901da177e4SLinus Torvalds	  IPSec with the IPCOMP protocol (RFC3173, RFC2394).
18911da177e4SLinus Torvalds
18921da177e4SLinus Torvalds	  You will most probably want this if using IPSec.
18931da177e4SLinus Torvalds
18940b77abb3SZoltan Sogorconfig CRYPTO_LZO
18950b77abb3SZoltan Sogor	tristate "LZO compression algorithm"
18960b77abb3SZoltan Sogor	select CRYPTO_ALGAPI
1897ac9d2c4bSGiovanni Cabiddu	select CRYPTO_ACOMP2
18980b77abb3SZoltan Sogor	select LZO_COMPRESS
18990b77abb3SZoltan Sogor	select LZO_DECOMPRESS
19000b77abb3SZoltan Sogor	help
19010b77abb3SZoltan Sogor	  This is the LZO algorithm.
19020b77abb3SZoltan Sogor
190335a1fc18SSeth Jenningsconfig CRYPTO_842
190435a1fc18SSeth Jennings	tristate "842 compression algorithm"
19052062c5b6SDan Streetman	select CRYPTO_ALGAPI
19066a8de3aeSGiovanni Cabiddu	select CRYPTO_ACOMP2
19072062c5b6SDan Streetman	select 842_COMPRESS
19082062c5b6SDan Streetman	select 842_DECOMPRESS
190935a1fc18SSeth Jennings	help
191035a1fc18SSeth Jennings	  This is the 842 algorithm.
191135a1fc18SSeth Jennings
19120ea8530dSChanho Minconfig CRYPTO_LZ4
19130ea8530dSChanho Min	tristate "LZ4 compression algorithm"
19140ea8530dSChanho Min	select CRYPTO_ALGAPI
19158cd9330eSGiovanni Cabiddu	select CRYPTO_ACOMP2
19160ea8530dSChanho Min	select LZ4_COMPRESS
19170ea8530dSChanho Min	select LZ4_DECOMPRESS
19180ea8530dSChanho Min	help
19190ea8530dSChanho Min	  This is the LZ4 algorithm.
19200ea8530dSChanho Min
19210ea8530dSChanho Minconfig CRYPTO_LZ4HC
19220ea8530dSChanho Min	tristate "LZ4HC compression algorithm"
19230ea8530dSChanho Min	select CRYPTO_ALGAPI
192491d53d96SGiovanni Cabiddu	select CRYPTO_ACOMP2
19250ea8530dSChanho Min	select LZ4HC_COMPRESS
19260ea8530dSChanho Min	select LZ4_DECOMPRESS
19270ea8530dSChanho Min	help
19280ea8530dSChanho Min	  This is the LZ4 high compression mode algorithm.
19290ea8530dSChanho Min
1930d28fc3dbSNick Terrellconfig CRYPTO_ZSTD
1931d28fc3dbSNick Terrell	tristate "Zstd compression algorithm"
1932d28fc3dbSNick Terrell	select CRYPTO_ALGAPI
1933d28fc3dbSNick Terrell	select CRYPTO_ACOMP2
1934d28fc3dbSNick Terrell	select ZSTD_COMPRESS
1935d28fc3dbSNick Terrell	select ZSTD_DECOMPRESS
1936d28fc3dbSNick Terrell	help
1937d28fc3dbSNick Terrell	  This is the zstd algorithm.
1938d28fc3dbSNick Terrell
193917f0f4a4SNeil Hormancomment "Random Number Generation"
194017f0f4a4SNeil Horman
194117f0f4a4SNeil Hormanconfig CRYPTO_ANSI_CPRNG
194217f0f4a4SNeil Horman	tristate "Pseudo Random Number Generation for Cryptographic modules"
194317f0f4a4SNeil Horman	select CRYPTO_AES
194417f0f4a4SNeil Horman	select CRYPTO_RNG
194517f0f4a4SNeil Horman	help
194617f0f4a4SNeil Horman	  This option enables the generic pseudo random number generator
194717f0f4a4SNeil Horman	  for cryptographic modules.  Uses the Algorithm specified in
19487dd607e8SJiri Kosina	  ANSI X9.31 A.2.4. Note that this option must be enabled if
19497dd607e8SJiri Kosina	  CRYPTO_FIPS is selected
195017f0f4a4SNeil Horman
1951f2c89a10SHerbert Xumenuconfig CRYPTO_DRBG_MENU
1952419090c6SStephan Mueller	tristate "NIST SP800-90A DRBG"
1953419090c6SStephan Mueller	help
1954419090c6SStephan Mueller	  NIST SP800-90A compliant DRBG. In the following submenu, one or
1955419090c6SStephan Mueller	  more of the DRBG types must be selected.
1956419090c6SStephan Mueller
1957f2c89a10SHerbert Xuif CRYPTO_DRBG_MENU
1958419090c6SStephan Mueller
1959419090c6SStephan Muellerconfig CRYPTO_DRBG_HMAC
1960401e4238SHerbert Xu	bool
1961419090c6SStephan Mueller	default y
1962419090c6SStephan Mueller	select CRYPTO_HMAC
19635261cdf4SStephan Mueller	select CRYPTO_SHA512
1964419090c6SStephan Mueller
1965419090c6SStephan Muellerconfig CRYPTO_DRBG_HASH
1966419090c6SStephan Mueller	bool "Enable Hash DRBG"
1967826775bbSHerbert Xu	select CRYPTO_SHA256
1968419090c6SStephan Mueller	help
1969419090c6SStephan Mueller	  Enable the Hash DRBG variant as defined in NIST SP800-90A.
1970419090c6SStephan Mueller
1971419090c6SStephan Muellerconfig CRYPTO_DRBG_CTR
1972419090c6SStephan Mueller	bool "Enable CTR DRBG"
1973419090c6SStephan Mueller	select CRYPTO_AES
1974d6fc1a45SCorentin Labbe	select CRYPTO_CTR
1975419090c6SStephan Mueller	help
1976419090c6SStephan Mueller	  Enable the CTR DRBG variant as defined in NIST SP800-90A.
1977419090c6SStephan Mueller
1978f2c89a10SHerbert Xuconfig CRYPTO_DRBG
1979f2c89a10SHerbert Xu	tristate
1980401e4238SHerbert Xu	default CRYPTO_DRBG_MENU
1981f2c89a10SHerbert Xu	select CRYPTO_RNG
1982bb5530e4SStephan Mueller	select CRYPTO_JITTERENTROPY
1983f2c89a10SHerbert Xu
1984f2c89a10SHerbert Xuendif	# if CRYPTO_DRBG_MENU
1985419090c6SStephan Mueller
1986bb5530e4SStephan Muellerconfig CRYPTO_JITTERENTROPY
1987bb5530e4SStephan Mueller	tristate "Jitterentropy Non-Deterministic Random Number Generator"
19882f313e02SArnd Bergmann	select CRYPTO_RNG
1989bb5530e4SStephan Mueller	help
1990bb5530e4SStephan Mueller	  The Jitterentropy RNG is a noise that is intended
1991bb5530e4SStephan Mueller	  to provide seed to another RNG. The RNG does not
1992bb5530e4SStephan Mueller	  perform any cryptographic whitening of the generated
1993bb5530e4SStephan Mueller	  random numbers. This Jitterentropy RNG registers with
1994bb5530e4SStephan Mueller	  the kernel crypto API and can be used by any caller.
1995bb5530e4SStephan Mueller
1996026a733eSStephan Müllerconfig CRYPTO_KDF800108_CTR
1997026a733eSStephan Müller	tristate
1998a88592ccSHerbert Xu	select CRYPTO_HMAC
1999304b4aceSStephan Müller	select CRYPTO_SHA256
2000026a733eSStephan Müller
200103c8efc1SHerbert Xuconfig CRYPTO_USER_API
200203c8efc1SHerbert Xu	tristate
200303c8efc1SHerbert Xu
2004fe869cdbSHerbert Xuconfig CRYPTO_USER_API_HASH
2005fe869cdbSHerbert Xu	tristate "User-space interface for hash algorithms"
20067451708fSHerbert Xu	depends on NET
2007fe869cdbSHerbert Xu	select CRYPTO_HASH
2008fe869cdbSHerbert Xu	select CRYPTO_USER_API
2009fe869cdbSHerbert Xu	help
2010fe869cdbSHerbert Xu	  This option enables the user-spaces interface for hash
2011fe869cdbSHerbert Xu	  algorithms.
2012fe869cdbSHerbert Xu
20138ff59090SHerbert Xuconfig CRYPTO_USER_API_SKCIPHER
20148ff59090SHerbert Xu	tristate "User-space interface for symmetric key cipher algorithms"
20157451708fSHerbert Xu	depends on NET
2016b95bba5dSEric Biggers	select CRYPTO_SKCIPHER
20178ff59090SHerbert Xu	select CRYPTO_USER_API
20188ff59090SHerbert Xu	help
20198ff59090SHerbert Xu	  This option enables the user-spaces interface for symmetric
20208ff59090SHerbert Xu	  key cipher algorithms.
20218ff59090SHerbert Xu
20222f375538SStephan Muellerconfig CRYPTO_USER_API_RNG
20232f375538SStephan Mueller	tristate "User-space interface for random number generator algorithms"
20242f375538SStephan Mueller	depends on NET
20252f375538SStephan Mueller	select CRYPTO_RNG
20262f375538SStephan Mueller	select CRYPTO_USER_API
20272f375538SStephan Mueller	help
20282f375538SStephan Mueller	  This option enables the user-spaces interface for random
20292f375538SStephan Mueller	  number generator algorithms.
20302f375538SStephan Mueller
203177ebdabeSElena Petrovaconfig CRYPTO_USER_API_RNG_CAVP
203277ebdabeSElena Petrova	bool "Enable CAVP testing of DRBG"
203377ebdabeSElena Petrova	depends on CRYPTO_USER_API_RNG && CRYPTO_DRBG
203477ebdabeSElena Petrova	help
203577ebdabeSElena Petrova	  This option enables extra API for CAVP testing via the user-space
203677ebdabeSElena Petrova	  interface: resetting of DRBG entropy, and providing Additional Data.
203777ebdabeSElena Petrova	  This should only be enabled for CAVP testing. You should say
203877ebdabeSElena Petrova	  no unless you know what this is.
203977ebdabeSElena Petrova
2040b64a2d95SHerbert Xuconfig CRYPTO_USER_API_AEAD
2041b64a2d95SHerbert Xu	tristate "User-space interface for AEAD cipher algorithms"
2042b64a2d95SHerbert Xu	depends on NET
2043b64a2d95SHerbert Xu	select CRYPTO_AEAD
2044b95bba5dSEric Biggers	select CRYPTO_SKCIPHER
204572548b09SStephan Mueller	select CRYPTO_NULL
2046b64a2d95SHerbert Xu	select CRYPTO_USER_API
2047b64a2d95SHerbert Xu	help
2048b64a2d95SHerbert Xu	  This option enables the user-spaces interface for AEAD
2049b64a2d95SHerbert Xu	  cipher algorithms.
2050b64a2d95SHerbert Xu
20519ace6771SArd Biesheuvelconfig CRYPTO_USER_API_ENABLE_OBSOLETE
20529ace6771SArd Biesheuvel	bool "Enable obsolete cryptographic algorithms for userspace"
20539ace6771SArd Biesheuvel	depends on CRYPTO_USER_API
20549ace6771SArd Biesheuvel	default y
20559ace6771SArd Biesheuvel	help
20569ace6771SArd Biesheuvel	  Allow obsolete cryptographic algorithms to be selected that have
20579ace6771SArd Biesheuvel	  already been phased out from internal use by the kernel, and are
20589ace6771SArd Biesheuvel	  only useful for userspace clients that still rely on them.
20599ace6771SArd Biesheuvel
2060cac5818cSCorentin Labbeconfig CRYPTO_STATS
2061cac5818cSCorentin Labbe	bool "Crypto usage statistics for User-space"
2062a6a31385SCorentin Labbe	depends on CRYPTO_USER
2063cac5818cSCorentin Labbe	help
2064cac5818cSCorentin Labbe	  This option enables the gathering of crypto stats.
2065cac5818cSCorentin Labbe	  This will collect:
2066cac5818cSCorentin Labbe	  - encrypt/decrypt size and numbers of symmeric operations
2067cac5818cSCorentin Labbe	  - compress/decompress size and numbers of compress operations
2068cac5818cSCorentin Labbe	  - size and numbers of hash operations
2069cac5818cSCorentin Labbe	  - encrypt/decrypt/sign/verify numbers for asymmetric operations
2070cac5818cSCorentin Labbe	  - generate/seed numbers for rng operations
2071cac5818cSCorentin Labbe
2072ee08997fSDmitry Kasatkinconfig CRYPTO_HASH_INFO
2073ee08997fSDmitry Kasatkin	bool
2074ee08997fSDmitry Kasatkin
20751da177e4SLinus Torvaldssource "drivers/crypto/Kconfig"
20768636a1f9SMasahiro Yamadasource "crypto/asymmetric_keys/Kconfig"
20778636a1f9SMasahiro Yamadasource "certs/Kconfig"
20781da177e4SLinus Torvalds
2079cce9e06dSHerbert Xuendif	# if CRYPTO
2080