xref: /linux/crypto/Kconfig (revision fb28fabfad332a731423ffdd2be122b73ea90f1e)
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"
187033b937SEric Biggers	select CRYPTO_LIB_UTILS
191da177e4SLinus Torvalds	help
201da177e4SLinus Torvalds	  This option provides the core Cryptographic API.
211da177e4SLinus Torvalds
22cce9e06dSHerbert Xuif CRYPTO
23cce9e06dSHerbert Xu
24f1f142adSRobert Elliottmenu "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
365a44749fSVladis Dronovconfig CRYPTO_FIPS_NAME
375a44749fSVladis Dronov	string "FIPS Module Name"
385a44749fSVladis Dronov	default "Linux Kernel Cryptographic API"
395a44749fSVladis Dronov	depends on CRYPTO_FIPS
405a44749fSVladis Dronov	help
415a44749fSVladis Dronov	  This option sets the FIPS Module name reported by the Crypto API via
425a44749fSVladis Dronov	  the /proc/sys/crypto/fips_name file.
435a44749fSVladis Dronov
445a44749fSVladis Dronovconfig CRYPTO_FIPS_CUSTOM_VERSION
455a44749fSVladis Dronov	bool "Use Custom FIPS Module Version"
465a44749fSVladis Dronov	depends on CRYPTO_FIPS
475a44749fSVladis Dronov	default n
485a44749fSVladis Dronov
495a44749fSVladis Dronovconfig CRYPTO_FIPS_VERSION
505a44749fSVladis Dronov	string "FIPS Module Version"
515a44749fSVladis Dronov	default "(none)"
525a44749fSVladis Dronov	depends on CRYPTO_FIPS_CUSTOM_VERSION
535a44749fSVladis Dronov	help
545a44749fSVladis Dronov	  This option provides the ability to override the FIPS Module Version.
555a44749fSVladis Dronov	  By default the KERNELRELEASE value is used.
565a44749fSVladis Dronov
57cce9e06dSHerbert Xuconfig CRYPTO_ALGAPI
58cce9e06dSHerbert Xu	tristate
596a0fcbb4SHerbert Xu	select CRYPTO_ALGAPI2
60cce9e06dSHerbert Xu	help
61cce9e06dSHerbert Xu	  This option provides the API for cryptographic algorithms.
62cce9e06dSHerbert Xu
636a0fcbb4SHerbert Xuconfig CRYPTO_ALGAPI2
646a0fcbb4SHerbert Xu	tristate
656a0fcbb4SHerbert Xu
661ae97820SHerbert Xuconfig CRYPTO_AEAD
671ae97820SHerbert Xu	tristate
686a0fcbb4SHerbert Xu	select CRYPTO_AEAD2
691ae97820SHerbert Xu	select CRYPTO_ALGAPI
701ae97820SHerbert Xu
716a0fcbb4SHerbert Xuconfig CRYPTO_AEAD2
726a0fcbb4SHerbert Xu	tristate
736a0fcbb4SHerbert Xu	select CRYPTO_ALGAPI2
74149a3971SHerbert Xu	select CRYPTO_NULL2
75149a3971SHerbert Xu	select CRYPTO_RNG2
766a0fcbb4SHerbert Xu
77b95bba5dSEric Biggersconfig CRYPTO_SKCIPHER
785cde0af2SHerbert Xu	tristate
79b95bba5dSEric Biggers	select CRYPTO_SKCIPHER2
805cde0af2SHerbert Xu	select CRYPTO_ALGAPI
816a0fcbb4SHerbert Xu
82b95bba5dSEric Biggersconfig CRYPTO_SKCIPHER2
836a0fcbb4SHerbert Xu	tristate
846a0fcbb4SHerbert Xu	select CRYPTO_ALGAPI2
856a0fcbb4SHerbert Xu	select CRYPTO_RNG2
865cde0af2SHerbert Xu
87055bcee3SHerbert Xuconfig CRYPTO_HASH
88055bcee3SHerbert Xu	tristate
896a0fcbb4SHerbert Xu	select CRYPTO_HASH2
90055bcee3SHerbert Xu	select CRYPTO_ALGAPI
91055bcee3SHerbert Xu
926a0fcbb4SHerbert Xuconfig CRYPTO_HASH2
936a0fcbb4SHerbert Xu	tristate
946a0fcbb4SHerbert Xu	select CRYPTO_ALGAPI2
956a0fcbb4SHerbert Xu
9617f0f4a4SNeil Hormanconfig CRYPTO_RNG
9717f0f4a4SNeil Horman	tristate
986a0fcbb4SHerbert Xu	select CRYPTO_RNG2
9917f0f4a4SNeil Horman	select CRYPTO_ALGAPI
10017f0f4a4SNeil Horman
1016a0fcbb4SHerbert Xuconfig CRYPTO_RNG2
1026a0fcbb4SHerbert Xu	tristate
1036a0fcbb4SHerbert Xu	select CRYPTO_ALGAPI2
1046a0fcbb4SHerbert Xu
105401e4238SHerbert Xuconfig CRYPTO_RNG_DEFAULT
106401e4238SHerbert Xu	tristate
107401e4238SHerbert Xu	select CRYPTO_DRBG_MENU
108401e4238SHerbert Xu
1093c339ab8STadeusz Strukconfig CRYPTO_AKCIPHER2
1103c339ab8STadeusz Struk	tristate
1113c339ab8STadeusz Struk	select CRYPTO_ALGAPI2
1123c339ab8STadeusz Struk
1133c339ab8STadeusz Strukconfig CRYPTO_AKCIPHER
1143c339ab8STadeusz Struk	tristate
1153c339ab8STadeusz Struk	select CRYPTO_AKCIPHER2
1163c339ab8STadeusz Struk	select CRYPTO_ALGAPI
1173c339ab8STadeusz Struk
1184e5f2c40SSalvatore Benedettoconfig CRYPTO_KPP2
1194e5f2c40SSalvatore Benedetto	tristate
1204e5f2c40SSalvatore Benedetto	select CRYPTO_ALGAPI2
1214e5f2c40SSalvatore Benedetto
1224e5f2c40SSalvatore Benedettoconfig CRYPTO_KPP
1234e5f2c40SSalvatore Benedetto	tristate
1244e5f2c40SSalvatore Benedetto	select CRYPTO_ALGAPI
1254e5f2c40SSalvatore Benedetto	select CRYPTO_KPP2
1264e5f2c40SSalvatore Benedetto
1272ebda74fSGiovanni Cabidduconfig CRYPTO_ACOMP2
1282ebda74fSGiovanni Cabiddu	tristate
1292ebda74fSGiovanni Cabiddu	select CRYPTO_ALGAPI2
1308cd579d2SBart Van Assche	select SGL_ALLOC
1312ebda74fSGiovanni Cabiddu
1322ebda74fSGiovanni Cabidduconfig CRYPTO_ACOMP
1332ebda74fSGiovanni Cabiddu	tristate
1342ebda74fSGiovanni Cabiddu	select CRYPTO_ALGAPI
1352ebda74fSGiovanni Cabiddu	select CRYPTO_ACOMP2
1362ebda74fSGiovanni Cabiddu
1372b8c19dbSHerbert Xuconfig CRYPTO_MANAGER
1382b8c19dbSHerbert Xu	tristate "Cryptographic algorithm manager"
1396a0fcbb4SHerbert Xu	select CRYPTO_MANAGER2
1402b8c19dbSHerbert Xu	help
1412b8c19dbSHerbert Xu	  Create default cryptographic template instantiations such as
1422b8c19dbSHerbert Xu	  cbc(aes).
1432b8c19dbSHerbert Xu
1446a0fcbb4SHerbert Xuconfig CRYPTO_MANAGER2
1456a0fcbb4SHerbert Xu	def_tristate CRYPTO_MANAGER || (CRYPTO_MANAGER!=n && CRYPTO_ALGAPI=y)
1462ebda74fSGiovanni Cabiddu	select CRYPTO_ACOMP2
147*fb28fabfSHerbert Xu	select CRYPTO_AEAD2
148*fb28fabfSHerbert Xu	select CRYPTO_AKCIPHER2
149*fb28fabfSHerbert Xu	select CRYPTO_HASH2
150*fb28fabfSHerbert Xu	select CRYPTO_KPP2
151*fb28fabfSHerbert Xu	select CRYPTO_RNG2
152*fb28fabfSHerbert Xu	select CRYPTO_SKCIPHER2
1536a0fcbb4SHerbert Xu
154a38f7907SSteffen Klassertconfig CRYPTO_USER
155a38f7907SSteffen Klassert	tristate "Userspace cryptographic algorithm configuration"
1565db017aaSHerbert Xu	depends on NET
157a38f7907SSteffen Klassert	select CRYPTO_MANAGER
158a38f7907SSteffen Klassert	help
159d19978f5SValdis.Kletnieks@vt.edu	  Userspace configuration for cryptographic instantiations such as
160a38f7907SSteffen Klassert	  cbc(aes).
161a38f7907SSteffen Klassert
162326a6346SHerbert Xuconfig CRYPTO_MANAGER_DISABLE_TESTS
163326a6346SHerbert Xu	bool "Disable run-time self tests"
16400ca28a5SHerbert Xu	default y
1650b767f96SAlexander Shishkin	help
166326a6346SHerbert Xu	  Disable run-time self tests that normally take place at
167326a6346SHerbert Xu	  algorithm registration.
1680b767f96SAlexander Shishkin
1695b2706a4SEric Biggersconfig CRYPTO_MANAGER_EXTRA_TESTS
1705b2706a4SEric Biggers	bool "Enable extra run-time crypto self tests"
1716569e309SJason A. Donenfeld	depends on DEBUG_KERNEL && !CRYPTO_MANAGER_DISABLE_TESTS && CRYPTO_MANAGER
1725b2706a4SEric Biggers	help
1735b2706a4SEric Biggers	  Enable extra run-time self tests of registered crypto algorithms,
1745b2706a4SEric Biggers	  including randomized fuzz tests.
1755b2706a4SEric Biggers
1765b2706a4SEric Biggers	  This is intended for developer use only, as these tests take much
1775b2706a4SEric Biggers	  longer to run than the normal self tests.
1785b2706a4SEric Biggers
179584fffc8SSebastian Siewiorconfig CRYPTO_NULL
180584fffc8SSebastian Siewior	tristate "Null algorithms"
181149a3971SHerbert Xu	select CRYPTO_NULL2
182584fffc8SSebastian Siewior	help
183584fffc8SSebastian Siewior	  These are 'Null' algorithms, used by IPsec, which do nothing.
184584fffc8SSebastian Siewior
185149a3971SHerbert Xuconfig CRYPTO_NULL2
186dd43c4e9SHerbert Xu	tristate
187149a3971SHerbert Xu	select CRYPTO_ALGAPI2
188b95bba5dSEric Biggers	select CRYPTO_SKCIPHER2
189149a3971SHerbert Xu	select CRYPTO_HASH2
190149a3971SHerbert Xu
1915068c7a8SSteffen Klassertconfig CRYPTO_PCRYPT
1923b4afaf2SKees Cook	tristate "Parallel crypto engine"
1933b4afaf2SKees Cook	depends on SMP
1945068c7a8SSteffen Klassert	select PADATA
1955068c7a8SSteffen Klassert	select CRYPTO_MANAGER
1965068c7a8SSteffen Klassert	select CRYPTO_AEAD
1975068c7a8SSteffen Klassert	help
1985068c7a8SSteffen Klassert	  This converts an arbitrary crypto algorithm into a parallel
1995068c7a8SSteffen Klassert	  algorithm that executes in kernel threads.
2005068c7a8SSteffen Klassert
201584fffc8SSebastian Siewiorconfig CRYPTO_CRYPTD
202584fffc8SSebastian Siewior	tristate "Software async crypto daemon"
203b95bba5dSEric Biggers	select CRYPTO_SKCIPHER
204b8a28251SLoc Ho	select CRYPTO_HASH
205584fffc8SSebastian Siewior	select CRYPTO_MANAGER
206584fffc8SSebastian Siewior	help
207584fffc8SSebastian Siewior	  This is a generic software asynchronous crypto daemon that
208584fffc8SSebastian Siewior	  converts an arbitrary synchronous software crypto algorithm
209584fffc8SSebastian Siewior	  into an asynchronous algorithm that executes in a kernel thread.
210584fffc8SSebastian Siewior
211584fffc8SSebastian Siewiorconfig CRYPTO_AUTHENC
212584fffc8SSebastian Siewior	tristate "Authenc support"
213584fffc8SSebastian Siewior	select CRYPTO_AEAD
214b95bba5dSEric Biggers	select CRYPTO_SKCIPHER
215584fffc8SSebastian Siewior	select CRYPTO_MANAGER
216584fffc8SSebastian Siewior	select CRYPTO_HASH
217e94c6a7aSHerbert Xu	select CRYPTO_NULL
218584fffc8SSebastian Siewior	help
219584fffc8SSebastian Siewior	  Authenc: Combined mode wrapper for IPsec.
220cf514b2aSRobert Elliott
221cf514b2aSRobert Elliott	  This is required for IPSec ESP (XFRM_ESP).
222584fffc8SSebastian Siewior
223584fffc8SSebastian Siewiorconfig CRYPTO_TEST
224584fffc8SSebastian Siewior	tristate "Testing module"
22500ea27f1SArd Biesheuvel	depends on m || EXPERT
226da7f033dSHerbert Xu	select CRYPTO_MANAGER
227584fffc8SSebastian Siewior	help
228584fffc8SSebastian Siewior	  Quick & dirty crypto test module.
229584fffc8SSebastian Siewior
230266d0516SHerbert Xuconfig CRYPTO_SIMD
231266d0516SHerbert Xu	tristate
232266d0516SHerbert Xu	select CRYPTO_CRYPTD
233266d0516SHerbert Xu
234735d37b5SBaolin Wangconfig CRYPTO_ENGINE
235735d37b5SBaolin Wang	tristate
236735d37b5SBaolin Wang
237f1f142adSRobert Elliottendmenu
238f1f142adSRobert Elliott
239f1f142adSRobert Elliottmenu "Public-key cryptography"
2403d6228a5SVitaly Chikunov
2413d6228a5SVitaly Chikunovconfig CRYPTO_RSA
24205b37465SRobert Elliott	tristate "RSA (Rivest-Shamir-Adleman)"
2433d6228a5SVitaly Chikunov	select CRYPTO_AKCIPHER
2443d6228a5SVitaly Chikunov	select CRYPTO_MANAGER
2453d6228a5SVitaly Chikunov	select MPILIB
2463d6228a5SVitaly Chikunov	select ASN1
2473d6228a5SVitaly Chikunov	help
24805b37465SRobert Elliott	  RSA (Rivest-Shamir-Adleman) public key algorithm (RFC8017)
2493d6228a5SVitaly Chikunov
2503d6228a5SVitaly Chikunovconfig CRYPTO_DH
25105b37465SRobert Elliott	tristate "DH (Diffie-Hellman)"
2523d6228a5SVitaly Chikunov	select CRYPTO_KPP
2533d6228a5SVitaly Chikunov	select MPILIB
2543d6228a5SVitaly Chikunov	help
25505b37465SRobert Elliott	  DH (Diffie-Hellman) key exchange algorithm
2563d6228a5SVitaly Chikunov
2577dce5981SNicolai Stangeconfig CRYPTO_DH_RFC7919_GROUPS
25805b37465SRobert Elliott	bool "RFC 7919 FFDHE groups"
2597dce5981SNicolai Stange	depends on CRYPTO_DH
2601e207964SNicolai Stange	select CRYPTO_RNG_DEFAULT
2617dce5981SNicolai Stange	help
26205b37465SRobert Elliott	  FFDHE (Finite-Field-based Diffie-Hellman Ephemeral) groups
26305b37465SRobert Elliott	  defined in RFC7919.
26405b37465SRobert Elliott
26505b37465SRobert Elliott	  Support these finite-field groups in DH key exchanges:
26605b37465SRobert Elliott	  - ffdhe2048, ffdhe3072, ffdhe4096, ffdhe6144, ffdhe8192
26705b37465SRobert Elliott
26805b37465SRobert Elliott	  If unsure, say N.
2697dce5981SNicolai Stange
2704a2289daSVitaly Chikunovconfig CRYPTO_ECC
2714a2289daSVitaly Chikunov	tristate
27238aa192aSArnd Bergmann	select CRYPTO_RNG_DEFAULT
2734a2289daSVitaly Chikunov
2743d6228a5SVitaly Chikunovconfig CRYPTO_ECDH
27505b37465SRobert Elliott	tristate "ECDH (Elliptic Curve Diffie-Hellman)"
2764a2289daSVitaly Chikunov	select CRYPTO_ECC
2773d6228a5SVitaly Chikunov	select CRYPTO_KPP
2783d6228a5SVitaly Chikunov	help
27905b37465SRobert Elliott	  ECDH (Elliptic Curve Diffie-Hellman) key exchange algorithm
28005b37465SRobert Elliott	  using curves P-192, P-256, and P-384 (FIPS 186)
2813d6228a5SVitaly Chikunov
2824e660291SStefan Bergerconfig CRYPTO_ECDSA
28305b37465SRobert Elliott	tristate "ECDSA (Elliptic Curve Digital Signature Algorithm)"
2844e660291SStefan Berger	select CRYPTO_ECC
2854e660291SStefan Berger	select CRYPTO_AKCIPHER
2864e660291SStefan Berger	select ASN1
2874e660291SStefan Berger	help
28805b37465SRobert Elliott	  ECDSA (Elliptic Curve Digital Signature Algorithm) (FIPS 186,
28905b37465SRobert Elliott	  ISO/IEC 14888-3)
29005b37465SRobert Elliott	  using curves P-192, P-256, and P-384
29105b37465SRobert Elliott
29205b37465SRobert Elliott	  Only signature verification is implemented.
2934e660291SStefan Berger
2940d7a7864SVitaly Chikunovconfig CRYPTO_ECRDSA
29505b37465SRobert Elliott	tristate "EC-RDSA (Elliptic Curve Russian Digital Signature Algorithm)"
2960d7a7864SVitaly Chikunov	select CRYPTO_ECC
2970d7a7864SVitaly Chikunov	select CRYPTO_AKCIPHER
2980d7a7864SVitaly Chikunov	select CRYPTO_STREEBOG
2991036633eSVitaly Chikunov	select OID_REGISTRY
3001036633eSVitaly Chikunov	select ASN1
3010d7a7864SVitaly Chikunov	help
3020d7a7864SVitaly Chikunov	  Elliptic Curve Russian Digital Signature Algorithm (GOST R 34.10-2012,
30305b37465SRobert Elliott	  RFC 7091, ISO/IEC 14888-3)
30405b37465SRobert Elliott
30505b37465SRobert Elliott	  One of the Russian cryptographic standard algorithms (called GOST
30605b37465SRobert Elliott	  algorithms). Only signature verification is implemented.
3070d7a7864SVitaly Chikunov
308ea7ecb66STianjia Zhangconfig CRYPTO_SM2
30905b37465SRobert Elliott	tristate "SM2 (ShangMi 2)"
310d2825fa9SJason A. Donenfeld	select CRYPTO_SM3
311ea7ecb66STianjia Zhang	select CRYPTO_AKCIPHER
312ea7ecb66STianjia Zhang	select CRYPTO_MANAGER
313ea7ecb66STianjia Zhang	select MPILIB
314ea7ecb66STianjia Zhang	select ASN1
315ea7ecb66STianjia Zhang	help
31605b37465SRobert Elliott	  SM2 (ShangMi 2) public key algorithm
31705b37465SRobert Elliott
31805b37465SRobert Elliott	  Published by State Encryption Management Bureau, China,
319ea7ecb66STianjia Zhang	  as specified by OSCCA GM/T 0003.1-2012 -- 0003.5-2012.
320ea7ecb66STianjia Zhang
321ea7ecb66STianjia Zhang	  References:
32205b37465SRobert Elliott	  https://datatracker.ietf.org/doc/draft-shen-sm2-ecdsa/
323ea7ecb66STianjia Zhang	  http://www.oscca.gov.cn/sca/xxgk/2010-12/17/content_1002386.shtml
324ea7ecb66STianjia Zhang	  http://www.gmbz.org.cn/main/bzlb.html
325ea7ecb66STianjia Zhang
326ee772cb6SArd Biesheuvelconfig CRYPTO_CURVE25519
32705b37465SRobert Elliott	tristate "Curve25519"
328ee772cb6SArd Biesheuvel	select CRYPTO_KPP
329ee772cb6SArd Biesheuvel	select CRYPTO_LIB_CURVE25519_GENERIC
33005b37465SRobert Elliott	help
33105b37465SRobert Elliott	  Curve25519 elliptic curve (RFC7748)
332ee772cb6SArd Biesheuvel
333f1f142adSRobert Elliottendmenu
334584fffc8SSebastian Siewior
335f1f142adSRobert Elliottmenu "Block ciphers"
3361da177e4SLinus Torvalds
3371da177e4SLinus Torvaldsconfig CRYPTO_AES
338cf514b2aSRobert Elliott	tristate "AES (Advanced Encryption Standard)"
339cce9e06dSHerbert Xu	select CRYPTO_ALGAPI
3405bb12d78SArd Biesheuvel	select CRYPTO_LIB_AES
3411da177e4SLinus Torvalds	help
342cf514b2aSRobert Elliott	  AES cipher algorithms (Rijndael)(FIPS-197, ISO/IEC 18033-3)
3431da177e4SLinus Torvalds
3441da177e4SLinus Torvalds	  Rijndael appears to be consistently a very good performer in
3451da177e4SLinus Torvalds	  both hardware and software across a wide range of computing
3461da177e4SLinus Torvalds	  environments regardless of its use in feedback or non-feedback
3471da177e4SLinus Torvalds	  modes. Its key setup time is excellent, and its key agility is
3481da177e4SLinus Torvalds	  good. Rijndael's very low memory requirements make it very well
3491da177e4SLinus Torvalds	  suited for restricted-space environments, in which it also
3501da177e4SLinus Torvalds	  demonstrates excellent performance. Rijndael's operations are
3511da177e4SLinus Torvalds	  among the easiest to defend against power and timing attacks.
3521da177e4SLinus Torvalds
3531da177e4SLinus Torvalds	  The AES specifies three key sizes: 128, 192 and 256 bits
3541da177e4SLinus Torvalds
355b5e0b032SArd Biesheuvelconfig CRYPTO_AES_TI
356cf514b2aSRobert Elliott	tristate "AES (Advanced Encryption Standard) (fixed time)"
357b5e0b032SArd Biesheuvel	select CRYPTO_ALGAPI
358e59c1c98SArd Biesheuvel	select CRYPTO_LIB_AES
359b5e0b032SArd Biesheuvel	help
360cf514b2aSRobert Elliott	  AES cipher algorithms (Rijndael)(FIPS-197, ISO/IEC 18033-3)
361cf514b2aSRobert Elliott
362b5e0b032SArd Biesheuvel	  This is a generic implementation of AES that attempts to eliminate
363b5e0b032SArd Biesheuvel	  data dependent latencies as much as possible without affecting
364b5e0b032SArd Biesheuvel	  performance too much. It is intended for use by the generic CCM
365b5e0b032SArd Biesheuvel	  and GCM drivers, and other CTR or CMAC/XCBC based modes that rely
366b5e0b032SArd Biesheuvel	  solely on encryption (although decryption is supported as well, but
367b5e0b032SArd Biesheuvel	  with a more dramatic performance hit)
368b5e0b032SArd Biesheuvel
369b5e0b032SArd Biesheuvel	  Instead of using 16 lookup tables of 1 KB each, (8 for encryption and
370b5e0b032SArd Biesheuvel	  8 for decryption), this implementation only uses just two S-boxes of
371b5e0b032SArd Biesheuvel	  256 bytes each, and attempts to eliminate data dependent latencies by
372b5e0b032SArd Biesheuvel	  prefetching the entire table into the cache at the start of each
3730a6a40c2SEric Biggers	  block. Interrupts are also disabled to avoid races where cachelines
3740a6a40c2SEric Biggers	  are evicted when the CPU is interrupted to do something else.
375b5e0b032SArd Biesheuvel
3761da177e4SLinus Torvaldsconfig CRYPTO_ANUBIS
377cf514b2aSRobert Elliott	tristate "Anubis"
3781674aea5SArd Biesheuvel	depends on CRYPTO_USER_API_ENABLE_OBSOLETE
379cce9e06dSHerbert Xu	select CRYPTO_ALGAPI
3801da177e4SLinus Torvalds	help
381cf514b2aSRobert Elliott	  Anubis cipher algorithm
3821da177e4SLinus Torvalds
3831da177e4SLinus Torvalds	  Anubis is a variable key length cipher which can use keys from
3841da177e4SLinus Torvalds	  128 bits to 320 bits in length.  It was evaluated as a entrant
3851da177e4SLinus Torvalds	  in the NESSIE competition.
3861da177e4SLinus Torvalds
387cf514b2aSRobert Elliott	  See https://web.archive.org/web/20160606112246/http://www.larc.usp.br/~pbarreto/AnubisPage.html
388cf514b2aSRobert Elliott	  for further information.
3891da177e4SLinus Torvalds
390f1f142adSRobert Elliottconfig CRYPTO_ARIA
391cf514b2aSRobert Elliott	tristate "ARIA"
392f1f142adSRobert Elliott	select CRYPTO_ALGAPI
393e2ee95b8SHye-Shik Chang	help
394cf514b2aSRobert Elliott	  ARIA cipher algorithm (RFC5794)
395e2ee95b8SHye-Shik Chang
396f1f142adSRobert Elliott	  ARIA is a standard encryption algorithm of the Republic of Korea.
397f1f142adSRobert Elliott	  The ARIA specifies three key sizes and rounds.
398f1f142adSRobert Elliott	  128-bit: 12 rounds.
399f1f142adSRobert Elliott	  192-bit: 14 rounds.
400f1f142adSRobert Elliott	  256-bit: 16 rounds.
401f1f142adSRobert Elliott
402cf514b2aSRobert Elliott	  See:
403cf514b2aSRobert Elliott	  https://seed.kisa.or.kr/kisa/algorithm/EgovAriaInfo.do
404584fffc8SSebastian Siewior
405584fffc8SSebastian Siewiorconfig CRYPTO_BLOWFISH
406cf514b2aSRobert Elliott	tristate "Blowfish"
407584fffc8SSebastian Siewior	select CRYPTO_ALGAPI
40852ba867cSJussi Kivilinna	select CRYPTO_BLOWFISH_COMMON
409584fffc8SSebastian Siewior	help
410cf514b2aSRobert Elliott	  Blowfish cipher algorithm, by Bruce Schneier
411584fffc8SSebastian Siewior
412584fffc8SSebastian Siewior	  This is a variable key length cipher which can use keys from 32
413584fffc8SSebastian Siewior	  bits to 448 bits in length.  It's fast, simple and specifically
414584fffc8SSebastian Siewior	  designed for use on "large microprocessors".
415e2ee95b8SHye-Shik Chang
416cf514b2aSRobert Elliott	  See https://www.schneier.com/blowfish.html for further information.
417584fffc8SSebastian Siewior
41852ba867cSJussi Kivilinnaconfig CRYPTO_BLOWFISH_COMMON
41952ba867cSJussi Kivilinna	tristate
42052ba867cSJussi Kivilinna	help
42152ba867cSJussi Kivilinna	  Common parts of the Blowfish cipher algorithm shared by the
42252ba867cSJussi Kivilinna	  generic c and the assembler implementations.
42352ba867cSJussi Kivilinna
424584fffc8SSebastian Siewiorconfig CRYPTO_CAMELLIA
425cf514b2aSRobert Elliott	tristate "Camellia"
426584fffc8SSebastian Siewior	select CRYPTO_ALGAPI
427584fffc8SSebastian Siewior	help
428cf514b2aSRobert Elliott	  Camellia cipher algorithms (ISO/IEC 18033-3)
429584fffc8SSebastian Siewior
430584fffc8SSebastian Siewior	  Camellia is a symmetric key block cipher developed jointly
431584fffc8SSebastian Siewior	  at NTT and Mitsubishi Electric Corporation.
432584fffc8SSebastian Siewior
433584fffc8SSebastian Siewior	  The Camellia specifies three key sizes: 128, 192 and 256 bits.
434584fffc8SSebastian Siewior
435cf514b2aSRobert Elliott	  See https://info.isl.ntt.co.jp/crypt/eng/camellia/ for further information.
436584fffc8SSebastian Siewior
437044ab525SJussi Kivilinnaconfig CRYPTO_CAST_COMMON
438044ab525SJussi Kivilinna	tristate
439044ab525SJussi Kivilinna	help
440044ab525SJussi Kivilinna	  Common parts of the CAST cipher algorithms shared by the
441044ab525SJussi Kivilinna	  generic c and the assembler implementations.
442044ab525SJussi Kivilinna
443584fffc8SSebastian Siewiorconfig CRYPTO_CAST5
444cf514b2aSRobert Elliott	tristate "CAST5 (CAST-128)"
445584fffc8SSebastian Siewior	select CRYPTO_ALGAPI
446044ab525SJussi Kivilinna	select CRYPTO_CAST_COMMON
447584fffc8SSebastian Siewior	help
448cf514b2aSRobert Elliott	  CAST5 (CAST-128) cipher algorithm (RFC2144, ISO/IEC 18033-3)
449584fffc8SSebastian Siewior
450584fffc8SSebastian Siewiorconfig CRYPTO_CAST6
451cf514b2aSRobert Elliott	tristate "CAST6 (CAST-256)"
452584fffc8SSebastian Siewior	select CRYPTO_ALGAPI
453044ab525SJussi Kivilinna	select CRYPTO_CAST_COMMON
454584fffc8SSebastian Siewior	help
455cf514b2aSRobert Elliott	  CAST6 (CAST-256) encryption algorithm (RFC2612)
456584fffc8SSebastian Siewior
457584fffc8SSebastian Siewiorconfig CRYPTO_DES
458cf514b2aSRobert Elliott	tristate "DES and Triple DES EDE"
459584fffc8SSebastian Siewior	select CRYPTO_ALGAPI
46004007b0eSArd Biesheuvel	select CRYPTO_LIB_DES
461584fffc8SSebastian Siewior	help
462cf514b2aSRobert Elliott	  DES (Data Encryption Standard)(FIPS 46-2, ISO/IEC 18033-3) and
463cf514b2aSRobert Elliott	  Triple DES EDE (Encrypt/Decrypt/Encrypt) (FIPS 46-3, ISO/IEC 18033-3)
464cf514b2aSRobert Elliott	  cipher algorithms
465584fffc8SSebastian Siewior
466584fffc8SSebastian Siewiorconfig CRYPTO_FCRYPT
467cf514b2aSRobert Elliott	tristate "FCrypt"
468584fffc8SSebastian Siewior	select CRYPTO_ALGAPI
469b95bba5dSEric Biggers	select CRYPTO_SKCIPHER
470584fffc8SSebastian Siewior	help
471cf514b2aSRobert Elliott	  FCrypt algorithm used by RxRPC
472cf514b2aSRobert Elliott
473cf514b2aSRobert Elliott	  See https://ota.polyonymo.us/fcrypt-paper.txt
474584fffc8SSebastian Siewior
475584fffc8SSebastian Siewiorconfig CRYPTO_KHAZAD
476cf514b2aSRobert Elliott	tristate "Khazad"
4771674aea5SArd Biesheuvel	depends on CRYPTO_USER_API_ENABLE_OBSOLETE
478584fffc8SSebastian Siewior	select CRYPTO_ALGAPI
479584fffc8SSebastian Siewior	help
480cf514b2aSRobert Elliott	  Khazad cipher algorithm
481584fffc8SSebastian Siewior
482584fffc8SSebastian Siewior	  Khazad was a finalist in the initial NESSIE competition.  It is
483584fffc8SSebastian Siewior	  an algorithm optimized for 64-bit processors with good performance
484584fffc8SSebastian Siewior	  on 32-bit processors.  Khazad uses an 128 bit key size.
485584fffc8SSebastian Siewior
486cf514b2aSRobert Elliott	  See https://web.archive.org/web/20171011071731/http://www.larc.usp.br/~pbarreto/KhazadPage.html
487cf514b2aSRobert Elliott	  for further information.
488e2ee95b8SHye-Shik Chang
489584fffc8SSebastian Siewiorconfig CRYPTO_SEED
490cf514b2aSRobert Elliott	tristate "SEED"
4911674aea5SArd Biesheuvel	depends on CRYPTO_USER_API_ENABLE_OBSOLETE
492584fffc8SSebastian Siewior	select CRYPTO_ALGAPI
493584fffc8SSebastian Siewior	help
494cf514b2aSRobert Elliott	  SEED cipher algorithm (RFC4269, ISO/IEC 18033-3)
495584fffc8SSebastian Siewior
496584fffc8SSebastian Siewior	  SEED is a 128-bit symmetric key block cipher that has been
497584fffc8SSebastian Siewior	  developed by KISA (Korea Information Security Agency) as a
498584fffc8SSebastian Siewior	  national standard encryption algorithm of the Republic of Korea.
499584fffc8SSebastian Siewior	  It is a 16 round block cipher with the key size of 128 bit.
500584fffc8SSebastian Siewior
501cf514b2aSRobert Elliott	  See https://seed.kisa.or.kr/kisa/algorithm/EgovSeedInfo.do
502cf514b2aSRobert Elliott	  for further information.
503584fffc8SSebastian Siewior
504584fffc8SSebastian Siewiorconfig CRYPTO_SERPENT
505cf514b2aSRobert Elliott	tristate "Serpent"
506584fffc8SSebastian Siewior	select CRYPTO_ALGAPI
507584fffc8SSebastian Siewior	help
508cf514b2aSRobert Elliott	  Serpent cipher algorithm, by Anderson, Biham & Knudsen
509584fffc8SSebastian Siewior
510584fffc8SSebastian Siewior	  Keys are allowed to be from 0 to 256 bits in length, in steps
511784506a1SArd Biesheuvel	  of 8 bits.
512584fffc8SSebastian Siewior
513cf514b2aSRobert Elliott	  See https://www.cl.cam.ac.uk/~rja14/serpent.html for further information.
514584fffc8SSebastian Siewior
515747c8ce4SGilad Ben-Yossefconfig CRYPTO_SM4
516d2825fa9SJason A. Donenfeld	tristate
517d2825fa9SJason A. Donenfeld
518d2825fa9SJason A. Donenfeldconfig CRYPTO_SM4_GENERIC
519cf514b2aSRobert Elliott	tristate "SM4 (ShangMi 4)"
520747c8ce4SGilad Ben-Yossef	select CRYPTO_ALGAPI
521d2825fa9SJason A. Donenfeld	select CRYPTO_SM4
522747c8ce4SGilad Ben-Yossef	help
523cf514b2aSRobert Elliott	  SM4 cipher algorithms (OSCCA GB/T 32907-2016,
524cf514b2aSRobert Elliott	  ISO/IEC 18033-3:2010/Amd 1:2021)
525747c8ce4SGilad Ben-Yossef
526747c8ce4SGilad Ben-Yossef	  SM4 (GBT.32907-2016) is a cryptographic standard issued by the
527747c8ce4SGilad Ben-Yossef	  Organization of State Commercial Administration of China (OSCCA)
528747c8ce4SGilad Ben-Yossef	  as an authorized cryptographic algorithms for the use within China.
529747c8ce4SGilad Ben-Yossef
530747c8ce4SGilad Ben-Yossef	  SMS4 was originally created for use in protecting wireless
531747c8ce4SGilad Ben-Yossef	  networks, and is mandated in the Chinese National Standard for
532747c8ce4SGilad Ben-Yossef	  Wireless LAN WAPI (Wired Authentication and Privacy Infrastructure)
533747c8ce4SGilad Ben-Yossef	  (GB.15629.11-2003).
534747c8ce4SGilad Ben-Yossef
535747c8ce4SGilad Ben-Yossef	  The latest SM4 standard (GBT.32907-2016) was proposed by OSCCA and
536747c8ce4SGilad Ben-Yossef	  standardized through TC 260 of the Standardization Administration
537747c8ce4SGilad Ben-Yossef	  of the People's Republic of China (SAC).
538747c8ce4SGilad Ben-Yossef
539747c8ce4SGilad Ben-Yossef	  The input, output, and key of SMS4 are each 128 bits.
540747c8ce4SGilad Ben-Yossef
541cf514b2aSRobert Elliott	  See https://eprint.iacr.org/2008/329.pdf for further information.
542747c8ce4SGilad Ben-Yossef
543747c8ce4SGilad Ben-Yossef	  If unsure, say N.
544747c8ce4SGilad Ben-Yossef
545584fffc8SSebastian Siewiorconfig CRYPTO_TEA
546cf514b2aSRobert Elliott	tristate "TEA, XTEA and XETA"
5471674aea5SArd Biesheuvel	depends on CRYPTO_USER_API_ENABLE_OBSOLETE
548584fffc8SSebastian Siewior	select CRYPTO_ALGAPI
549584fffc8SSebastian Siewior	help
550cf514b2aSRobert Elliott	  TEA (Tiny Encryption Algorithm) cipher algorithms
551584fffc8SSebastian Siewior
552584fffc8SSebastian Siewior	  Tiny Encryption Algorithm is a simple cipher that uses
553584fffc8SSebastian Siewior	  many rounds for security.  It is very fast and uses
554584fffc8SSebastian Siewior	  little memory.
555584fffc8SSebastian Siewior
556584fffc8SSebastian Siewior	  Xtendend Tiny Encryption Algorithm is a modification to
557584fffc8SSebastian Siewior	  the TEA algorithm to address a potential key weakness
558584fffc8SSebastian Siewior	  in the TEA algorithm.
559584fffc8SSebastian Siewior
560584fffc8SSebastian Siewior	  Xtendend Encryption Tiny Algorithm is a mis-implementation
561584fffc8SSebastian Siewior	  of the XTEA algorithm for compatibility purposes.
562584fffc8SSebastian Siewior
563584fffc8SSebastian Siewiorconfig CRYPTO_TWOFISH
564cf514b2aSRobert Elliott	tristate "Twofish"
565584fffc8SSebastian Siewior	select CRYPTO_ALGAPI
566584fffc8SSebastian Siewior	select CRYPTO_TWOFISH_COMMON
567584fffc8SSebastian Siewior	help
568cf514b2aSRobert Elliott	  Twofish cipher algorithm
569584fffc8SSebastian Siewior
570584fffc8SSebastian Siewior	  Twofish was submitted as an AES (Advanced Encryption Standard)
571584fffc8SSebastian Siewior	  candidate cipher by researchers at CounterPane Systems.  It is a
572584fffc8SSebastian Siewior	  16 round block cipher supporting key sizes of 128, 192, and 256
573584fffc8SSebastian Siewior	  bits.
574584fffc8SSebastian Siewior
575cf514b2aSRobert Elliott	  See https://www.schneier.com/twofish.html for further information.
576584fffc8SSebastian Siewior
577584fffc8SSebastian Siewiorconfig CRYPTO_TWOFISH_COMMON
578584fffc8SSebastian Siewior	tristate
579584fffc8SSebastian Siewior	help
580584fffc8SSebastian Siewior	  Common parts of the Twofish cipher algorithm shared by the
581584fffc8SSebastian Siewior	  generic c and the assembler implementations.
582584fffc8SSebastian Siewior
583f1f142adSRobert Elliottendmenu
584f1f142adSRobert Elliott
585f1f142adSRobert Elliottmenu "Length-preserving ciphers and modes"
586f1f142adSRobert Elliott
587f1f142adSRobert Elliottconfig CRYPTO_ADIANTUM
588cf514b2aSRobert Elliott	tristate "Adiantum"
589f1f142adSRobert Elliott	select CRYPTO_CHACHA20
590f1f142adSRobert Elliott	select CRYPTO_LIB_POLY1305_GENERIC
591f1f142adSRobert Elliott	select CRYPTO_NHPOLY1305
592f1f142adSRobert Elliott	select CRYPTO_MANAGER
593f1f142adSRobert Elliott	help
594cf514b2aSRobert Elliott	  Adiantum tweakable, length-preserving encryption mode
595cf514b2aSRobert Elliott
596cf514b2aSRobert Elliott	  Designed for fast and secure disk encryption, especially on
597f1f142adSRobert Elliott	  CPUs without dedicated crypto instructions.  It encrypts
598f1f142adSRobert Elliott	  each sector using the XChaCha12 stream cipher, two passes of
599f1f142adSRobert Elliott	  an ε-almost-∆-universal hash function, and an invocation of
600f1f142adSRobert Elliott	  the AES-256 block cipher on a single 16-byte block.  On CPUs
601f1f142adSRobert Elliott	  without AES instructions, Adiantum is much faster than
602f1f142adSRobert Elliott	  AES-XTS.
603f1f142adSRobert Elliott
604f1f142adSRobert Elliott	  Adiantum's security is provably reducible to that of its
605f1f142adSRobert Elliott	  underlying stream and block ciphers, subject to a security
606f1f142adSRobert Elliott	  bound.  Unlike XTS, Adiantum is a true wide-block encryption
607f1f142adSRobert Elliott	  mode, so it actually provides an even stronger notion of
608f1f142adSRobert Elliott	  security than XTS, subject to the security bound.
609f1f142adSRobert Elliott
610f1f142adSRobert Elliott	  If unsure, say N.
611f1f142adSRobert Elliott
612f1f142adSRobert Elliottconfig CRYPTO_ARC4
613cf514b2aSRobert Elliott	tristate "ARC4 (Alleged Rivest Cipher 4)"
614f1f142adSRobert Elliott	depends on CRYPTO_USER_API_ENABLE_OBSOLETE
615f1f142adSRobert Elliott	select CRYPTO_SKCIPHER
616f1f142adSRobert Elliott	select CRYPTO_LIB_ARC4
617f1f142adSRobert Elliott	help
618cf514b2aSRobert Elliott	  ARC4 cipher algorithm
619f1f142adSRobert Elliott
620f1f142adSRobert Elliott	  ARC4 is a stream cipher using keys ranging from 8 bits to 2048
621f1f142adSRobert Elliott	  bits in length.  This algorithm is required for driver-based
622f1f142adSRobert Elliott	  WEP, but it should not be for other purposes because of the
623f1f142adSRobert Elliott	  weakness of the algorithm.
624f1f142adSRobert Elliott
625f1f142adSRobert Elliottconfig CRYPTO_CHACHA20
626cf514b2aSRobert Elliott	tristate "ChaCha"
627f1f142adSRobert Elliott	select CRYPTO_LIB_CHACHA_GENERIC
628f1f142adSRobert Elliott	select CRYPTO_SKCIPHER
629f1f142adSRobert Elliott	help
630cf514b2aSRobert Elliott	  The ChaCha20, XChaCha20, and XChaCha12 stream cipher algorithms
631f1f142adSRobert Elliott
632f1f142adSRobert Elliott	  ChaCha20 is a 256-bit high-speed stream cipher designed by Daniel J.
633f1f142adSRobert Elliott	  Bernstein and further specified in RFC7539 for use in IETF protocols.
634cf514b2aSRobert Elliott	  This is the portable C implementation of ChaCha20.  See
635cf514b2aSRobert Elliott	  https://cr.yp.to/chacha/chacha-20080128.pdf for further information.
636f1f142adSRobert Elliott
637f1f142adSRobert Elliott	  XChaCha20 is the application of the XSalsa20 construction to ChaCha20
638f1f142adSRobert Elliott	  rather than to Salsa20.  XChaCha20 extends ChaCha20's nonce length
639f1f142adSRobert Elliott	  from 64 bits (or 96 bits using the RFC7539 convention) to 192 bits,
640cf514b2aSRobert Elliott	  while provably retaining ChaCha20's security.  See
641cf514b2aSRobert Elliott	  https://cr.yp.to/snuffle/xsalsa-20081128.pdf for further information.
642f1f142adSRobert Elliott
643f1f142adSRobert Elliott	  XChaCha12 is XChaCha20 reduced to 12 rounds, with correspondingly
644f1f142adSRobert Elliott	  reduced security margin but increased performance.  It can be needed
645f1f142adSRobert Elliott	  in some performance-sensitive scenarios.
646f1f142adSRobert Elliott
647f1f142adSRobert Elliottconfig CRYPTO_CBC
648cf514b2aSRobert Elliott	tristate "CBC (Cipher Block Chaining)"
649f1f142adSRobert Elliott	select CRYPTO_SKCIPHER
650f1f142adSRobert Elliott	select CRYPTO_MANAGER
651f1f142adSRobert Elliott	help
652cf514b2aSRobert Elliott	  CBC (Cipher Block Chaining) mode (NIST SP800-38A)
653cf514b2aSRobert Elliott
654cf514b2aSRobert Elliott	  This block cipher mode is required for IPSec ESP (XFRM_ESP).
655f1f142adSRobert Elliott
656f1f142adSRobert Elliottconfig CRYPTO_CFB
657cf514b2aSRobert Elliott	tristate "CFB (Cipher Feedback)"
658f1f142adSRobert Elliott	select CRYPTO_SKCIPHER
659f1f142adSRobert Elliott	select CRYPTO_MANAGER
660f1f142adSRobert Elliott	help
661cf514b2aSRobert Elliott	  CFB (Cipher Feedback) mode (NIST SP800-38A)
662cf514b2aSRobert Elliott
663cf514b2aSRobert Elliott	  This block cipher mode is required for TPM2 Cryptography.
664f1f142adSRobert Elliott
665f1f142adSRobert Elliottconfig CRYPTO_CTR
666cf514b2aSRobert Elliott	tristate "CTR (Counter)"
667f1f142adSRobert Elliott	select CRYPTO_SKCIPHER
668f1f142adSRobert Elliott	select CRYPTO_MANAGER
669f1f142adSRobert Elliott	help
670cf514b2aSRobert Elliott	  CTR (Counter) mode (NIST SP800-38A)
671f1f142adSRobert Elliott
672f1f142adSRobert Elliottconfig CRYPTO_CTS
673cf514b2aSRobert Elliott	tristate "CTS (Cipher Text Stealing)"
674f1f142adSRobert Elliott	select CRYPTO_SKCIPHER
675f1f142adSRobert Elliott	select CRYPTO_MANAGER
676f1f142adSRobert Elliott	help
677cf514b2aSRobert Elliott	  CBC-CS3 variant of CTS (Cipher Text Stealing) (NIST
678cf514b2aSRobert Elliott	  Addendum to SP800-38A (October 2010))
679cf514b2aSRobert Elliott
680f1f142adSRobert Elliott	  This mode is required for Kerberos gss mechanism support
681f1f142adSRobert Elliott	  for AES encryption.
682f1f142adSRobert Elliott
683f1f142adSRobert Elliottconfig CRYPTO_ECB
684cf514b2aSRobert Elliott	tristate "ECB (Electronic Codebook)"
685f1f142adSRobert Elliott	select CRYPTO_SKCIPHER
686f1f142adSRobert Elliott	select CRYPTO_MANAGER
687f1f142adSRobert Elliott	help
688cf514b2aSRobert Elliott	  ECB (Electronic Codebook) mode (NIST SP800-38A)
689f1f142adSRobert Elliott
690f1f142adSRobert Elliottconfig CRYPTO_HCTR2
691cf514b2aSRobert Elliott	tristate "HCTR2"
692f1f142adSRobert Elliott	select CRYPTO_XCTR
693f1f142adSRobert Elliott	select CRYPTO_POLYVAL
694f1f142adSRobert Elliott	select CRYPTO_MANAGER
695f1f142adSRobert Elliott	help
696cf514b2aSRobert Elliott	  HCTR2 length-preserving encryption mode
697cf514b2aSRobert Elliott
698cf514b2aSRobert Elliott	  A mode for storage encryption that is efficient on processors with
699cf514b2aSRobert Elliott	  instructions to accelerate AES and carryless multiplication, e.g.
700cf514b2aSRobert Elliott	  x86 processors with AES-NI and CLMUL, and ARM processors with the
701cf514b2aSRobert Elliott	  ARMv8 crypto extensions.
702cf514b2aSRobert Elliott
703cf514b2aSRobert Elliott	  See https://eprint.iacr.org/2021/1441
704f1f142adSRobert Elliott
705f1f142adSRobert Elliottconfig CRYPTO_KEYWRAP
706cf514b2aSRobert Elliott	tristate "KW (AES Key Wrap)"
707f1f142adSRobert Elliott	select CRYPTO_SKCIPHER
708f1f142adSRobert Elliott	select CRYPTO_MANAGER
709f1f142adSRobert Elliott	help
710cf514b2aSRobert Elliott	  KW (AES Key Wrap) authenticated encryption mode (NIST SP800-38F
711cf514b2aSRobert Elliott	  and RFC3394) without padding.
712f1f142adSRobert Elliott
713f1f142adSRobert Elliottconfig CRYPTO_LRW
714cf514b2aSRobert Elliott	tristate "LRW (Liskov Rivest Wagner)"
71561c581a4SArd Biesheuvel	select CRYPTO_LIB_GF128MUL
716f1f142adSRobert Elliott	select CRYPTO_SKCIPHER
717f1f142adSRobert Elliott	select CRYPTO_MANAGER
718f1f142adSRobert Elliott	select CRYPTO_ECB
719f1f142adSRobert Elliott	help
720cf514b2aSRobert Elliott	  LRW (Liskov Rivest Wagner) mode
721cf514b2aSRobert Elliott
722cf514b2aSRobert Elliott	  A tweakable, non malleable, non movable
723f1f142adSRobert Elliott	  narrow block cipher mode for dm-crypt.  Use it with cipher
724f1f142adSRobert Elliott	  specification string aes-lrw-benbi, the key must be 256, 320 or 384.
725f1f142adSRobert Elliott	  The first 128, 192 or 256 bits in the key are used for AES and the
726f1f142adSRobert Elliott	  rest is used to tie each cipher block to its logical position.
727f1f142adSRobert Elliott
728cf514b2aSRobert Elliott	  See https://people.csail.mit.edu/rivest/pubs/LRW02.pdf
729cf514b2aSRobert Elliott
730f1f142adSRobert Elliottconfig CRYPTO_OFB
731cf514b2aSRobert Elliott	tristate "OFB (Output Feedback)"
732f1f142adSRobert Elliott	select CRYPTO_SKCIPHER
733f1f142adSRobert Elliott	select CRYPTO_MANAGER
734f1f142adSRobert Elliott	help
735cf514b2aSRobert Elliott	  OFB (Output Feedback) mode (NIST SP800-38A)
736cf514b2aSRobert Elliott
737cf514b2aSRobert Elliott	  This mode makes a block cipher into a synchronous
738f1f142adSRobert Elliott	  stream cipher. It generates keystream blocks, which are then XORed
739f1f142adSRobert Elliott	  with the plaintext blocks to get the ciphertext. Flipping a bit in the
740f1f142adSRobert Elliott	  ciphertext produces a flipped bit in the plaintext at the same
741f1f142adSRobert Elliott	  location. This property allows many error correcting codes to function
742f1f142adSRobert Elliott	  normally even when applied before encryption.
743f1f142adSRobert Elliott
744f1f142adSRobert Elliottconfig CRYPTO_PCBC
745cf514b2aSRobert Elliott	tristate "PCBC (Propagating Cipher Block Chaining)"
746f1f142adSRobert Elliott	select CRYPTO_SKCIPHER
747f1f142adSRobert Elliott	select CRYPTO_MANAGER
748f1f142adSRobert Elliott	help
749cf514b2aSRobert Elliott	  PCBC (Propagating Cipher Block Chaining) mode
750cf514b2aSRobert Elliott
751cf514b2aSRobert Elliott	  This block cipher mode is required for RxRPC.
752f1f142adSRobert Elliott
753f1f142adSRobert Elliottconfig CRYPTO_XCTR
754f1f142adSRobert Elliott	tristate
755f1f142adSRobert Elliott	select CRYPTO_SKCIPHER
756f1f142adSRobert Elliott	select CRYPTO_MANAGER
757f1f142adSRobert Elliott	help
758cf514b2aSRobert Elliott	  XCTR (XOR Counter) mode for HCTR2
759cf514b2aSRobert Elliott
760cf514b2aSRobert Elliott	  This blockcipher mode is a variant of CTR mode using XORs and little-endian
761cf514b2aSRobert Elliott	  addition rather than big-endian arithmetic.
762cf514b2aSRobert Elliott
763f1f142adSRobert Elliott	  XCTR mode is used to implement HCTR2.
764f1f142adSRobert Elliott
765f1f142adSRobert Elliottconfig CRYPTO_XTS
766cf514b2aSRobert Elliott	tristate "XTS (XOR Encrypt XOR with ciphertext stealing)"
767f1f142adSRobert Elliott	select CRYPTO_SKCIPHER
768f1f142adSRobert Elliott	select CRYPTO_MANAGER
769f1f142adSRobert Elliott	select CRYPTO_ECB
770f1f142adSRobert Elliott	help
771cf514b2aSRobert Elliott	  XTS (XOR Encrypt XOR with ciphertext stealing) mode (NIST SP800-38E
772cf514b2aSRobert Elliott	  and IEEE 1619)
773cf514b2aSRobert Elliott
774cf514b2aSRobert Elliott	  Use with aes-xts-plain, key size 256, 384 or 512 bits. This
775cf514b2aSRobert Elliott	  implementation currently can't handle a sectorsize which is not a
776cf514b2aSRobert Elliott	  multiple of 16 bytes.
777f1f142adSRobert Elliott
778f1f142adSRobert Elliottconfig CRYPTO_NHPOLY1305
779f1f142adSRobert Elliott	tristate
780f1f142adSRobert Elliott	select CRYPTO_HASH
781f1f142adSRobert Elliott	select CRYPTO_LIB_POLY1305_GENERIC
782f1f142adSRobert Elliott
783f1f142adSRobert Elliottendmenu
784f1f142adSRobert Elliott
785f1f142adSRobert Elliottmenu "AEAD (authenticated encryption with associated data) ciphers"
786f1f142adSRobert Elliott
787f1f142adSRobert Elliottconfig CRYPTO_AEGIS128
788e3d2eaddSRobert Elliott	tristate "AEGIS-128"
789f1f142adSRobert Elliott	select CRYPTO_AEAD
790f1f142adSRobert Elliott	select CRYPTO_AES  # for AES S-box tables
791f1f142adSRobert Elliott	help
792e3d2eaddSRobert Elliott	  AEGIS-128 AEAD algorithm
793f1f142adSRobert Elliott
794f1f142adSRobert Elliottconfig CRYPTO_AEGIS128_SIMD
795e3d2eaddSRobert Elliott	bool "AEGIS-128 (arm NEON, arm64 NEON)"
796f1f142adSRobert Elliott	depends on CRYPTO_AEGIS128 && ((ARM || ARM64) && KERNEL_MODE_NEON)
797f1f142adSRobert Elliott	default y
798e3d2eaddSRobert Elliott	help
799e3d2eaddSRobert Elliott	  AEGIS-128 AEAD algorithm
800e3d2eaddSRobert Elliott
801e3d2eaddSRobert Elliott	  Architecture: arm or arm64 using:
802e3d2eaddSRobert Elliott	  - NEON (Advanced SIMD) extension
803f1f142adSRobert Elliott
804f1f142adSRobert Elliottconfig CRYPTO_CHACHA20POLY1305
805e3d2eaddSRobert Elliott	tristate "ChaCha20-Poly1305"
806f1f142adSRobert Elliott	select CRYPTO_CHACHA20
807f1f142adSRobert Elliott	select CRYPTO_POLY1305
808f1f142adSRobert Elliott	select CRYPTO_AEAD
809f1f142adSRobert Elliott	select CRYPTO_MANAGER
810f1f142adSRobert Elliott	help
811e3d2eaddSRobert Elliott	  ChaCha20 stream cipher and Poly1305 authenticator combined
812e3d2eaddSRobert Elliott	  mode (RFC8439)
813f1f142adSRobert Elliott
814f1f142adSRobert Elliottconfig CRYPTO_CCM
815cf514b2aSRobert Elliott	tristate "CCM (Counter with Cipher Block Chaining-MAC)"
816f1f142adSRobert Elliott	select CRYPTO_CTR
817f1f142adSRobert Elliott	select CRYPTO_HASH
818f1f142adSRobert Elliott	select CRYPTO_AEAD
819f1f142adSRobert Elliott	select CRYPTO_MANAGER
820f1f142adSRobert Elliott	help
821e3d2eaddSRobert Elliott	  CCM (Counter with Cipher Block Chaining-Message Authentication Code)
822e3d2eaddSRobert Elliott	  authenticated encryption mode (NIST SP800-38C)
823f1f142adSRobert Elliott
824f1f142adSRobert Elliottconfig CRYPTO_GCM
825cf514b2aSRobert Elliott	tristate "GCM (Galois/Counter Mode) and GMAC (GCM MAC)"
826f1f142adSRobert Elliott	select CRYPTO_CTR
827f1f142adSRobert Elliott	select CRYPTO_AEAD
828f1f142adSRobert Elliott	select CRYPTO_GHASH
829f1f142adSRobert Elliott	select CRYPTO_NULL
830f1f142adSRobert Elliott	select CRYPTO_MANAGER
831f1f142adSRobert Elliott	help
832e3d2eaddSRobert Elliott	  GCM (Galois/Counter Mode) authenticated encryption mode and GMAC
833e3d2eaddSRobert Elliott	  (GCM Message Authentication Code) (NIST SP800-38D)
834e3d2eaddSRobert Elliott
835e3d2eaddSRobert Elliott	  This is required for IPSec ESP (XFRM_ESP).
836f1f142adSRobert Elliott
837f1f142adSRobert Elliottconfig CRYPTO_SEQIV
838f1f142adSRobert Elliott	tristate "Sequence Number IV Generator"
839f1f142adSRobert Elliott	select CRYPTO_AEAD
840f1f142adSRobert Elliott	select CRYPTO_SKCIPHER
841f1f142adSRobert Elliott	select CRYPTO_NULL
842f1f142adSRobert Elliott	select CRYPTO_RNG_DEFAULT
843f1f142adSRobert Elliott	select CRYPTO_MANAGER
844f1f142adSRobert Elliott	help
845e3d2eaddSRobert Elliott	  Sequence Number IV generator
846e3d2eaddSRobert Elliott
847f1f142adSRobert Elliott	  This IV generator generates an IV based on a sequence number by
848e3d2eaddSRobert Elliott	  xoring it with a salt.  This algorithm is mainly useful for CTR.
849e3d2eaddSRobert Elliott
850e3d2eaddSRobert Elliott	  This is required for IPsec ESP (XFRM_ESP).
851f1f142adSRobert Elliott
852f1f142adSRobert Elliottconfig CRYPTO_ECHAINIV
853f1f142adSRobert Elliott	tristate "Encrypted Chain IV Generator"
854f1f142adSRobert Elliott	select CRYPTO_AEAD
855f1f142adSRobert Elliott	select CRYPTO_NULL
856f1f142adSRobert Elliott	select CRYPTO_RNG_DEFAULT
857f1f142adSRobert Elliott	select CRYPTO_MANAGER
858f1f142adSRobert Elliott	help
859e3d2eaddSRobert Elliott	  Encrypted Chain IV generator
860e3d2eaddSRobert Elliott
861f1f142adSRobert Elliott	  This IV generator generates an IV based on the encryption of
862f1f142adSRobert Elliott	  a sequence number xored with a salt.  This is the default
863f1f142adSRobert Elliott	  algorithm for CBC.
864f1f142adSRobert Elliott
865f1f142adSRobert Elliottconfig CRYPTO_ESSIV
866e3d2eaddSRobert Elliott	tristate "Encrypted Salt-Sector IV Generator"
867f1f142adSRobert Elliott	select CRYPTO_AUTHENC
868f1f142adSRobert Elliott	help
869e3d2eaddSRobert Elliott	  Encrypted Salt-Sector IV generator
870e3d2eaddSRobert Elliott
871e3d2eaddSRobert Elliott	  This IV generator is used in some cases by fscrypt and/or
872f1f142adSRobert Elliott	  dm-crypt. It uses the hash of the block encryption key as the
873f1f142adSRobert Elliott	  symmetric key for a block encryption pass applied to the input
874f1f142adSRobert Elliott	  IV, making low entropy IV sources more suitable for block
875f1f142adSRobert Elliott	  encryption.
876f1f142adSRobert Elliott
877f1f142adSRobert Elliott	  This driver implements a crypto API template that can be
878f1f142adSRobert Elliott	  instantiated either as an skcipher or as an AEAD (depending on the
879f1f142adSRobert Elliott	  type of the first template argument), and which defers encryption
880f1f142adSRobert Elliott	  and decryption requests to the encapsulated cipher after applying
881f1f142adSRobert Elliott	  ESSIV to the input IV. Note that in the AEAD case, it is assumed
882f1f142adSRobert Elliott	  that the keys are presented in the same format used by the authenc
883f1f142adSRobert Elliott	  template, and that the IV appears at the end of the authenticated
884f1f142adSRobert Elliott	  associated data (AAD) region (which is how dm-crypt uses it.)
885f1f142adSRobert Elliott
886f1f142adSRobert Elliott	  Note that the use of ESSIV is not recommended for new deployments,
887f1f142adSRobert Elliott	  and so this only needs to be enabled when interoperability with
888f1f142adSRobert Elliott	  existing encrypted volumes of filesystems is required, or when
889f1f142adSRobert Elliott	  building for a particular system that requires it (e.g., when
890f1f142adSRobert Elliott	  the SoC in question has accelerated CBC but not XTS, making CBC
891f1f142adSRobert Elliott	  combined with ESSIV the only feasible mode for h/w accelerated
892f1f142adSRobert Elliott	  block encryption)
893f1f142adSRobert Elliott
894f1f142adSRobert Elliottendmenu
895f1f142adSRobert Elliott
896f1f142adSRobert Elliottmenu "Hashes, digests, and MACs"
897f1f142adSRobert Elliott
898f1f142adSRobert Elliottconfig CRYPTO_BLAKE2B
8993f342a23SRobert Elliott	tristate "BLAKE2b"
900f1f142adSRobert Elliott	select CRYPTO_HASH
901f1f142adSRobert Elliott	help
9023f342a23SRobert Elliott	  BLAKE2b cryptographic hash function (RFC 7693)
9033f342a23SRobert Elliott
9043f342a23SRobert Elliott	  BLAKE2b is optimized for 64-bit platforms and can produce digests
9053f342a23SRobert Elliott	  of any size between 1 and 64 bytes. The keyed hash is also implemented.
906f1f142adSRobert Elliott
907f1f142adSRobert Elliott	  This module provides the following algorithms:
908f1f142adSRobert Elliott	  - blake2b-160
909f1f142adSRobert Elliott	  - blake2b-256
910f1f142adSRobert Elliott	  - blake2b-384
911f1f142adSRobert Elliott	  - blake2b-512
912f1f142adSRobert Elliott
9133f342a23SRobert Elliott	  Used by the btrfs filesystem.
9143f342a23SRobert Elliott
9153f342a23SRobert Elliott	  See https://blake2.net for further information.
9163f342a23SRobert Elliott
917f1f142adSRobert Elliottconfig CRYPTO_CMAC
9183f342a23SRobert Elliott	tristate "CMAC (Cipher-based MAC)"
919f1f142adSRobert Elliott	select CRYPTO_HASH
920f1f142adSRobert Elliott	select CRYPTO_MANAGER
921f1f142adSRobert Elliott	help
9223f342a23SRobert Elliott	  CMAC (Cipher-based Message Authentication Code) authentication
9233f342a23SRobert Elliott	  mode (NIST SP800-38B and IETF RFC4493)
924f1f142adSRobert Elliott
925f1f142adSRobert Elliottconfig CRYPTO_GHASH
9263f342a23SRobert Elliott	tristate "GHASH"
927f1f142adSRobert Elliott	select CRYPTO_HASH
92861c581a4SArd Biesheuvel	select CRYPTO_LIB_GF128MUL
929f1f142adSRobert Elliott	help
9303f342a23SRobert Elliott	  GCM GHASH function (NIST SP800-38D)
931f1f142adSRobert Elliott
932f1f142adSRobert Elliottconfig CRYPTO_HMAC
9333f342a23SRobert Elliott	tristate "HMAC (Keyed-Hash MAC)"
934f1f142adSRobert Elliott	select CRYPTO_HASH
935f1f142adSRobert Elliott	select CRYPTO_MANAGER
936f1f142adSRobert Elliott	help
9373f342a23SRobert Elliott	  HMAC (Keyed-Hash Message Authentication Code) (FIPS 198 and
9383f342a23SRobert Elliott	  RFC2104)
9393f342a23SRobert Elliott
9403f342a23SRobert Elliott	  This is required for IPsec AH (XFRM_AH) and IPsec ESP (XFRM_ESP).
941f1f142adSRobert Elliott
942f1f142adSRobert Elliottconfig CRYPTO_MD4
9433f342a23SRobert Elliott	tristate "MD4"
944f1f142adSRobert Elliott	select CRYPTO_HASH
945f1f142adSRobert Elliott	help
9463f342a23SRobert Elliott	  MD4 message digest algorithm (RFC1320)
947f1f142adSRobert Elliott
948f1f142adSRobert Elliottconfig CRYPTO_MD5
9493f342a23SRobert Elliott	tristate "MD5"
950f1f142adSRobert Elliott	select CRYPTO_HASH
951f1f142adSRobert Elliott	help
9523f342a23SRobert Elliott	  MD5 message digest algorithm (RFC1321)
953f1f142adSRobert Elliott
954f1f142adSRobert Elliottconfig CRYPTO_MICHAEL_MIC
9553f342a23SRobert Elliott	tristate "Michael MIC"
956f1f142adSRobert Elliott	select CRYPTO_HASH
957f1f142adSRobert Elliott	help
9583f342a23SRobert Elliott	  Michael MIC (Message Integrity Code) (IEEE 802.11i)
9593f342a23SRobert Elliott
9603f342a23SRobert Elliott	  Defined by the IEEE 802.11i TKIP (Temporal Key Integrity Protocol),
9613f342a23SRobert Elliott	  known as WPA (Wif-Fi Protected Access).
9623f342a23SRobert Elliott
9633f342a23SRobert Elliott	  This algorithm is required for TKIP, but it should not be used for
9643f342a23SRobert Elliott	  other purposes because of the weakness of the algorithm.
965f1f142adSRobert Elliott
966f1f142adSRobert Elliottconfig CRYPTO_POLYVAL
967f1f142adSRobert Elliott	tristate
968f1f142adSRobert Elliott	select CRYPTO_HASH
96961c581a4SArd Biesheuvel	select CRYPTO_LIB_GF128MUL
970f1f142adSRobert Elliott	help
9713f342a23SRobert Elliott	  POLYVAL hash function for HCTR2
9723f342a23SRobert Elliott
9733f342a23SRobert Elliott	  This is used in HCTR2.  It is not a general-purpose
974f1f142adSRobert Elliott	  cryptographic hash function.
975f1f142adSRobert Elliott
976f1f142adSRobert Elliottconfig CRYPTO_POLY1305
9773f342a23SRobert Elliott	tristate "Poly1305"
978f1f142adSRobert Elliott	select CRYPTO_HASH
979f1f142adSRobert Elliott	select CRYPTO_LIB_POLY1305_GENERIC
980f1f142adSRobert Elliott	help
9813f342a23SRobert Elliott	  Poly1305 authenticator algorithm (RFC7539)
982f1f142adSRobert Elliott
983f1f142adSRobert Elliott	  Poly1305 is an authenticator algorithm designed by Daniel J. Bernstein.
984f1f142adSRobert Elliott	  It is used for the ChaCha20-Poly1305 AEAD, specified in RFC7539 for use
985f1f142adSRobert Elliott	  in IETF protocols. This is the portable C implementation of Poly1305.
986f1f142adSRobert Elliott
987f1f142adSRobert Elliottconfig CRYPTO_RMD160
9883f342a23SRobert Elliott	tristate "RIPEMD-160"
989f1f142adSRobert Elliott	select CRYPTO_HASH
990f1f142adSRobert Elliott	help
9913f342a23SRobert Elliott	  RIPEMD-160 hash function (ISO/IEC 10118-3)
992f1f142adSRobert Elliott
993f1f142adSRobert Elliott	  RIPEMD-160 is a 160-bit cryptographic hash function. It is intended
994f1f142adSRobert Elliott	  to be used as a secure replacement for the 128-bit hash functions
995f1f142adSRobert Elliott	  MD4, MD5 and its predecessor RIPEMD
996f1f142adSRobert Elliott	  (not to be confused with RIPEMD-128).
997f1f142adSRobert Elliott
9983f342a23SRobert Elliott	  Its speed is comparable to SHA-1 and there are no known attacks
999f1f142adSRobert Elliott	  against RIPEMD-160.
1000f1f142adSRobert Elliott
1001f1f142adSRobert Elliott	  Developed by Hans Dobbertin, Antoon Bosselaers and Bart Preneel.
10023f342a23SRobert Elliott	  See https://homes.esat.kuleuven.be/~bosselae/ripemd160.html
10033f342a23SRobert Elliott	  for further information.
1004f1f142adSRobert Elliott
1005f1f142adSRobert Elliottconfig CRYPTO_SHA1
10063f342a23SRobert Elliott	tristate "SHA-1"
1007f1f142adSRobert Elliott	select CRYPTO_HASH
1008f1f142adSRobert Elliott	select CRYPTO_LIB_SHA1
1009f1f142adSRobert Elliott	help
10103f342a23SRobert Elliott	  SHA-1 secure hash algorithm (FIPS 180, ISO/IEC 10118-3)
1011f1f142adSRobert Elliott
1012f1f142adSRobert Elliottconfig CRYPTO_SHA256
10133f342a23SRobert Elliott	tristate "SHA-224 and SHA-256"
1014f1f142adSRobert Elliott	select CRYPTO_HASH
1015f1f142adSRobert Elliott	select CRYPTO_LIB_SHA256
1016f1f142adSRobert Elliott	help
10173f342a23SRobert Elliott	  SHA-224 and SHA-256 secure hash algorithms (FIPS 180, ISO/IEC 10118-3)
1018f1f142adSRobert Elliott
10193f342a23SRobert Elliott	  This is required for IPsec AH (XFRM_AH) and IPsec ESP (XFRM_ESP).
10203f342a23SRobert Elliott	  Used by the btrfs filesystem, Ceph, NFS, and SMB.
1021f1f142adSRobert Elliott
1022f1f142adSRobert Elliottconfig CRYPTO_SHA512
10233f342a23SRobert Elliott	tristate "SHA-384 and SHA-512"
1024f1f142adSRobert Elliott	select CRYPTO_HASH
1025f1f142adSRobert Elliott	help
10263f342a23SRobert Elliott	  SHA-384 and SHA-512 secure hash algorithms (FIPS 180, ISO/IEC 10118-3)
1027f1f142adSRobert Elliott
1028f1f142adSRobert Elliottconfig CRYPTO_SHA3
10293f342a23SRobert Elliott	tristate "SHA-3"
1030f1f142adSRobert Elliott	select CRYPTO_HASH
1031f1f142adSRobert Elliott	help
10323f342a23SRobert Elliott	  SHA-3 secure hash algorithms (FIPS 202, ISO/IEC 10118-3)
1033f1f142adSRobert Elliott
1034f1f142adSRobert Elliottconfig CRYPTO_SM3
1035f1f142adSRobert Elliott	tristate
1036f1f142adSRobert Elliott
1037f1f142adSRobert Elliottconfig CRYPTO_SM3_GENERIC
10383f342a23SRobert Elliott	tristate "SM3 (ShangMi 3)"
1039f1f142adSRobert Elliott	select CRYPTO_HASH
1040f1f142adSRobert Elliott	select CRYPTO_SM3
1041f1f142adSRobert Elliott	help
10423f342a23SRobert Elliott	  SM3 (ShangMi 3) secure hash function (OSCCA GM/T 0004-2012, ISO/IEC 10118-3)
10433f342a23SRobert Elliott
10443f342a23SRobert Elliott	  This is part of the Chinese Commercial Cryptography suite.
1045f1f142adSRobert Elliott
1046f1f142adSRobert Elliott	  References:
1047f1f142adSRobert Elliott	  http://www.oscca.gov.cn/UpFile/20101222141857786.pdf
1048f1f142adSRobert Elliott	  https://datatracker.ietf.org/doc/html/draft-shen-sm3-hash
1049f1f142adSRobert Elliott
1050f1f142adSRobert Elliottconfig CRYPTO_STREEBOG
10513f342a23SRobert Elliott	tristate "Streebog"
1052f1f142adSRobert Elliott	select CRYPTO_HASH
1053f1f142adSRobert Elliott	help
10543f342a23SRobert Elliott	  Streebog Hash Function (GOST R 34.11-2012, RFC 6986, ISO/IEC 10118-3)
10553f342a23SRobert Elliott
10563f342a23SRobert Elliott	  This is one of the Russian cryptographic standard algorithms (called
10573f342a23SRobert Elliott	  GOST algorithms). This setting enables two hash algorithms with
10583f342a23SRobert Elliott	  256 and 512 bits output.
1059f1f142adSRobert Elliott
1060f1f142adSRobert Elliott	  References:
1061f1f142adSRobert Elliott	  https://tc26.ru/upload/iblock/fed/feddbb4d26b685903faa2ba11aea43f6.pdf
1062f1f142adSRobert Elliott	  https://tools.ietf.org/html/rfc6986
1063f1f142adSRobert Elliott
1064f1f142adSRobert Elliottconfig CRYPTO_VMAC
10653f342a23SRobert Elliott	tristate "VMAC"
1066f1f142adSRobert Elliott	select CRYPTO_HASH
1067f1f142adSRobert Elliott	select CRYPTO_MANAGER
1068f1f142adSRobert Elliott	help
1069f1f142adSRobert Elliott	  VMAC is a message authentication algorithm designed for
1070f1f142adSRobert Elliott	  very high speed on 64-bit architectures.
1071f1f142adSRobert Elliott
10723f342a23SRobert Elliott	  See https://fastcrypto.org/vmac for further information.
1073f1f142adSRobert Elliott
1074f1f142adSRobert Elliottconfig CRYPTO_WP512
10753f342a23SRobert Elliott	tristate "Whirlpool"
1076f1f142adSRobert Elliott	select CRYPTO_HASH
1077f1f142adSRobert Elliott	help
10783f342a23SRobert Elliott	  Whirlpool hash function (ISO/IEC 10118-3)
10793f342a23SRobert Elliott
10803f342a23SRobert Elliott	  512, 384 and 256-bit hashes.
1081f1f142adSRobert Elliott
1082f1f142adSRobert Elliott	  Whirlpool-512 is part of the NESSIE cryptographic primitives.
1083f1f142adSRobert Elliott
10843f342a23SRobert Elliott	  See https://web.archive.org/web/20171129084214/http://www.larc.usp.br/~pbarreto/WhirlpoolPage.html
10853f342a23SRobert Elliott	  for further information.
1086f1f142adSRobert Elliott
1087f1f142adSRobert Elliottconfig CRYPTO_XCBC
10883f342a23SRobert Elliott	tristate "XCBC-MAC (Extended Cipher Block Chaining MAC)"
1089f1f142adSRobert Elliott	select CRYPTO_HASH
1090f1f142adSRobert Elliott	select CRYPTO_MANAGER
1091f1f142adSRobert Elliott	help
10923f342a23SRobert Elliott	  XCBC-MAC (Extended Cipher Block Chaining Message Authentication
10933f342a23SRobert Elliott	  Code) (RFC3566)
1094f1f142adSRobert Elliott
1095f1f142adSRobert Elliottconfig CRYPTO_XXHASH
10963f342a23SRobert Elliott	tristate "xxHash"
1097f1f142adSRobert Elliott	select CRYPTO_HASH
1098f1f142adSRobert Elliott	select XXHASH
1099f1f142adSRobert Elliott	help
11003f342a23SRobert Elliott	  xxHash non-cryptographic hash algorithm
11013f342a23SRobert Elliott
11023f342a23SRobert Elliott	  Extremely fast, working at speeds close to RAM limits.
11033f342a23SRobert Elliott
11043f342a23SRobert Elliott	  Used by the btrfs filesystem.
1105f1f142adSRobert Elliott
1106f1f142adSRobert Elliottendmenu
1107f1f142adSRobert Elliott
1108f1f142adSRobert Elliottmenu "CRCs (cyclic redundancy checks)"
1109f1f142adSRobert Elliott
1110f1f142adSRobert Elliottconfig CRYPTO_CRC32C
1111ec84348dSRobert Elliott	tristate "CRC32c"
1112f1f142adSRobert Elliott	select CRYPTO_HASH
1113f1f142adSRobert Elliott	select CRC32
1114f1f142adSRobert Elliott	help
1115ec84348dSRobert Elliott	  CRC32c CRC algorithm with the iSCSI polynomial (RFC 3385 and RFC 3720)
1116ec84348dSRobert Elliott
1117ec84348dSRobert Elliott	  A 32-bit CRC (cyclic redundancy check) with a polynomial defined
1118ec84348dSRobert Elliott	  by G. Castagnoli, S. Braeuer and M. Herrman in "Optimization of Cyclic
1119ec84348dSRobert Elliott	  Redundancy-Check Codes with 24 and 32 Parity Bits", IEEE Transactions
1120ec84348dSRobert Elliott	  on Communications, Vol. 41, No. 6, June 1993, selected for use with
1121ec84348dSRobert Elliott	  iSCSI.
1122ec84348dSRobert Elliott
1123ec84348dSRobert Elliott	  Used by btrfs, ext4, jbd2, NVMeoF/TCP, and iSCSI.
1124f1f142adSRobert Elliott
1125f1f142adSRobert Elliottconfig CRYPTO_CRC32
1126ec84348dSRobert Elliott	tristate "CRC32"
1127f1f142adSRobert Elliott	select CRYPTO_HASH
1128f1f142adSRobert Elliott	select CRC32
1129f1f142adSRobert Elliott	help
1130ec84348dSRobert Elliott	  CRC32 CRC algorithm (IEEE 802.3)
1131ec84348dSRobert Elliott
1132ec84348dSRobert Elliott	  Used by RoCEv2 and f2fs.
1133f1f142adSRobert Elliott
1134f1f142adSRobert Elliottconfig CRYPTO_CRCT10DIF
1135ec84348dSRobert Elliott	tristate "CRCT10DIF"
1136f1f142adSRobert Elliott	select CRYPTO_HASH
1137f1f142adSRobert Elliott	help
1138ec84348dSRobert Elliott	  CRC16 CRC algorithm used for the T10 (SCSI) Data Integrity Field (DIF)
1139ec84348dSRobert Elliott
1140ec84348dSRobert Elliott	  CRC algorithm used by the SCSI Block Commands standard.
1141f1f142adSRobert Elliott
1142f1f142adSRobert Elliottconfig CRYPTO_CRC64_ROCKSOFT
1143ec84348dSRobert Elliott	tristate "CRC64 based on Rocksoft Model algorithm"
1144f1f142adSRobert Elliott	depends on CRC64
1145f1f142adSRobert Elliott	select CRYPTO_HASH
1146ec84348dSRobert Elliott	help
1147ec84348dSRobert Elliott	  CRC64 CRC algorithm based on the Rocksoft Model CRC Algorithm
1148ec84348dSRobert Elliott
1149ec84348dSRobert Elliott	  Used by the NVMe implementation of T10 DIF (BLK_DEV_INTEGRITY)
1150ec84348dSRobert Elliott
1151ec84348dSRobert Elliott	  See https://zlib.net/crc_v3.txt
1152f1f142adSRobert Elliott
1153f1f142adSRobert Elliottendmenu
1154f1f142adSRobert Elliott
1155f1f142adSRobert Elliottmenu "Compression"
1156584fffc8SSebastian Siewior
11571da177e4SLinus Torvaldsconfig CRYPTO_DEFLATE
1158a9a98d49SRobert Elliott	tristate "Deflate"
1159cce9e06dSHerbert Xu	select CRYPTO_ALGAPI
1160f6ded09dSGiovanni Cabiddu	select CRYPTO_ACOMP2
11611da177e4SLinus Torvalds	select ZLIB_INFLATE
11621da177e4SLinus Torvalds	select ZLIB_DEFLATE
11631da177e4SLinus Torvalds	help
1164a9a98d49SRobert Elliott	  Deflate compression algorithm (RFC1951)
11651da177e4SLinus Torvalds
1166a9a98d49SRobert Elliott	  Used by IPSec with the IPCOMP protocol (RFC3173, RFC2394)
11671da177e4SLinus Torvalds
11680b77abb3SZoltan Sogorconfig CRYPTO_LZO
1169a9a98d49SRobert Elliott	tristate "LZO"
11700b77abb3SZoltan Sogor	select CRYPTO_ALGAPI
1171ac9d2c4bSGiovanni Cabiddu	select CRYPTO_ACOMP2
11720b77abb3SZoltan Sogor	select LZO_COMPRESS
11730b77abb3SZoltan Sogor	select LZO_DECOMPRESS
11740b77abb3SZoltan Sogor	help
1175a9a98d49SRobert Elliott	  LZO compression algorithm
1176a9a98d49SRobert Elliott
1177a9a98d49SRobert Elliott	  See https://www.oberhumer.com/opensource/lzo/ for further information.
11780b77abb3SZoltan Sogor
117935a1fc18SSeth Jenningsconfig CRYPTO_842
1180a9a98d49SRobert Elliott	tristate "842"
11812062c5b6SDan Streetman	select CRYPTO_ALGAPI
11826a8de3aeSGiovanni Cabiddu	select CRYPTO_ACOMP2
11832062c5b6SDan Streetman	select 842_COMPRESS
11842062c5b6SDan Streetman	select 842_DECOMPRESS
118535a1fc18SSeth Jennings	help
1186a9a98d49SRobert Elliott	  842 compression algorithm by IBM
1187a9a98d49SRobert Elliott
1188a9a98d49SRobert Elliott	  See https://github.com/plauth/lib842 for further information.
118935a1fc18SSeth Jennings
11900ea8530dSChanho Minconfig CRYPTO_LZ4
1191a9a98d49SRobert Elliott	tristate "LZ4"
11920ea8530dSChanho Min	select CRYPTO_ALGAPI
11938cd9330eSGiovanni Cabiddu	select CRYPTO_ACOMP2
11940ea8530dSChanho Min	select LZ4_COMPRESS
11950ea8530dSChanho Min	select LZ4_DECOMPRESS
11960ea8530dSChanho Min	help
1197a9a98d49SRobert Elliott	  LZ4 compression algorithm
1198a9a98d49SRobert Elliott
1199a9a98d49SRobert Elliott	  See https://github.com/lz4/lz4 for further information.
12000ea8530dSChanho Min
12010ea8530dSChanho Minconfig CRYPTO_LZ4HC
1202a9a98d49SRobert Elliott	tristate "LZ4HC"
12030ea8530dSChanho Min	select CRYPTO_ALGAPI
120491d53d96SGiovanni Cabiddu	select CRYPTO_ACOMP2
12050ea8530dSChanho Min	select LZ4HC_COMPRESS
12060ea8530dSChanho Min	select LZ4_DECOMPRESS
12070ea8530dSChanho Min	help
1208a9a98d49SRobert Elliott	  LZ4 high compression mode algorithm
1209a9a98d49SRobert Elliott
1210a9a98d49SRobert Elliott	  See https://github.com/lz4/lz4 for further information.
12110ea8530dSChanho Min
1212d28fc3dbSNick Terrellconfig CRYPTO_ZSTD
1213a9a98d49SRobert Elliott	tristate "Zstd"
1214d28fc3dbSNick Terrell	select CRYPTO_ALGAPI
1215d28fc3dbSNick Terrell	select CRYPTO_ACOMP2
1216d28fc3dbSNick Terrell	select ZSTD_COMPRESS
1217d28fc3dbSNick Terrell	select ZSTD_DECOMPRESS
1218d28fc3dbSNick Terrell	help
1219a9a98d49SRobert Elliott	  zstd compression algorithm
1220a9a98d49SRobert Elliott
1221a9a98d49SRobert Elliott	  See https://github.com/facebook/zstd for further information.
1222d28fc3dbSNick Terrell
1223f1f142adSRobert Elliottendmenu
1224f1f142adSRobert Elliott
1225f1f142adSRobert Elliottmenu "Random number generation"
122617f0f4a4SNeil Horman
122717f0f4a4SNeil Hormanconfig CRYPTO_ANSI_CPRNG
1228a9a98d49SRobert Elliott	tristate "ANSI PRNG (Pseudo Random Number Generator)"
122917f0f4a4SNeil Horman	select CRYPTO_AES
123017f0f4a4SNeil Horman	select CRYPTO_RNG
123117f0f4a4SNeil Horman	help
1232a9a98d49SRobert Elliott	  Pseudo RNG (random number generator) (ANSI X9.31 Appendix A.2.4)
1233a9a98d49SRobert Elliott
1234a9a98d49SRobert Elliott	  This uses the AES cipher algorithm.
1235a9a98d49SRobert Elliott
1236a9a98d49SRobert Elliott	  Note that this option must be enabled if CRYPTO_FIPS is selected
123717f0f4a4SNeil Horman
1238f2c89a10SHerbert Xumenuconfig CRYPTO_DRBG_MENU
1239a9a98d49SRobert Elliott	tristate "NIST SP800-90A DRBG (Deterministic Random Bit Generator)"
1240419090c6SStephan Mueller	help
1241a9a98d49SRobert Elliott	  DRBG (Deterministic Random Bit Generator) (NIST SP800-90A)
1242a9a98d49SRobert Elliott
1243a9a98d49SRobert Elliott	  In the following submenu, one or more of the DRBG types must be selected.
1244419090c6SStephan Mueller
1245f2c89a10SHerbert Xuif CRYPTO_DRBG_MENU
1246419090c6SStephan Mueller
1247419090c6SStephan Muellerconfig CRYPTO_DRBG_HMAC
1248401e4238SHerbert Xu	bool
1249419090c6SStephan Mueller	default y
1250419090c6SStephan Mueller	select CRYPTO_HMAC
12515261cdf4SStephan Mueller	select CRYPTO_SHA512
1252419090c6SStephan Mueller
1253419090c6SStephan Muellerconfig CRYPTO_DRBG_HASH
1254a9a98d49SRobert Elliott	bool "Hash_DRBG"
1255826775bbSHerbert Xu	select CRYPTO_SHA256
1256419090c6SStephan Mueller	help
1257a9a98d49SRobert Elliott	  Hash_DRBG variant as defined in NIST SP800-90A.
1258a9a98d49SRobert Elliott
1259a9a98d49SRobert Elliott	  This uses the SHA-1, SHA-256, SHA-384, or SHA-512 hash algorithms.
1260419090c6SStephan Mueller
1261419090c6SStephan Muellerconfig CRYPTO_DRBG_CTR
1262a9a98d49SRobert Elliott	bool "CTR_DRBG"
1263419090c6SStephan Mueller	select CRYPTO_AES
1264d6fc1a45SCorentin Labbe	select CRYPTO_CTR
1265419090c6SStephan Mueller	help
1266a9a98d49SRobert Elliott	  CTR_DRBG variant as defined in NIST SP800-90A.
1267a9a98d49SRobert Elliott
1268a9a98d49SRobert Elliott	  This uses the AES cipher algorithm with the counter block mode.
1269419090c6SStephan Mueller
1270f2c89a10SHerbert Xuconfig CRYPTO_DRBG
1271f2c89a10SHerbert Xu	tristate
1272401e4238SHerbert Xu	default CRYPTO_DRBG_MENU
1273f2c89a10SHerbert Xu	select CRYPTO_RNG
1274bb5530e4SStephan Mueller	select CRYPTO_JITTERENTROPY
1275f2c89a10SHerbert Xu
1276f2c89a10SHerbert Xuendif	# if CRYPTO_DRBG_MENU
1277419090c6SStephan Mueller
1278bb5530e4SStephan Muellerconfig CRYPTO_JITTERENTROPY
1279a9a98d49SRobert Elliott	tristate "CPU Jitter Non-Deterministic RNG (Random Number Generator)"
12802f313e02SArnd Bergmann	select CRYPTO_RNG
1281bb897c55SStephan Müller	select CRYPTO_SHA3
1282bb5530e4SStephan Mueller	help
1283a9a98d49SRobert Elliott	  CPU Jitter RNG (Random Number Generator) from the Jitterentropy library
1284a9a98d49SRobert Elliott
1285a9a98d49SRobert Elliott	  A non-physical non-deterministic ("true") RNG (e.g., an entropy source
1286a9a98d49SRobert Elliott	  compliant with NIST SP800-90B) intended to provide a seed to a
1287a9a98d49SRobert Elliott	  deterministic RNG (e.g.  per NIST SP800-90C).
1288a9a98d49SRobert Elliott	  This RNG does not perform any cryptographic whitening of the generated
1289a9a98d49SRobert Elliott
1290a9a98d49SRobert Elliott	  See https://www.chronox.de/jent.html
1291bb5530e4SStephan Mueller
129269f1c387SStephan Müllerconfig CRYPTO_JITTERENTROPY_TESTINTERFACE
129369f1c387SStephan Müller	bool "CPU Jitter RNG Test Interface"
129469f1c387SStephan Müller	depends on CRYPTO_JITTERENTROPY
129569f1c387SStephan Müller	help
129669f1c387SStephan Müller	  The test interface allows a privileged process to capture
129769f1c387SStephan Müller	  the raw unconditioned high resolution time stamp noise that
129869f1c387SStephan Müller	  is collected by the Jitter RNG for statistical analysis. As
129969f1c387SStephan Müller	  this data is used at the same time to generate random bits,
130069f1c387SStephan Müller	  the Jitter RNG operates in an insecure mode as long as the
130169f1c387SStephan Müller	  recording is enabled. This interface therefore is only
130269f1c387SStephan Müller	  intended for testing purposes and is not suitable for
130369f1c387SStephan Müller	  production systems.
130469f1c387SStephan Müller
130569f1c387SStephan Müller	  The raw noise data can be obtained using the jent_raw_hires
130669f1c387SStephan Müller	  debugfs file. Using the option
130769f1c387SStephan Müller	  jitterentropy_testing.boot_raw_hires_test=1 the raw noise of
130869f1c387SStephan Müller	  the first 1000 entropy events since boot can be sampled.
130969f1c387SStephan Müller
131069f1c387SStephan Müller	  If unsure, select N.
131169f1c387SStephan Müller
1312026a733eSStephan Müllerconfig CRYPTO_KDF800108_CTR
1313026a733eSStephan Müller	tristate
1314a88592ccSHerbert Xu	select CRYPTO_HMAC
1315304b4aceSStephan Müller	select CRYPTO_SHA256
1316026a733eSStephan Müller
1317f1f142adSRobert Elliottendmenu
13189bc51715SRobert Elliottmenu "Userspace interface"
1319f1f142adSRobert Elliott
132003c8efc1SHerbert Xuconfig CRYPTO_USER_API
132103c8efc1SHerbert Xu	tristate
132203c8efc1SHerbert Xu
1323fe869cdbSHerbert Xuconfig CRYPTO_USER_API_HASH
13249bc51715SRobert Elliott	tristate "Hash algorithms"
13257451708fSHerbert Xu	depends on NET
1326fe869cdbSHerbert Xu	select CRYPTO_HASH
1327fe869cdbSHerbert Xu	select CRYPTO_USER_API
1328fe869cdbSHerbert Xu	help
13299bc51715SRobert Elliott	  Enable the userspace interface for hash algorithms.
13309bc51715SRobert Elliott
13319bc51715SRobert Elliott	  See Documentation/crypto/userspace-if.rst and
13329bc51715SRobert Elliott	  https://www.chronox.de/libkcapi/html/index.html
1333fe869cdbSHerbert Xu
13348ff59090SHerbert Xuconfig CRYPTO_USER_API_SKCIPHER
13359bc51715SRobert Elliott	tristate "Symmetric key cipher algorithms"
13367451708fSHerbert Xu	depends on NET
1337b95bba5dSEric Biggers	select CRYPTO_SKCIPHER
13388ff59090SHerbert Xu	select CRYPTO_USER_API
13398ff59090SHerbert Xu	help
13409bc51715SRobert Elliott	  Enable the userspace interface for symmetric key cipher algorithms.
13419bc51715SRobert Elliott
13429bc51715SRobert Elliott	  See Documentation/crypto/userspace-if.rst and
13439bc51715SRobert Elliott	  https://www.chronox.de/libkcapi/html/index.html
13448ff59090SHerbert Xu
13452f375538SStephan Muellerconfig CRYPTO_USER_API_RNG
13469bc51715SRobert Elliott	tristate "RNG (random number generator) algorithms"
13472f375538SStephan Mueller	depends on NET
13482f375538SStephan Mueller	select CRYPTO_RNG
13492f375538SStephan Mueller	select CRYPTO_USER_API
13502f375538SStephan Mueller	help
13519bc51715SRobert Elliott	  Enable the userspace interface for RNG (random number generator)
13529bc51715SRobert Elliott	  algorithms.
13539bc51715SRobert Elliott
13549bc51715SRobert Elliott	  See Documentation/crypto/userspace-if.rst and
13559bc51715SRobert Elliott	  https://www.chronox.de/libkcapi/html/index.html
13562f375538SStephan Mueller
135777ebdabeSElena Petrovaconfig CRYPTO_USER_API_RNG_CAVP
135877ebdabeSElena Petrova	bool "Enable CAVP testing of DRBG"
135977ebdabeSElena Petrova	depends on CRYPTO_USER_API_RNG && CRYPTO_DRBG
136077ebdabeSElena Petrova	help
13619bc51715SRobert Elliott	  Enable extra APIs in the userspace interface for NIST CAVP
13629bc51715SRobert Elliott	  (Cryptographic Algorithm Validation Program) testing:
13639bc51715SRobert Elliott	  - resetting DRBG entropy
13649bc51715SRobert Elliott	  - providing Additional Data
13659bc51715SRobert Elliott
136677ebdabeSElena Petrova	  This should only be enabled for CAVP testing. You should say
136777ebdabeSElena Petrova	  no unless you know what this is.
136877ebdabeSElena Petrova
1369b64a2d95SHerbert Xuconfig CRYPTO_USER_API_AEAD
13709bc51715SRobert Elliott	tristate "AEAD cipher algorithms"
1371b64a2d95SHerbert Xu	depends on NET
1372b64a2d95SHerbert Xu	select CRYPTO_AEAD
1373b95bba5dSEric Biggers	select CRYPTO_SKCIPHER
137472548b09SStephan Mueller	select CRYPTO_NULL
1375b64a2d95SHerbert Xu	select CRYPTO_USER_API
1376b64a2d95SHerbert Xu	help
13779bc51715SRobert Elliott	  Enable the userspace interface for AEAD cipher algorithms.
13789bc51715SRobert Elliott
13799bc51715SRobert Elliott	  See Documentation/crypto/userspace-if.rst and
13809bc51715SRobert Elliott	  https://www.chronox.de/libkcapi/html/index.html
1381b64a2d95SHerbert Xu
13829ace6771SArd Biesheuvelconfig CRYPTO_USER_API_ENABLE_OBSOLETE
13839bc51715SRobert Elliott	bool "Obsolete cryptographic algorithms"
13849ace6771SArd Biesheuvel	depends on CRYPTO_USER_API
13859ace6771SArd Biesheuvel	default y
13869ace6771SArd Biesheuvel	help
13879ace6771SArd Biesheuvel	  Allow obsolete cryptographic algorithms to be selected that have
13889ace6771SArd Biesheuvel	  already been phased out from internal use by the kernel, and are
13899ace6771SArd Biesheuvel	  only useful for userspace clients that still rely on them.
13909ace6771SArd Biesheuvel
1391cac5818cSCorentin Labbeconfig CRYPTO_STATS
13929bc51715SRobert Elliott	bool "Crypto usage statistics"
1393a6a31385SCorentin Labbe	depends on CRYPTO_USER
1394cac5818cSCorentin Labbe	help
13959bc51715SRobert Elliott	  Enable the gathering of crypto stats.
13969bc51715SRobert Elliott
139766dd59b7SEric Biggers	  Enabling this option reduces the performance of the crypto API.  It
139866dd59b7SEric Biggers	  should only be enabled when there is actually a use case for it.
139966dd59b7SEric Biggers
14009bc51715SRobert Elliott	  This collects data sizes, numbers of requests, and numbers
14019bc51715SRobert Elliott	  of errors processed by:
14029bc51715SRobert Elliott	  - AEAD ciphers (encrypt, decrypt)
14039bc51715SRobert Elliott	  - asymmetric key ciphers (encrypt, decrypt, verify, sign)
14049bc51715SRobert Elliott	  - symmetric key ciphers (encrypt, decrypt)
14059bc51715SRobert Elliott	  - compression algorithms (compress, decompress)
14069bc51715SRobert Elliott	  - hash algorithms (hash)
14079bc51715SRobert Elliott	  - key-agreement protocol primitives (setsecret, generate
14089bc51715SRobert Elliott	    public key, compute shared secret)
14099bc51715SRobert Elliott	  - RNG (generate, seed)
1410cac5818cSCorentin Labbe
1411f1f142adSRobert Elliottendmenu
1412f1f142adSRobert Elliott
1413ee08997fSDmitry Kasatkinconfig CRYPTO_HASH_INFO
1414ee08997fSDmitry Kasatkin	bool
1415ee08997fSDmitry Kasatkin
141627bc50fcSLinus Torvaldsif !KMSAN # avoid false positives from assembly
14174a329fecSRobert Elliottif ARM
14184a329fecSRobert Elliottsource "arch/arm/crypto/Kconfig"
14194a329fecSRobert Elliottendif
14204a329fecSRobert Elliottif ARM64
14214a329fecSRobert Elliottsource "arch/arm64/crypto/Kconfig"
14224a329fecSRobert Elliottendif
14232f164822SMin Zhouif LOONGARCH
14242f164822SMin Zhousource "arch/loongarch/crypto/Kconfig"
14252f164822SMin Zhouendif
1426e45f710bSRobert Elliottif MIPS
1427e45f710bSRobert Elliottsource "arch/mips/crypto/Kconfig"
1428e45f710bSRobert Elliottendif
14296a490a4eSRobert Elliottif PPC
14306a490a4eSRobert Elliottsource "arch/powerpc/crypto/Kconfig"
14316a490a4eSRobert Elliottendif
1432c9d24c97SRobert Elliottif S390
1433c9d24c97SRobert Elliottsource "arch/s390/crypto/Kconfig"
1434c9d24c97SRobert Elliottendif
14350e9f9ea6SRobert Elliottif SPARC
14360e9f9ea6SRobert Elliottsource "arch/sparc/crypto/Kconfig"
14370e9f9ea6SRobert Elliottendif
143828a936efSRobert Elliottif X86
143928a936efSRobert Elliottsource "arch/x86/crypto/Kconfig"
144028a936efSRobert Elliottendif
144127bc50fcSLinus Torvaldsendif
1442e45f710bSRobert Elliott
14431da177e4SLinus Torvaldssource "drivers/crypto/Kconfig"
14448636a1f9SMasahiro Yamadasource "crypto/asymmetric_keys/Kconfig"
14458636a1f9SMasahiro Yamadasource "certs/Kconfig"
14461da177e4SLinus Torvalds
1447cce9e06dSHerbert Xuendif	# if CRYPTO
1448