xref: /linux/crypto/Kconfig (revision 70d1b1a7f8b32b78c09b30dbcfa25ba1e470568b) !
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 CRYPTO_LIB_UTILS
191da177e4SLinus Torvalds	help
201da177e4SLinus Torvalds	  This option provides the core Cryptographic API.
211da177e4SLinus Torvalds
22cce9e06dSHerbert Xuif CRYPTO
23cce9e06dSHerbert Xu
24584fffc8SSebastian Siewiormenu "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_SELFTESTS
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
75149a3971SHerbert Xuconfig CRYPTO_SIG
766a0fcbb4SHerbert Xu	tristate
77b95bba5dSEric Biggers	select CRYPTO_SIG2
785cde0af2SHerbert Xu	select CRYPTO_ALGAPI
79b95bba5dSEric Biggers
805cde0af2SHerbert Xuconfig CRYPTO_SIG2
816a0fcbb4SHerbert Xu	tristate
82b95bba5dSEric Biggers	select CRYPTO_ALGAPI2
836a0fcbb4SHerbert Xu
846a0fcbb4SHerbert Xuconfig CRYPTO_SKCIPHER
856a0fcbb4SHerbert Xu	tristate
865cde0af2SHerbert Xu	select CRYPTO_SKCIPHER2
87055bcee3SHerbert Xu	select CRYPTO_ALGAPI
88055bcee3SHerbert Xu	select CRYPTO_ECB
896a0fcbb4SHerbert Xu
90055bcee3SHerbert Xuconfig CRYPTO_SKCIPHER2
91055bcee3SHerbert Xu	tristate
926a0fcbb4SHerbert Xu	select CRYPTO_ALGAPI2
936a0fcbb4SHerbert Xu
946a0fcbb4SHerbert Xuconfig CRYPTO_HASH
956a0fcbb4SHerbert Xu	tristate
9617f0f4a4SNeil Horman	select CRYPTO_HASH2
9717f0f4a4SNeil Horman	select CRYPTO_ALGAPI
986a0fcbb4SHerbert Xu
9917f0f4a4SNeil Hormanconfig CRYPTO_HASH2
10017f0f4a4SNeil Horman	tristate
1016a0fcbb4SHerbert Xu	select CRYPTO_ALGAPI2
1026a0fcbb4SHerbert Xu
1036a0fcbb4SHerbert Xuconfig CRYPTO_RNG
1046a0fcbb4SHerbert Xu	tristate
105401e4238SHerbert Xu	select CRYPTO_RNG2
106401e4238SHerbert Xu	select CRYPTO_ALGAPI
107401e4238SHerbert Xu
108401e4238SHerbert Xuconfig CRYPTO_RNG2
1093c339ab8STadeusz Struk	tristate
1103c339ab8STadeusz Struk	select CRYPTO_ALGAPI2
1113c339ab8STadeusz Struk
1123c339ab8STadeusz Strukconfig CRYPTO_RNG_DEFAULT
1133c339ab8STadeusz Struk	tristate
1143c339ab8STadeusz Struk	select CRYPTO_DRBG_MENU
1153c339ab8STadeusz Struk
1163c339ab8STadeusz Strukconfig CRYPTO_AKCIPHER2
1173c339ab8STadeusz Struk	tristate
1184e5f2c40SSalvatore Benedetto	select CRYPTO_ALGAPI2
1194e5f2c40SSalvatore Benedetto
1204e5f2c40SSalvatore Benedettoconfig CRYPTO_AKCIPHER
1214e5f2c40SSalvatore Benedetto	tristate
1224e5f2c40SSalvatore Benedetto	select CRYPTO_AKCIPHER2
1234e5f2c40SSalvatore Benedetto	select CRYPTO_ALGAPI
1244e5f2c40SSalvatore Benedetto
1254e5f2c40SSalvatore Benedettoconfig CRYPTO_KPP2
1264e5f2c40SSalvatore Benedetto	tristate
1272ebda74fSGiovanni Cabiddu	select CRYPTO_ALGAPI2
1282ebda74fSGiovanni Cabiddu
1292ebda74fSGiovanni Cabidduconfig CRYPTO_KPP
1308cd579d2SBart Van Assche	tristate
1312ebda74fSGiovanni Cabiddu	select CRYPTO_ALGAPI
1322ebda74fSGiovanni Cabiddu	select CRYPTO_KPP2
1332ebda74fSGiovanni Cabiddu
1342ebda74fSGiovanni Cabidduconfig CRYPTO_ACOMP2
1352ebda74fSGiovanni Cabiddu	tristate
1362ebda74fSGiovanni Cabiddu	select CRYPTO_ALGAPI2
1372b8c19dbSHerbert Xu	select SGL_ALLOC
1382b8c19dbSHerbert Xu
1396a0fcbb4SHerbert Xuconfig CRYPTO_ACOMP
1402b8c19dbSHerbert Xu	tristate
1412b8c19dbSHerbert Xu	select CRYPTO_ALGAPI
1422b8c19dbSHerbert Xu	select CRYPTO_ACOMP2
1432b8c19dbSHerbert Xu
1446a0fcbb4SHerbert Xuconfig CRYPTO_HKDF
1456a0fcbb4SHerbert Xu	tristate
1466a0fcbb4SHerbert Xu	select CRYPTO_SHA256 if CRYPTO_SELFTESTS
1476a0fcbb4SHerbert Xu	select CRYPTO_SHA512 if CRYPTO_SELFTESTS
148b95bba5dSEric Biggers	select CRYPTO_HASH2
149946cc463STadeusz Struk
1504e5f2c40SSalvatore Benedettoconfig CRYPTO_MANAGER
1512ebda74fSGiovanni Cabiddu	tristate
1526a0fcbb4SHerbert Xu	default CRYPTO_ALGAPI if CRYPTO_SELFTESTS
153a38f7907SSteffen Klassert	select CRYPTO_MANAGER2
154a38f7907SSteffen Klassert	help
1555db017aaSHerbert Xu	  This provides the support for instantiating templates such as
156a38f7907SSteffen Klassert	  cbc(aes), and the support for the crypto self-tests.
157a38f7907SSteffen Klassert
158d19978f5SValdis.Kletnieks@vt.educonfig CRYPTO_MANAGER2
159a38f7907SSteffen Klassert	def_tristate CRYPTO_MANAGER || (CRYPTO_MANAGER!=n && CRYPTO_ALGAPI=y)
160a38f7907SSteffen Klassert	select CRYPTO_ACOMP2
161326a6346SHerbert Xu	select CRYPTO_AEAD2
162326a6346SHerbert Xu	select CRYPTO_AKCIPHER2
16300ca28a5SHerbert Xu	select CRYPTO_SIG2
1640b767f96SAlexander Shishkin	select CRYPTO_HASH2
165326a6346SHerbert Xu	select CRYPTO_KPP2
166326a6346SHerbert Xu	select CRYPTO_RNG2
1670b767f96SAlexander Shishkin	select CRYPTO_SKCIPHER2
1685b2706a4SEric Biggers
1695b2706a4SEric Biggersconfig CRYPTO_USER
1706569e309SJason A. Donenfeld	tristate "Userspace cryptographic algorithm configuration"
1715b2706a4SEric Biggers	depends on NET
1725b2706a4SEric Biggers	select CRYPTO_MANAGER
1735b2706a4SEric Biggers	help
1745b2706a4SEric Biggers	  Userspace configuration for cryptographic instantiations such as
1755b2706a4SEric Biggers	  cbc(aes).
1765b2706a4SEric Biggers
1775b2706a4SEric Biggersconfig CRYPTO_SELFTESTS
178584fffc8SSebastian Siewior	bool "Enable cryptographic self-tests"
179e590e132SEric Biggers	depends on EXPERT
180584fffc8SSebastian Siewior	help
181584fffc8SSebastian Siewior	  Enable the cryptographic self-tests.
182584fffc8SSebastian Siewior
183149a3971SHerbert Xu	  The cryptographic self-tests run at boot time, or at algorithm
184584fffc8SSebastian Siewior	  registration time if algorithms are dynamically loaded later.
185584fffc8SSebastian Siewior
186584fffc8SSebastian Siewior	  There are two main use cases for these tests:
187149a3971SHerbert Xu
188dd43c4e9SHerbert Xu	  - Development and pre-release testing.  In this case, also enable
189149a3971SHerbert Xu	    CRYPTO_SELFTESTS_FULL to get the full set of tests.  All crypto code
190b95bba5dSEric Biggers	    in the kernel is expected to pass the full set of tests.
191149a3971SHerbert Xu
192149a3971SHerbert Xu	  - Production kernels, to help prevent buggy drivers from being used
1935068c7a8SSteffen Klassert	    and/or meet FIPS 140-3 pre-operational testing requirements.  In
1943b4afaf2SKees Cook	    this case, enable CRYPTO_SELFTESTS but not CRYPTO_SELFTESTS_FULL.
1953b4afaf2SKees Cook
1965068c7a8SSteffen Klassertconfig CRYPTO_SELFTESTS_FULL
1975068c7a8SSteffen Klassert	bool "Enable the full set of cryptographic self-tests"
1985068c7a8SSteffen Klassert	depends on CRYPTO_SELFTESTS
1995068c7a8SSteffen Klassert	help
2005068c7a8SSteffen Klassert	  Enable the full set of cryptographic self-tests for each algorithm.
2015068c7a8SSteffen Klassert
2025068c7a8SSteffen Klassert	  The full set of tests should be enabled for development and
203584fffc8SSebastian Siewior	  pre-release testing, but not in production kernels.
204584fffc8SSebastian Siewior
205b95bba5dSEric Biggers	  All crypto code in the kernel is expected to pass the full tests.
206b8a28251SLoc Ho
207584fffc8SSebastian Siewiorconfig CRYPTO_NULL
208584fffc8SSebastian Siewior	tristate "Null algorithms"
209584fffc8SSebastian Siewior	select CRYPTO_ALGAPI
210584fffc8SSebastian Siewior	select CRYPTO_SKCIPHER
211584fffc8SSebastian Siewior	select CRYPTO_HASH
212584fffc8SSebastian Siewior	help
213584fffc8SSebastian Siewior	  These are 'Null' algorithms, used by IPsec, which do nothing.
214584fffc8SSebastian Siewior
215584fffc8SSebastian Siewiorconfig CRYPTO_PCRYPT
216b95bba5dSEric Biggers	tristate "Parallel crypto engine"
217584fffc8SSebastian Siewior	depends on SMP
218584fffc8SSebastian Siewior	select PADATA
219e94c6a7aSHerbert Xu	select CRYPTO_MANAGER
220584fffc8SSebastian Siewior	select CRYPTO_AEAD
221584fffc8SSebastian Siewior	help
222584fffc8SSebastian Siewior	  This converts an arbitrary crypto algorithm into a parallel
223584fffc8SSebastian Siewior	  algorithm that executes in kernel threads.
224584fffc8SSebastian Siewior
225584fffc8SSebastian Siewiorconfig CRYPTO_CRYPTD
22600ea27f1SArd Biesheuvel	tristate "Software async crypto daemon"
227da7f033dSHerbert Xu	select CRYPTO_SKCIPHER
228584fffc8SSebastian Siewior	select CRYPTO_HASH
229584fffc8SSebastian Siewior	select CRYPTO_MANAGER
230584fffc8SSebastian Siewior	help
231266d0516SHerbert Xu	  This is a generic software asynchronous crypto daemon that
232266d0516SHerbert Xu	  converts an arbitrary synchronous software crypto algorithm
233266d0516SHerbert Xu	  into an asynchronous algorithm that executes in a kernel thread.
234266d0516SHerbert Xu
235735d37b5SBaolin Wangconfig CRYPTO_AUTHENC
236735d37b5SBaolin Wang	tristate "Authenc support"
237735d37b5SBaolin Wang	select CRYPTO_AEAD
2383d6228a5SVitaly Chikunov	select CRYPTO_SKCIPHER
2393d6228a5SVitaly Chikunov	select CRYPTO_MANAGER
2403d6228a5SVitaly Chikunov	select CRYPTO_HASH
2413d6228a5SVitaly Chikunov	help
2423d6228a5SVitaly Chikunov	  Authenc: Combined mode wrapper for IPsec.
2433d6228a5SVitaly Chikunov
2443d6228a5SVitaly Chikunov	  This is required for IPSec ESP (XFRM_ESP).
2453d6228a5SVitaly Chikunov
2463d6228a5SVitaly Chikunovconfig CRYPTO_KRB5ENC
2473d6228a5SVitaly Chikunov	tristate "Kerberos 5 combined hash+cipher support"
2483d6228a5SVitaly Chikunov	select CRYPTO_AEAD
2493d6228a5SVitaly Chikunov	select CRYPTO_SKCIPHER
2503d6228a5SVitaly Chikunov	select CRYPTO_MANAGER
2513d6228a5SVitaly Chikunov	select CRYPTO_HASH
2523d6228a5SVitaly Chikunov	help
2533d6228a5SVitaly Chikunov	  Combined hash and cipher support for Kerberos 5 RFC3961 simplified
2543d6228a5SVitaly Chikunov	  profile.  This is required for Kerberos 5-style encryption, used by
2553d6228a5SVitaly Chikunov	  sunrpc/NFS and rxrpc/AFS.
2567dce5981SNicolai Stange
2577dce5981SNicolai Stangeconfig CRYPTO_BENCHMARK
2587dce5981SNicolai Stange	tristate "Crypto benchmarking module"
2591e207964SNicolai Stange	depends on m || EXPERT
2607dce5981SNicolai Stange	select CRYPTO_MANAGER
2617dce5981SNicolai Stange	help
2627dce5981SNicolai Stange	  Quick & dirty crypto benchmarking module.
2634a2289daSVitaly Chikunov
2644a2289daSVitaly Chikunov	  This is mainly intended for use by people developing cryptographic
26538aa192aSArnd Bergmann	  algorithms in the kernel.  It should not be enabled in production
2664a2289daSVitaly Chikunov	  kernels.
2673d6228a5SVitaly Chikunov
2683d6228a5SVitaly Chikunovconfig CRYPTO_SIMD
2694a2289daSVitaly Chikunov	tristate
2703d6228a5SVitaly Chikunov	select CRYPTO_CRYPTD
2713d6228a5SVitaly Chikunov
2723d6228a5SVitaly Chikunovconfig CRYPTO_ENGINE
2733d6228a5SVitaly Chikunov	tristate
2744e660291SStefan Berger
2754e660291SStefan Bergerendmenu
2764e660291SStefan Berger
2774e660291SStefan Bergermenu "Public-key cryptography"
2784e660291SStefan Berger
2794e660291SStefan Bergerconfig CRYPTO_RSA
2804e660291SStefan Berger	tristate "RSA (Rivest-Shamir-Adleman)"
2814e660291SStefan Berger	select CRYPTO_AKCIPHER
2824e660291SStefan Berger	select CRYPTO_MANAGER
2834e660291SStefan Berger	select CRYPTO_SIG
2840d7a7864SVitaly Chikunov	select MPILIB
2850d7a7864SVitaly Chikunov	select ASN1
2860d7a7864SVitaly Chikunov	help
2870d7a7864SVitaly Chikunov	  RSA (Rivest-Shamir-Adleman) public key algorithm (RFC8017)
2880d7a7864SVitaly Chikunov
2891036633eSVitaly Chikunovconfig CRYPTO_DH
2901036633eSVitaly Chikunov	tristate "DH (Diffie-Hellman)"
2910d7a7864SVitaly Chikunov	select CRYPTO_KPP
2920d7a7864SVitaly Chikunov	select MPILIB
2930d7a7864SVitaly Chikunov	help
2940d7a7864SVitaly Chikunov	  DH (Diffie-Hellman) key exchange algorithm
2950d7a7864SVitaly Chikunov
2960d7a7864SVitaly Chikunovconfig CRYPTO_DH_RFC7919_GROUPS
297ea7ecb66STianjia Zhang	bool "RFC 7919 FFDHE groups"
298ea7ecb66STianjia Zhang	depends on CRYPTO_DH
299d2825fa9SJason A. Donenfeld	select CRYPTO_RNG_DEFAULT
300ea7ecb66STianjia Zhang	help
301ea7ecb66STianjia Zhang	  FFDHE (Finite-Field-based Diffie-Hellman Ephemeral) groups
302ea7ecb66STianjia Zhang	  defined in RFC7919.
303ea7ecb66STianjia Zhang
304ea7ecb66STianjia Zhang	  Support these finite-field groups in DH key exchanges:
305ea7ecb66STianjia Zhang	  - ffdhe2048, ffdhe3072, ffdhe4096, ffdhe6144, ffdhe8192
306ea7ecb66STianjia Zhang
307ea7ecb66STianjia Zhang	  If unsure, say N.
308ea7ecb66STianjia Zhang
309ea7ecb66STianjia Zhangconfig CRYPTO_ECC
310ea7ecb66STianjia Zhang	tristate
311ea7ecb66STianjia Zhang	select CRYPTO_RNG_DEFAULT
312ea7ecb66STianjia Zhang
313ea7ecb66STianjia Zhangconfig CRYPTO_ECDH
314ee772cb6SArd Biesheuvel	tristate "ECDH (Elliptic Curve Diffie-Hellman)"
315ee772cb6SArd Biesheuvel	select CRYPTO_ECC
316ee772cb6SArd Biesheuvel	select CRYPTO_KPP
317ee772cb6SArd Biesheuvel	help
318ee772cb6SArd Biesheuvel	  ECDH (Elliptic Curve Diffie-Hellman) key exchange algorithm
319bb611bdfSJason A. Donenfeld	  using curves P-192, P-256, and P-384 (FIPS 186)
320bb611bdfSJason A. Donenfeld
321bb611bdfSJason A. Donenfeldconfig CRYPTO_ECDSA
322bb611bdfSJason A. Donenfeld	tristate "ECDSA (Elliptic Curve Digital Signature Algorithm)"
323bb611bdfSJason A. Donenfeld	select CRYPTO_ECC
324bb611bdfSJason A. Donenfeld	select CRYPTO_SIG
325584fffc8SSebastian Siewior	select ASN1
326584fffc8SSebastian Siewior	help
327584fffc8SSebastian Siewior	  ECDSA (Elliptic Curve Digital Signature Algorithm) (FIPS 186,
328584fffc8SSebastian Siewior	  ISO/IEC 14888-3)
329584fffc8SSebastian Siewior	  using curves P-192, P-256, P-384 and P-521
330f15f05b0SArd Biesheuvel
331584fffc8SSebastian Siewior	  Only signature verification is implemented.
332c8a3315aSEric Biggers
333584fffc8SSebastian Siewiorconfig CRYPTO_ECRDSA
334584fffc8SSebastian Siewior	tristate "EC-RDSA (Elliptic Curve Russian Digital Signature Algorithm)"
335584fffc8SSebastian Siewior	select CRYPTO_ECC
336584fffc8SSebastian Siewior	select CRYPTO_SIG
337584fffc8SSebastian Siewior	select CRYPTO_STREEBOG
338584fffc8SSebastian Siewior	select OID_REGISTRY
339584fffc8SSebastian Siewior	select ASN1
3409382d97aSHuang Ying	help
3419489667dSJussi Kivilinna	  Elliptic Curve Russian Digital Signature Algorithm (GOST R 34.10-2012,
342c8a3315aSEric Biggers	  RFC 7091, ISO/IEC 14888-3)
343584fffc8SSebastian Siewior
344584fffc8SSebastian Siewior	  One of the Russian cryptographic standard algorithms (called GOST
345584fffc8SSebastian Siewior	  algorithms). Only signature verification is implemented.
346584fffc8SSebastian Siewior
34771ebc4d1SMartin Williendmenu
34871ebc4d1SMartin Willi
34971ebc4d1SMartin Willimenu "Block ciphers"
35071ebc4d1SMartin Willi
35171ebc4d1SMartin Williconfig CRYPTO_AES
352c8a3315aSEric Biggers	tristate "AES (Advanced Encryption Standard)"
35371ebc4d1SMartin Willi	select CRYPTO_ALGAPI
35471ebc4d1SMartin Willi	select CRYPTO_LIB_AES
35571ebc4d1SMartin Willi	help
35671ebc4d1SMartin Willi	  AES cipher algorithms (Rijndael)(FIPS-197, ISO/IEC 18033-3)
35771ebc4d1SMartin Willi
35871ebc4d1SMartin Willi	  Rijndael appears to be consistently a very good performer in
35971ebc4d1SMartin Willi	  both hardware and software across a wide range of computing
360f606a88eSOndrej Mosnacek	  environments regardless of its use in feedback or non-feedback
361f606a88eSOndrej Mosnacek	  modes. Its key setup time is excellent, and its key agility is
362f606a88eSOndrej Mosnacek	  good. Rijndael's very low memory requirements make it very well
363f606a88eSOndrej Mosnacek	  suited for restricted-space environments, in which it also
364f606a88eSOndrej Mosnacek	  demonstrates excellent performance. Rijndael's operations are
365f606a88eSOndrej Mosnacek	  among the easiest to defend against power and timing attacks.
366f606a88eSOndrej Mosnacek
367a4397635SArd Biesheuvel	  The AES specifies three key sizes: 128, 192 and 256 bits
368a4397635SArd Biesheuvel
369a4397635SArd Biesheuvelconfig CRYPTO_AES_TI
370a4397635SArd Biesheuvel	tristate "AES (Advanced Encryption Standard) (fixed time)"
371a4397635SArd Biesheuvel	select CRYPTO_ALGAPI
3721d373d4eSOndrej Mosnacek	select CRYPTO_LIB_AES
3731d373d4eSOndrej Mosnacek	help
3741d373d4eSOndrej Mosnacek	  AES cipher algorithms (Rijndael)(FIPS-197, ISO/IEC 18033-3)
3751d373d4eSOndrej Mosnacek
376de272ca7SEric Biggers	  This is a generic implementation of AES that attempts to eliminate
3771d373d4eSOndrej Mosnacek	  data dependent latencies as much as possible without affecting
3784e5180ebSOndrej Mosnacek	  performance too much. It is intended for use by the generic CCM
3791d373d4eSOndrej Mosnacek	  and GCM drivers, and other CTR or CMAC/XCBC based modes that rely
380584fffc8SSebastian Siewior	  solely on encryption (although decryption is supported as well, but
381584fffc8SSebastian Siewior	  with a more dramatic performance hit)
382584fffc8SSebastian Siewior
383b95bba5dSEric Biggers	  Instead of using 16 lookup tables of 1 KB each, (8 for encryption and
384856e3f40SHerbert Xu	  8 for decryption), this implementation only uses just two S-boxes of
385401e4238SHerbert Xu	  256 bytes each, and attempts to eliminate data dependent latencies by
386c8a3315aSEric Biggers	  prefetching the entire table into the cache at the start of each
387584fffc8SSebastian Siewior	  block. Interrupts are also disabled to avoid races where cachelines
388584fffc8SSebastian Siewior	  are evicted when the CPU is interrupted to do something else.
389584fffc8SSebastian Siewior
390584fffc8SSebastian Siewiorconfig CRYPTO_ANUBIS
391a10f554fSHerbert Xu	tristate "Anubis"
392a10f554fSHerbert Xu	depends on CRYPTO_USER_API_ENABLE_OBSOLETE
393a10f554fSHerbert Xu	select CRYPTO_ALGAPI
394a10f554fSHerbert Xu	help
395401e4238SHerbert Xu	  Anubis cipher algorithm
396c8a3315aSEric Biggers
397a10f554fSHerbert Xu	  Anubis is a variable key length cipher which can use keys from
398a10f554fSHerbert Xu	  128 bits to 320 bits in length.  It was evaluated as a entrant
399a10f554fSHerbert Xu	  in the NESSIE competition.
400a10f554fSHerbert Xu
401a10f554fSHerbert Xu	  See https://web.archive.org/web/20160606112246/http://www.larc.usp.br/~pbarreto/AnubisPage.html
402584fffc8SSebastian Siewior	  for further information.
403584fffc8SSebastian Siewior
404584fffc8SSebastian Siewiorconfig CRYPTO_ARIA
405584fffc8SSebastian Siewior	tristate "ARIA"
406b95bba5dSEric Biggers	select CRYPTO_ALGAPI
407584fffc8SSebastian Siewior	help
408584fffc8SSebastian Siewior	  ARIA cipher algorithm (RFC5794)
409584fffc8SSebastian Siewior
410584fffc8SSebastian Siewior	  ARIA is a standard encryption algorithm of the Republic of Korea.
411584fffc8SSebastian Siewior	  The ARIA specifies three key sizes and rounds.
412a7d85e06SJames Bottomley	  128-bit: 12 rounds.
413a7d85e06SJames Bottomley	  192-bit: 14 rounds.
414b95bba5dSEric Biggers	  256-bit: 16 rounds.
415a7d85e06SJames Bottomley
416a7d85e06SJames Bottomley	  See:
417a7d85e06SJames Bottomley	  https://seed.kisa.or.kr/kisa/algorithm/EgovAriaInfo.do
418a7d85e06SJames Bottomley
419a7d85e06SJames Bottomleyconfig CRYPTO_BLOWFISH
420584fffc8SSebastian Siewior	tristate "Blowfish"
421584fffc8SSebastian Siewior	select CRYPTO_ALGAPI
422b95bba5dSEric Biggers	select CRYPTO_BLOWFISH_COMMON
423584fffc8SSebastian Siewior	help
424584fffc8SSebastian Siewior	  Blowfish cipher algorithm, by Bruce Schneier
425584fffc8SSebastian Siewior
426584fffc8SSebastian Siewior	  This is a variable key length cipher which can use keys from 32
427584fffc8SSebastian Siewior	  bits to 448 bits in length.  It's fast, simple and specifically
428584fffc8SSebastian Siewior	  designed for use on "large microprocessors".
429584fffc8SSebastian Siewior
430b95bba5dSEric Biggers	  See https://www.schneier.com/blowfish.html for further information.
431c8a3315aSEric Biggers
432584fffc8SSebastian Siewiorconfig CRYPTO_BLOWFISH_COMMON
433584fffc8SSebastian Siewior	tristate
434584fffc8SSebastian Siewior	help
435ecd6d5c9SGilad Ben-Yossef	  Common parts of the Blowfish cipher algorithm shared by the
436ecd6d5c9SGilad Ben-Yossef	  generic c and the assembler implementations.
437ecd6d5c9SGilad Ben-Yossef
438584fffc8SSebastian Siewiorconfig CRYPTO_CAMELLIA
439584fffc8SSebastian Siewior	tristate "Camellia"
440584fffc8SSebastian Siewior	select CRYPTO_ALGAPI
441ecd6d5c9SGilad Ben-Yossef	help
442ecd6d5c9SGilad Ben-Yossef	  Camellia cipher algorithms (ISO/IEC 18033-3)
443584fffc8SSebastian Siewior
444584fffc8SSebastian Siewior	  Camellia is a symmetric key block cipher developed jointly
445b95bba5dSEric Biggers	  at NTT and Mitsubishi Electric Corporation.
446584fffc8SSebastian Siewior
447584fffc8SSebastian Siewior	  The Camellia specifies three key sizes: 128, 192 and 256 bits.
448584fffc8SSebastian Siewior
449584fffc8SSebastian Siewior	  See https://info.isl.ntt.co.jp/crypt/eng/camellia/ for further information.
450584fffc8SSebastian Siewior
451584fffc8SSebastian Siewiorconfig CRYPTO_CAST_COMMON
452584fffc8SSebastian Siewior	tristate
4532470a2b2SJussi Kivilinna	help
454b95bba5dSEric Biggers	  Common parts of the CAST cipher algorithms shared by the
455584fffc8SSebastian Siewior	  generic c and the assembler implementations.
456584fffc8SSebastian Siewior
457f60bbbbeSHerbert Xuconfig CRYPTO_CAST5
458584fffc8SSebastian Siewior	tristate "CAST5 (CAST-128)"
459584fffc8SSebastian Siewior	select CRYPTO_ALGAPI
460584fffc8SSebastian Siewior	select CRYPTO_CAST_COMMON
461584fffc8SSebastian Siewior	help
462584fffc8SSebastian Siewior	  CAST5 (CAST-128) cipher algorithm (RFC2144, ISO/IEC 18033-3)
463584fffc8SSebastian Siewior
464584fffc8SSebastian Siewiorconfig CRYPTO_CAST6
465e497c518SGilad Ben-Yossef	tristate "CAST6 (CAST-256)"
466e497c518SGilad Ben-Yossef	select CRYPTO_ALGAPI
467b95bba5dSEric Biggers	select CRYPTO_CAST_COMMON
468e497c518SGilad Ben-Yossef	help
469e497c518SGilad Ben-Yossef	  CAST6 (CAST-256) encryption algorithm (RFC2612)
470e497c518SGilad Ben-Yossef
471e497c518SGilad Ben-Yossefconfig CRYPTO_DES
472e497c518SGilad Ben-Yossef	tristate "DES and Triple DES EDE"
473e497c518SGilad Ben-Yossef	select CRYPTO_ALGAPI
474e497c518SGilad Ben-Yossef	select CRYPTO_LIB_DES
475e497c518SGilad Ben-Yossef	help
476e497c518SGilad Ben-Yossef	  DES (Data Encryption Standard)(FIPS 46-2, ISO/IEC 18033-3) and
477584fffc8SSebastian Siewior	  Triple DES EDE (Encrypt/Decrypt/Encrypt) (FIPS 46-3, ISO/IEC 18033-3)
478584fffc8SSebastian Siewior	  cipher algorithms
479b95bba5dSEric Biggers
480584fffc8SSebastian Siewiorconfig CRYPTO_FCRYPT
481584fffc8SSebastian Siewior	tristate "FCrypt"
482584fffc8SSebastian Siewior	select CRYPTO_ALGAPI
483584fffc8SSebastian Siewior	select CRYPTO_SKCIPHER
484584fffc8SSebastian Siewior	help
48517fee07aSNathan Huckleberry	  FCrypt algorithm used by RxRPC
48617fee07aSNathan Huckleberry
48717fee07aSNathan Huckleberry	  See https://ota.polyonymo.us/fcrypt-paper.txt
48817fee07aSNathan Huckleberry
48917fee07aSNathan Huckleberryconfig CRYPTO_KHAZAD
49017fee07aSNathan Huckleberry	tristate "Khazad"
49117fee07aSNathan Huckleberry	depends on CRYPTO_USER_API_ENABLE_OBSOLETE
49217fee07aSNathan Huckleberry	select CRYPTO_ALGAPI
49317fee07aSNathan Huckleberry	help
494584fffc8SSebastian Siewior	  Khazad cipher algorithm
4955bcf8e6dSJussi Kivilinna
496b95bba5dSEric Biggers	  Khazad was a finalist in the initial NESSIE competition.  It is
497584fffc8SSebastian Siewior	  an algorithm optimized for 64-bit processors with good performance
49812cb3a1cSMilan Broz	  on 32-bit processors.  Khazad uses an 128 bit key size.
499584fffc8SSebastian Siewior
500584fffc8SSebastian Siewior	  See https://web.archive.org/web/20171011071731/http://www.larc.usp.br/~pbarreto/KhazadPage.html
501584fffc8SSebastian Siewior	  for further information.
502584fffc8SSebastian Siewior
503584fffc8SSebastian Siewiorconfig CRYPTO_SEED
5041c49678eSStephan Mueller	tristate "SEED"
5051c49678eSStephan Mueller	depends on CRYPTO_USER_API_ENABLE_OBSOLETE
506b95bba5dSEric Biggers	select CRYPTO_ALGAPI
507c8a3315aSEric Biggers	help
5081c49678eSStephan Mueller	  SEED cipher algorithm (RFC4269, ISO/IEC 18033-3)
5091c49678eSStephan Mueller
5101c49678eSStephan Mueller	  SEED is a 128-bit symmetric key block cipher that has been
5111c49678eSStephan Mueller	  developed by KISA (Korea Information Security Agency) as a
51226609a21SEric Biggers	  national standard encryption algorithm of the Republic of Korea.
51326609a21SEric Biggers	  It is a 16 round block cipher with the key size of 128 bit.
51426609a21SEric Biggers
51548ea8c6eSArd Biesheuvel	  See https://seed.kisa.or.kr/kisa/algorithm/EgovSeedInfo.do
51626609a21SEric Biggers	  for further information.
517012c8238SEric Biggers
518012c8238SEric Biggersconfig CRYPTO_SERPENT
519012c8238SEric Biggers	tristate "Serpent"
520012c8238SEric Biggers	select CRYPTO_ALGAPI
521012c8238SEric Biggers	help
522012c8238SEric Biggers	  Serpent cipher algorithm, by Anderson, Biham & Knudsen
523012c8238SEric Biggers
524012c8238SEric Biggers	  Keys are allowed to be from 0 to 256 bits in length, in steps
5250f961f9fSEric Biggers	  of 8 bits.
5260f961f9fSEric Biggers
5270f961f9fSEric Biggers	  See https://www.cl.cam.ac.uk/~rja14/serpent.html for further information.
5280f961f9fSEric Biggers
5290f961f9fSEric Biggersconfig CRYPTO_SM4
5300f961f9fSEric Biggers	tristate
5310f961f9fSEric Biggers
5320f961f9fSEric Biggersconfig CRYPTO_SM4_GENERIC
533059c2a4dSEric Biggers	tristate "SM4 (ShangMi 4)"
534059c2a4dSEric Biggers	select CRYPTO_ALGAPI
535059c2a4dSEric Biggers	select CRYPTO_SM4
53648ea8c6eSArd Biesheuvel	help
537059c2a4dSEric Biggers	  SM4 cipher algorithms (OSCCA GB/T 32907-2016,
538c8a3315aSEric Biggers	  ISO/IEC 18033-3:2010/Amd 1:2021)
539059c2a4dSEric Biggers
540059c2a4dSEric Biggers	  SM4 (GBT.32907-2016) is a cryptographic standard issued by the
541059c2a4dSEric Biggers	  Organization of State Commercial Administration of China (OSCCA)
542059c2a4dSEric Biggers	  as an authorized cryptographic algorithms for the use within China.
543059c2a4dSEric Biggers
544059c2a4dSEric Biggers	  SMS4 was originally created for use in protecting wireless
545059c2a4dSEric Biggers	  networks, and is mandated in the Chinese National Standard for
546059c2a4dSEric Biggers	  Wireless LAN WAPI (Wired Authentication and Privacy Infrastructure)
547059c2a4dSEric Biggers	  (GB.15629.11-2003).
548059c2a4dSEric Biggers
549059c2a4dSEric Biggers	  The latest SM4 standard (GBT.32907-2016) was proposed by OSCCA and
550059c2a4dSEric Biggers	  standardized through TC 260 of the Standardization Administration
551059c2a4dSEric Biggers	  of the People's Republic of China (SAC).
552059c2a4dSEric Biggers
553059c2a4dSEric Biggers	  The input, output, and key of SMS4 are each 128 bits.
554059c2a4dSEric Biggers
555059c2a4dSEric Biggers	  See https://eprint.iacr.org/2008/329.pdf for further information.
556059c2a4dSEric Biggers
5577ff554ceSNathan Huckleberry	  If unsure, say N.
5587ff554ceSNathan Huckleberry
5597ff554ceSNathan Huckleberryconfig CRYPTO_TEA
5607ff554ceSNathan Huckleberry	tristate "TEA, XTEA and XETA"
5617ff554ceSNathan Huckleberry	depends on CRYPTO_USER_API_ENABLE_OBSOLETE
5627ff554ceSNathan Huckleberry	select CRYPTO_ALGAPI
5637ff554ceSNathan Huckleberry	help
5647ff554ceSNathan Huckleberry	  TEA (Tiny Encryption Algorithm) cipher algorithms
5657ff554ceSNathan Huckleberry
5667ff554ceSNathan Huckleberry	  Tiny Encryption Algorithm is a simple cipher that uses
5677ff554ceSNathan Huckleberry	  many rounds for security.  It is very fast and uses
568be1eb7f7SArd Biesheuvel	  little memory.
569be1eb7f7SArd Biesheuvel
570be1eb7f7SArd Biesheuvel	  Xtendend Tiny Encryption Algorithm is a modification to
571be1eb7f7SArd Biesheuvel	  the TEA algorithm to address a potential key weakness
572be1eb7f7SArd Biesheuvel	  in the TEA algorithm.
573be1eb7f7SArd Biesheuvel
574be1eb7f7SArd Biesheuvel	  Xtendend Encryption Tiny Algorithm is a mis-implementation
575be1eb7f7SArd Biesheuvel	  of the XTEA algorithm for compatibility purposes.
576be1eb7f7SArd Biesheuvel
577be1eb7f7SArd Biesheuvelconfig CRYPTO_TWOFISH
578be1eb7f7SArd Biesheuvel	tristate "Twofish"
579be1eb7f7SArd Biesheuvel	select CRYPTO_ALGAPI
580ab3d436bSGeert Uytterhoeven	select CRYPTO_TWOFISH_COMMON
581be1eb7f7SArd Biesheuvel	help
582be1eb7f7SArd Biesheuvel	  Twofish cipher algorithm
583ab3d436bSGeert Uytterhoeven
584be1eb7f7SArd Biesheuvel	  Twofish was submitted as an AES (Advanced Encryption Standard)
585be1eb7f7SArd Biesheuvel	  candidate cipher by researchers at CounterPane Systems.  It is a
586be1eb7f7SArd Biesheuvel	  16 round block cipher supporting key sizes of 128, 192, and 256
587be1eb7f7SArd Biesheuvel	  bits.
588be1eb7f7SArd Biesheuvel
589be1eb7f7SArd Biesheuvel	  See https://www.schneier.com/twofish.html for further information.
590be1eb7f7SArd Biesheuvel
591be1eb7f7SArd Biesheuvelconfig CRYPTO_TWOFISH_COMMON
592be1eb7f7SArd Biesheuvel	tristate
593be1eb7f7SArd Biesheuvel	help
594be1eb7f7SArd Biesheuvel	  Common parts of the Twofish cipher algorithm shared by the
595be1eb7f7SArd Biesheuvel	  generic c and the assembler implementations.
596584fffc8SSebastian Siewior
597584fffc8SSebastian Siewiorendmenu
59893b5e86aSJussi Kivilinna
59993b5e86aSJussi Kivilinnamenu "Length-preserving ciphers and modes"
60093b5e86aSJussi Kivilinna
60193b5e86aSJussi Kivilinnaconfig CRYPTO_ADIANTUM
60293b5e86aSJussi Kivilinna	tristate "Adiantum"
60393b5e86aSJussi Kivilinna	select CRYPTO_CHACHA20
60493b5e86aSJussi Kivilinna	select CRYPTO_LIB_POLY1305
60593b5e86aSJussi Kivilinna	select CRYPTO_LIB_POLY1305_GENERIC
60693b5e86aSJussi Kivilinna	select CRYPTO_NHPOLY1305
60793b5e86aSJussi Kivilinna	select CRYPTO_MANAGER
60893b5e86aSJussi Kivilinna	help
6091da177e4SLinus Torvalds	  Adiantum tweakable, length-preserving encryption mode
6108425165dSHerbert Xu
6110796ae06SHerbert Xu	  Designed for fast and secure disk encryption, especially on
61243518407SHerbert Xu	  CPUs without dedicated crypto instructions.  It encrypts
6131da177e4SLinus Torvalds	  each sector using the XChaCha12 stream cipher, two passes of
6141da177e4SLinus Torvalds	  an ε-almost-∆-universal hash function, and an invocation of
6151da177e4SLinus Torvalds	  the AES-256 block cipher on a single 16-byte block.  On CPUs
6161da177e4SLinus Torvalds	  without AES instructions, Adiantum is much faster than
617333b0d7eSKazunori MIYAZAWA	  AES-XTS.
618333b0d7eSKazunori MIYAZAWA
619333b0d7eSKazunori MIYAZAWA	  Adiantum's security is provably reducible to that of its
620333b0d7eSKazunori MIYAZAWA	  underlying stream and block ciphers, subject to a security
621333b0d7eSKazunori MIYAZAWA	  bound.  Unlike XTS, Adiantum is a true wide-block encryption
622333b0d7eSKazunori MIYAZAWA	  mode, so it actually provides an even stronger notion of
6239332a9e7SAlexander A. Klimov	  security than XTS, subject to the security bound.
624333b0d7eSKazunori MIYAZAWA
625333b0d7eSKazunori MIYAZAWA	  If unsure, say N.
626333b0d7eSKazunori MIYAZAWA
627f1939f7cSShane Wangconfig CRYPTO_ARC4
628f1939f7cSShane Wang	tristate "ARC4 (Alleged Rivest Cipher 4)"
629f1939f7cSShane Wang	depends on CRYPTO_USER_API_ENABLE_OBSOLETE
630f1939f7cSShane Wang	select CRYPTO_SKCIPHER
631f1939f7cSShane Wang	select CRYPTO_LIB_ARC4
632f1939f7cSShane Wang	help
633f1939f7cSShane Wang	  ARC4 cipher algorithm
634f1939f7cSShane Wang
635f1939f7cSShane Wang	  ARC4 is a stream cipher using keys ranging from 8 bits to 2048
6369332a9e7SAlexander A. Klimov	  bits in length.  This algorithm is required for driver-based
637f1939f7cSShane Wang	  WEP, but it should not be for other purposes because of the
638584fffc8SSebastian Siewior	  weakness of the algorithm.
639584fffc8SSebastian Siewior
640584fffc8SSebastian Siewiorconfig CRYPTO_CHACHA20
641584fffc8SSebastian Siewior	tristate "ChaCha"
6425773a3e6SHerbert Xu	select CRYPTO_LIB_CHACHA
6436a0962b2SDarrick J. Wong	select CRYPTO_SKCIPHER
6441da177e4SLinus Torvalds	help
645584fffc8SSebastian Siewior	  The ChaCha20, XChaCha20, and XChaCha12 stream cipher algorithms
646584fffc8SSebastian Siewior
64769c35efcSHerbert Xu	  ChaCha20 is a 256-bit high-speed stream cipher designed by Daniel J.
6481da177e4SLinus Torvalds	  Bernstein and further specified in RFC7539 for use in IETF protocols.
6498cb51ba8SAustin Zhang	  This is the portable C implementation of ChaCha20.  See
6508cb51ba8SAustin Zhang	  https://cr.yp.to/chacha/chacha-20080128.pdf for further information.
6518cb51ba8SAustin Zhang
6528cb51ba8SAustin Zhang	  XChaCha20 is the application of the XSalsa20 construction to ChaCha20
6538cb51ba8SAustin Zhang	  rather than to Salsa20.  XChaCha20 extends ChaCha20's nonce length
6548cb51ba8SAustin Zhang	  from 64 bits (or 96 bits using the RFC7539 convention) to 192 bits,
6558cb51ba8SAustin Zhang	  while provably retaining ChaCha20's security.  See
6568cb51ba8SAustin Zhang	  https://cr.yp.to/snuffle/xsalsa-20081128.pdf for further information.
6578cb51ba8SAustin Zhang
6588cb51ba8SAustin Zhang	  XChaCha12 is XChaCha20 reduced to 12 rounds, with correspondingly
6598cb51ba8SAustin Zhang	  reduced security margin but increased performance.  It can be needed
6608cb51ba8SAustin Zhang	  in some performance-sensitive scenarios.
6617cf31864SJean Delvare
6626dd7a82cSAnton Blanchardconfig CRYPTO_CBC
663c12abf34SMichael Ellerman	tristate "CBC (Cipher Block Chaining)"
6646dd7a82cSAnton Blanchard	select CRYPTO_SKCIPHER
6656dd7a82cSAnton Blanchard	select CRYPTO_MANAGER
6666dd7a82cSAnton Blanchard	help
6676dd7a82cSAnton Blanchard	  CBC (Cipher Block Chaining) mode (NIST SP800-38A)
6686dd7a82cSAnton Blanchard
6696dd7a82cSAnton Blanchard	  This block cipher mode is required for IPSec ESP (XFRM_ESP).
6706dd7a82cSAnton Blanchard
6716dd7a82cSAnton Blanchardconfig CRYPTO_CTR
672442a7c40SDavid S. Miller	tristate "CTR (Counter)"
673442a7c40SDavid S. Miller	select CRYPTO_SKCIPHER
674442a7c40SDavid S. Miller	select CRYPTO_MANAGER
675442a7c40SDavid S. Miller	help
676442a7c40SDavid S. Miller	  CTR (Counter) mode (NIST SP800-38A)
677442a7c40SDavid S. Miller
678442a7c40SDavid S. Millerconfig CRYPTO_CTS
679442a7c40SDavid S. Miller	tristate "CTS (Cipher Text Stealing)"
680442a7c40SDavid S. Miller	select CRYPTO_SKCIPHER
68178c37d19SAlexander Boyko	select CRYPTO_MANAGER
68278c37d19SAlexander Boyko	help
68378c37d19SAlexander Boyko	  CBC-CS3 variant of CTS (Cipher Text Stealing) (NIST
68478c37d19SAlexander Boyko	  Addendum to SP800-38A (October 2010))
68578c37d19SAlexander Boyko
68678c37d19SAlexander Boyko	  This mode is required for Kerberos gss mechanism support
68778c37d19SAlexander Boyko	  for AES encryption.
68878c37d19SAlexander Boyko
68978c37d19SAlexander Boykoconfig CRYPTO_ECB
69078c37d19SAlexander Boyko	tristate "ECB (Electronic Codebook)"
69178c37d19SAlexander Boyko	select CRYPTO_SKCIPHER2
69278c37d19SAlexander Boyko	select CRYPTO_MANAGER
69378c37d19SAlexander Boyko	help
69478c37d19SAlexander Boyko	  ECB (Electronic Codebook) mode (NIST SP800-38A)
69578c37d19SAlexander Boyko
69678c37d19SAlexander Boykoconfig CRYPTO_HCTR2
69778c37d19SAlexander Boyko	tristate "HCTR2"
698af8cb01fShaco	select CRYPTO_XCTR
69978c37d19SAlexander Boyko	select CRYPTO_POLYVAL
70078c37d19SAlexander Boyko	select CRYPTO_MANAGER
70178c37d19SAlexander Boyko	help
7024a5dc51eSMarcin Nowakowski	  HCTR2 length-preserving encryption mode
7034a5dc51eSMarcin Nowakowski
7044a5dc51eSMarcin Nowakowski	  A mode for storage encryption that is efficient on processors with
7054a5dc51eSMarcin Nowakowski	  instructions to accelerate AES and carryless multiplication, e.g.
7064a5dc51eSMarcin Nowakowski	  x86 processors with AES-NI and CLMUL, and ARM processors with the
7074a5dc51eSMarcin Nowakowski	  ARMv8 crypto extensions.
7084a5dc51eSMarcin Nowakowski
7094a5dc51eSMarcin Nowakowski	  See https://eprint.iacr.org/2021/1441
710b7133757SJason A. Donenfeld
711b7133757SJason A. Donenfeldconfig CRYPTO_LRW
712b7133757SJason A. Donenfeld	tristate "LRW (Liskov Rivest Wagner)"
713b7133757SJason A. Donenfeld	select CRYPTO_LIB_GF128MUL
714b7133757SJason A. Donenfeld	select CRYPTO_SKCIPHER
715b7133757SJason A. Donenfeld	select CRYPTO_MANAGER
716b7133757SJason A. Donenfeld	select CRYPTO_ECB
717b7133757SJason A. Donenfeld	help
718b7133757SJason A. Donenfeld	  LRW (Liskov Rivest Wagner) mode
719b7133757SJason A. Donenfeld
720b7133757SJason A. Donenfeld	  A tweakable, non malleable, non movable
721b7133757SJason A. Donenfeld	  narrow block cipher mode for dm-crypt.  Use it with cipher
7224a5dc51eSMarcin Nowakowski	  specification string aes-lrw-benbi, the key must be 256, 320 or 384.
72367882e76SNikolay Borisov	  The first 128, 192 or 256 bits in the key are used for AES and the
72467882e76SNikolay Borisov	  rest is used to tie each cipher block to its logical position.
72567882e76SNikolay Borisov
72667882e76SNikolay Borisov	  See https://people.csail.mit.edu/rivest/pubs/LRW02.pdf
72767882e76SNikolay Borisov
72867882e76SNikolay Borisovconfig CRYPTO_PCBC
72967882e76SNikolay Borisov	tristate "PCBC (Propagating Cipher Block Chaining)"
73067882e76SNikolay Borisov	select CRYPTO_SKCIPHER
73191d68933SDavid Sterba	select CRYPTO_MANAGER
73291d68933SDavid Sterba	help
73391d68933SDavid Sterba	  PCBC (Propagating Cipher Block Chaining) mode
73491d68933SDavid Sterba
73591d68933SDavid Sterba	  This block cipher mode is required for RxRPC.
73691d68933SDavid Sterba
73791d68933SDavid Sterbaconfig CRYPTO_XCTR
73891d68933SDavid Sterba	tristate
73991d68933SDavid Sterba	select CRYPTO_SKCIPHER
74091d68933SDavid Sterba	select CRYPTO_MANAGER
74191d68933SDavid Sterba	help
74291d68933SDavid Sterba	  XCTR (XOR Counter) mode for HCTR2
74391d68933SDavid Sterba
74491d68933SDavid Sterba	  This blockcipher mode is a variant of CTR mode using XORs and little-endian
74591d68933SDavid Sterba	  addition rather than big-endian arithmetic.
74691d68933SDavid Sterba
74791d68933SDavid Sterba	  XCTR mode is used to implement HCTR2.
748ed0356edSJason A. Donenfeld
7492d16803cSJason A. Donenfeldconfig CRYPTO_XTS
750ed0356edSJason A. Donenfeld	tristate "XTS (XOR Encrypt XOR with ciphertext stealing)"
751ed0356edSJason A. Donenfeld	select CRYPTO_SKCIPHER
752ed0356edSJason A. Donenfeld	select CRYPTO_MANAGER
753ed0356edSJason A. Donenfeld	select CRYPTO_ECB
75468411521SHerbert Xu	help
75568411521SHerbert Xu	  XTS (XOR Encrypt XOR with ciphertext stealing) mode (NIST SP800-38E
75668411521SHerbert Xu	  and IEEE 1619)
75768411521SHerbert Xu
75868411521SHerbert Xu	  Use with aes-xts-plain, key size 256, 384 or 512 bits. This
75968411521SHerbert Xu	  implementation currently can't handle a sectorsize which is not a
76068411521SHerbert Xu	  multiple of 16 bytes.
76168411521SHerbert Xu
76268411521SHerbert Xuconfig CRYPTO_NHPOLY1305
76368411521SHerbert Xu	tristate
76468411521SHerbert Xu	select CRYPTO_HASH
76568411521SHerbert Xu	select CRYPTO_LIB_POLY1305
76668411521SHerbert Xu	select CRYPTO_LIB_POLY1305_GENERIC
76768411521SHerbert Xu
76868411521SHerbert Xuendmenu
76968411521SHerbert Xu
770af8cb01fShacomenu "AEAD (authenticated encryption with associated data) ciphers"
77168411521SHerbert Xu
77268411521SHerbert Xuconfig CRYPTO_AEGIS128
773b01df1c1SDaniel Axtens	tristate "AEGIS-128"
774b01df1c1SDaniel Axtens	select CRYPTO_AEAD
775b01df1c1SDaniel Axtens	select CRYPTO_AES  # for AES S-box tables
776b01df1c1SDaniel Axtens	help
777b01df1c1SDaniel Axtens	  AEGIS-128 AEAD algorithm
778b01df1c1SDaniel Axtens
779b01df1c1SDaniel Axtensconfig CRYPTO_AEGIS128_SIMD
780b01df1c1SDaniel Axtens	bool "AEGIS-128 (arm NEON, arm64 NEON)"
781b01df1c1SDaniel Axtens	depends on CRYPTO_AEGIS128 && ((ARM || ARM64) && KERNEL_MODE_NEON)
782f3813f4bSKeith Busch	default y
783f3813f4bSKeith Busch	help
784f3813f4bSKeith Busch	  AEGIS-128 AEAD algorithm
785f3813f4bSKeith Busch
786f3813f4bSKeith Busch	  Architecture: arm or arm64 using:
787146c8688SDaniel Axtens	  - NEON (Advanced SIMD) extension
788146c8688SDaniel Axtens
789146c8688SDaniel Axtensconfig CRYPTO_CHACHA20POLY1305
790146c8688SDaniel Axtens	tristate "ChaCha20-Poly1305"
791146c8688SDaniel Axtens	select CRYPTO_CHACHA20
792146c8688SDaniel Axtens	select CRYPTO_AEAD
793146c8688SDaniel Axtens	select CRYPTO_LIB_POLY1305
794146c8688SDaniel Axtens	select CRYPTO_MANAGER
7952cdc6899SHuang Ying	help
7968dfa20fcSEric Biggers	  ChaCha20 stream cipher and Poly1305 authenticator combined
7972cdc6899SHuang Ying	  mode (RFC8439)
798578c60fbSArnd Bergmann
7992cdc6899SHuang Yingconfig CRYPTO_CCM
8008dfa20fcSEric Biggers	tristate "CCM (Counter with Cipher Block Chaining-MAC)"
8018dfa20fcSEric Biggers	select CRYPTO_CTR
8022cdc6899SHuang Ying	select CRYPTO_HASH
803f3c923a0SNathan Huckleberry	select CRYPTO_AEAD
804f3c923a0SNathan Huckleberry	select CRYPTO_MANAGER
805f3c923a0SNathan Huckleberry	help
806f3c923a0SNathan Huckleberry	  CCM (Counter with Cipher Block Chaining-Message Authentication Code)
807f3c923a0SNathan Huckleberry	  authenticated encryption mode (NIST SP800-38C)
808f3c923a0SNathan Huckleberry
809f3c923a0SNathan Huckleberryconfig CRYPTO_GCM
810f3c923a0SNathan Huckleberry	tristate "GCM (Galois/Counter Mode) and GMAC (GCM MAC)"
81134f7f6c3SNathan Huckleberry	select CRYPTO_CTR
81234f7f6c3SNathan Huckleberry	select CRYPTO_AEAD
81334f7f6c3SNathan Huckleberry	select CRYPTO_GHASH
81434f7f6c3SNathan Huckleberry	select CRYPTO_MANAGER
81534f7f6c3SNathan Huckleberry	help
81634f7f6c3SNathan Huckleberry	  GCM (Galois/Counter Mode) authenticated encryption mode and GMAC
81734f7f6c3SNathan Huckleberry	  (GCM Message Authentication Code) (NIST SP800-38D)
81834f7f6c3SNathan Huckleberry
81934f7f6c3SNathan Huckleberry	  This is required for IPSec ESP (XFRM_ESP).
820f979e014SMartin Willi
821f979e014SMartin Williconfig CRYPTO_GENIV
822578c60fbSArnd Bergmann	tristate
82348ea8c6eSArd Biesheuvel	select CRYPTO_AEAD
824f979e014SMartin Willi	select CRYPTO_MANAGER
825f979e014SMartin Willi	select CRYPTO_RNG_DEFAULT
826f979e014SMartin Willi
827f979e014SMartin Williconfig CRYPTO_SEQIV
828f979e014SMartin Willi	tristate "Sequence Number IV Generator"
829f979e014SMartin Willi	select CRYPTO_GENIV
830f979e014SMartin Willi	help
831c70f4abeSMartin Willi	  Sequence Number IV generator
832b1ccc8f4SMartin Willi
833c70f4abeSMartin Willi	  This IV generator generates an IV based on a sequence number by
8341b2c6a51SArd Biesheuvel	  xoring it with a salt.  This algorithm is mainly useful for CTR.
835f0e89bcfSArd Biesheuvel
836c70f4abeSMartin Willi	  This is required for IPsec ESP (XFRM_ESP).
837c70f4abeSMartin Willi
838c70f4abeSMartin Williconfig CRYPTO_ECHAINIV
839c70f4abeSMartin Willi	tristate "Encrypted Chain IV Generator"
840c70f4abeSMartin Willi	select CRYPTO_GENIV
841c70f4abeSMartin Willi	help
842c70f4abeSMartin Willi	  Encrypted Chain IV generator
843c70f4abeSMartin Willi
844a11d055eSArd Biesheuvel	  This IV generator generates an IV based on the encryption of
845a11d055eSArd Biesheuvel	  a sequence number xored with a salt.  This is the default
8466c810cf2SMaciej W. Rozycki	  algorithm for CBC.
847a11d055eSArd Biesheuvel
848a11d055eSArd Biesheuvelconfig CRYPTO_ESSIV
8491da177e4SLinus Torvalds	tristate "Encrypted Salt-Sector IV Generator"
8501da177e4SLinus Torvalds	select CRYPTO_AUTHENC
851808a1763SAdrian-Ken Rueegsegger	help
8521da177e4SLinus Torvalds	  Encrypted Salt-Sector IV generator
8531da177e4SLinus Torvalds
8541da177e4SLinus Torvalds	  This IV generator is used in some cases by fscrypt and/or
8551da177e4SLinus Torvalds	  dm-crypt. It uses the hash of the block encryption key as the
8561da177e4SLinus Torvalds	  symmetric key for a block encryption pass applied to the input
85714b75ba7SAdrian-Ken Rueegsegger	  IV, making low entropy IV sources more suitable for block
8581da177e4SLinus Torvalds	  encryption.
8591da177e4SLinus Torvalds
8601da177e4SLinus Torvalds	  This driver implements a crypto API template that can be
861d69e75deSAaro Koskinen	  instantiated either as an skcipher or as an AEAD (depending on the
862d69e75deSAaro Koskinen	  type of the first template argument), and which defers encryption
863d69e75deSAaro Koskinen	  and decryption requests to the encapsulated cipher after applying
864d69e75deSAaro Koskinen	  ESSIV to the input IV. Note that in the AEAD case, it is assumed
865d69e75deSAaro Koskinen	  that the keys are presented in the same format used by the authenc
866d69e75deSAaro Koskinen	  template, and that the IV appears at the end of the authenticated
867d69e75deSAaro Koskinen	  associated data (AAD) region (which is how dm-crypt uses it.)
868d69e75deSAaro Koskinen
869d69e75deSAaro Koskinen	  Note that the use of ESSIV is not recommended for new deployments,
870e8e59953SMarkus Stockhausen	  and so this only needs to be enabled when interoperability with
871e8e59953SMarkus Stockhausen	  existing encrypted volumes of filesystems is required, or when
872e8e59953SMarkus Stockhausen	  building for a particular system that requires it (e.g., when
873e8e59953SMarkus Stockhausen	  the SoC in question has accelerated CBC but not XTS, making CBC
874e8e59953SMarkus Stockhausen	  combined with ESSIV the only feasible mode for h/w accelerated
875e8e59953SMarkus Stockhausen	  block encryption)
876e8e59953SMarkus Stockhausen
877e8e59953SMarkus Stockhausenendmenu
878fa4dfedcSDavid S. Miller
879fa4dfedcSDavid S. Millermenu "Hashes, digests, and MACs"
880fa4dfedcSDavid S. Miller
881fa4dfedcSDavid S. Millerconfig CRYPTO_BLAKE2B
882fa4dfedcSDavid S. Miller	tristate "BLAKE2b"
883fa4dfedcSDavid S. Miller	select CRYPTO_HASH
884fa4dfedcSDavid S. Miller	help
885fa4dfedcSDavid S. Miller	  BLAKE2b cryptographic hash function (RFC 7693)
886fa4dfedcSDavid S. Miller
887584fffc8SSebastian Siewior	  BLAKE2b is optimized for 64-bit platforms and can produce digests
888584fffc8SSebastian Siewior	  of any size between 1 and 64 bytes. The keyed hash is also implemented.
88919e2bf14SAdrian-Ken Rueegsegger
890584fffc8SSebastian Siewior	  This module provides the following algorithms:
891584fffc8SSebastian Siewior	  - blake2b-160
892584fffc8SSebastian Siewior	  - blake2b-256
893584fffc8SSebastian Siewior	  - blake2b-384
894584fffc8SSebastian Siewior	  - blake2b-512
895584fffc8SSebastian Siewior
89682798f90SAdrian-Ken Rueegsegger	  Used by the btrfs filesystem.
89782798f90SAdrian-Ken Rueegsegger
898e5835fbaSHerbert Xu	  See https://blake2.net for further information.
89982798f90SAdrian-Ken Rueegsegger
90082798f90SAdrian-Ken Rueegseggerconfig CRYPTO_CMAC
90182798f90SAdrian-Ken Rueegsegger	tristate "CMAC (Cipher-based MAC)"
90282798f90SAdrian-Ken Rueegsegger	select CRYPTO_HASH
90382798f90SAdrian-Ken Rueegsegger	select CRYPTO_MANAGER
904*4cbdecd0SRandy Dunlap	help
905b6d44341SAdrian Bunk	  CMAC (Cipher-based Message Authentication Code) authentication
90682798f90SAdrian-Ken Rueegsegger	  mode (NIST SP800-38B and IETF RFC4493)
907b6d44341SAdrian Bunk
908b6d44341SAdrian Bunkconfig CRYPTO_GHASH
909534fe2c1SAdrian-Ken Rueegsegger	tristate "GHASH"
910534fe2c1SAdrian-Ken Rueegsegger	select CRYPTO_HASH
9119332a9e7SAlexander A. Klimov	select CRYPTO_LIB_GF128MUL
912534fe2c1SAdrian-Ken Rueegsegger	help
9131da177e4SLinus Torvalds	  GCM GHASH function (NIST SP800-38D)
9141da177e4SLinus Torvalds
91554ccb367SAdrian-Ken Rueegseggerconfig CRYPTO_HMAC
916ec8f7f48SEric Biggers	tristate "HMAC (Keyed-Hash MAC)"
9171da177e4SLinus Torvalds	select CRYPTO_HASH
9181da177e4SLinus Torvalds	select CRYPTO_MANAGER
9191da177e4SLinus Torvalds	help
92066be8951SMathias Krause	  HMAC (Keyed-Hash Message Authentication Code) (FIPS 198 and
921e38b6b7fStim	  RFC2104)
92266be8951SMathias Krause
92366be8951SMathias Krause	  This is required for IPsec AH (XFRM_AH) and IPsec ESP (XFRM_ESP).
92466be8951SMathias Krause
92566be8951SMathias Krauseconfig CRYPTO_MD4
92666be8951SMathias Krause	tristate "MD4"
92766be8951SMathias Krause	select CRYPTO_HASH
928e38b6b7fStim	help
929e38b6b7fStim	  MD4 message digest algorithm (RFC1320)
93066be8951SMathias Krause
9318275d1aaSTim Chenconfig CRYPTO_MD5
932e38b6b7fStim	tristate "MD5"
9338275d1aaSTim Chen	select CRYPTO_HASH
9348275d1aaSTim Chen	select CRYPTO_LIB_MD5
9358275d1aaSTim Chen	help
9368275d1aaSTim Chen	  MD5 message digest algorithm (RFC1321), including HMAC support.
9378275d1aaSTim Chen
9388275d1aaSTim Chenconfig CRYPTO_MICHAEL_MIC
9398275d1aaSTim Chen	tristate "Michael MIC"
940e38b6b7fStim	select CRYPTO_HASH
941e38b6b7fStim	help
9428275d1aaSTim Chen	  Michael MIC (Message Integrity Code) (IEEE 802.11i)
94387de4579STim Chen
94487de4579STim Chen	  Defined by the IEEE 802.11i TKIP (Temporal Key Integrity Protocol),
94587de4579STim Chen	  known as WPA (Wif-Fi Protected Access).
94687de4579STim Chen
94787de4579STim Chen	  This algorithm is required for TKIP, but it should not be used for
94887de4579STim Chen	  other purposes because of the weakness of the algorithm.
94987de4579STim Chen
95087de4579STim Chenconfig CRYPTO_POLYVAL
95187de4579STim Chen	tristate
95287de4579STim Chen	select CRYPTO_HASH
95387de4579STim Chen	select CRYPTO_LIB_GF128MUL
954b7133757SJason A. Donenfeld	help
955b7133757SJason A. Donenfeld	  POLYVAL hash function for HCTR2
956b7133757SJason A. Donenfeld
957b7133757SJason A. Donenfeld	  This is used in HCTR2.  It is not a general-purpose
958b7133757SJason A. Donenfeld	  cryptographic hash function.
959b7133757SJason A. Donenfeld
960b7133757SJason A. Donenfeldconfig CRYPTO_RMD160
961b7133757SJason A. Donenfeld	tristate "RIPEMD-160"
962b7133757SJason A. Donenfeld	select CRYPTO_HASH
963b7133757SJason A. Donenfeld	help
964efdb6f6eSAaro Koskinen	  RIPEMD-160 hash function (ISO/IEC 10118-3)
965efdb6f6eSAaro Koskinen
966efdb6f6eSAaro Koskinen	  RIPEMD-160 is a 160-bit cryptographic hash function. It is intended
967efdb6f6eSAaro Koskinen	  to be used as a secure replacement for the 128-bit hash functions
968efdb6f6eSAaro Koskinen	  MD4, MD5 and its predecessor RIPEMD
969efdb6f6eSAaro Koskinen	  (not to be confused with RIPEMD-128).
970efdb6f6eSAaro Koskinen
971efdb6f6eSAaro Koskinen	  Its speed is comparable to SHA-1 and there are no known attacks
972efdb6f6eSAaro Koskinen	  against RIPEMD-160.
9734ff28d4cSDavid S. Miller
9744ff28d4cSDavid S. Miller	  Developed by Hans Dobbertin, Antoon Bosselaers and Bart Preneel.
9754ff28d4cSDavid S. Miller	  See https://homes.esat.kuleuven.be/~bosselae/ripemd160.html
9764ff28d4cSDavid S. Miller	  for further information.
9774ff28d4cSDavid S. Miller
9784ff28d4cSDavid S. Millerconfig CRYPTO_SHA1
9794ff28d4cSDavid S. Miller	tristate "SHA-1"
9804ff28d4cSDavid S. Miller	select CRYPTO_HASH
9814ff28d4cSDavid S. Miller	select CRYPTO_LIB_SHA1
982323a6bf1SMichael Ellerman	help
983323a6bf1SMichael Ellerman	  SHA-1 secure hash algorithm (FIPS 180, ISO/IEC 10118-3), including
984323a6bf1SMichael Ellerman	  HMAC support.
985323a6bf1SMichael Ellerman
986323a6bf1SMichael Ellermanconfig CRYPTO_SHA256
987323a6bf1SMichael Ellerman	tristate "SHA-224 and SHA-256"
988323a6bf1SMichael Ellerman	select CRYPTO_HASH
989d9850fc5SMarkus Stockhausen	select CRYPTO_LIB_SHA256
990d9850fc5SMarkus Stockhausen	help
991d9850fc5SMarkus Stockhausen	  SHA-224 and SHA-256 secure hash algorithms (FIPS 180, ISO/IEC
992d9850fc5SMarkus Stockhausen	  10118-3), including HMAC support.
993d9850fc5SMarkus Stockhausen
994d9850fc5SMarkus Stockhausen	  This is required for IPsec AH (XFRM_AH) and IPsec ESP (XFRM_ESP).
995d9850fc5SMarkus Stockhausen	  Used by the btrfs filesystem, Ceph, NFS, and SMB.
996b7133757SJason A. Donenfeld
997b7133757SJason A. Donenfeldconfig CRYPTO_SHA512
998b7133757SJason A. Donenfeld	tristate "SHA-384 and SHA-512"
999b7133757SJason A. Donenfeld	select CRYPTO_HASH
1000b7133757SJason A. Donenfeld	select CRYPTO_LIB_SHA512
1001b7133757SJason A. Donenfeld	help
1002b7133757SJason A. Donenfeld	  SHA-384 and SHA-512 secure hash algorithms (FIPS 180, ISO/IEC
1003b7133757SJason A. Donenfeld	  10118-3), including HMAC support.
1004b7133757SJason A. Donenfeld
1005b7133757SJason A. Donenfeldconfig CRYPTO_SHA3
10061da177e4SLinus Torvalds	tristate "SHA-3"
1007cd12fb90SJonathan Lynch	select CRYPTO_HASH
100850e109b5SAdrian-Ken Rueegsegger	help
100908c327f6SHans de Goede	  SHA-3 secure hash algorithms (FIPS 202, ISO/IEC 10118-3)
10101da177e4SLinus Torvalds
10111da177e4SLinus Torvaldsconfig CRYPTO_SM3_GENERIC
10121da177e4SLinus Torvalds	tristate "SM3 (ShangMi 3)"
10131da177e4SLinus Torvalds	select CRYPTO_HASH
10141da177e4SLinus Torvalds	select CRYPTO_LIB_SM3
10151da177e4SLinus Torvalds	help
1016cd12fb90SJonathan Lynch	  SM3 (ShangMi 3) secure hash function (OSCCA GM/T 0004-2012, ISO/IEC 10118-3)
1017cd12fb90SJonathan Lynch
1018cd12fb90SJonathan Lynch	  This is part of the Chinese Commercial Cryptography suite.
10192ecc1e95SMarkus Stockhausen
10202ecc1e95SMarkus Stockhausen	  References:
10212ecc1e95SMarkus Stockhausen	  http://www.oscca.gov.cn/UpFile/20101222141857786.pdf
10222ecc1e95SMarkus Stockhausen	  https://datatracker.ietf.org/doc/html/draft-shen-sm3-hash
10232ecc1e95SMarkus Stockhausen
10242ecc1e95SMarkus Stockhausenconfig CRYPTO_STREEBOG
10252ecc1e95SMarkus Stockhausen	tristate "Streebog"
10262ecc1e95SMarkus Stockhausen	select CRYPTO_HASH
10272ecc1e95SMarkus Stockhausen	help
1028efdb6f6eSAaro Koskinen	  Streebog Hash Function (GOST R 34.11-2012, RFC 6986, ISO/IEC 10118-3)
1029efdb6f6eSAaro Koskinen
1030efdb6f6eSAaro Koskinen	  This is one of the Russian cryptographic standard algorithms (called
1031efdb6f6eSAaro Koskinen	  GOST algorithms). This setting enables two hash algorithms with
1032efdb6f6eSAaro Koskinen	  256 and 512 bits output.
1033efdb6f6eSAaro Koskinen
1034efdb6f6eSAaro Koskinen	  References:
1035efdb6f6eSAaro Koskinen	  https://tc26.ru/upload/iblock/fed/feddbb4d26b685903faa2ba11aea43f6.pdf
1036efdb6f6eSAaro Koskinen	  https://tools.ietf.org/html/rfc6986
103786c93b24SDavid S. Miller
103886c93b24SDavid S. Millerconfig CRYPTO_WP512
103986c93b24SDavid S. Miller	tristate "Whirlpool"
104086c93b24SDavid S. Miller	select CRYPTO_HASH
104186c93b24SDavid S. Miller	help
104286c93b24SDavid S. Miller	  Whirlpool hash function (ISO/IEC 10118-3)
104386c93b24SDavid S. Miller
104486c93b24SDavid S. Miller	  512, 384 and 256-bit hashes.
104586c93b24SDavid S. Miller
1046b7133757SJason A. Donenfeld	  Whirlpool-512 is part of the NESSIE cryptographic primitives.
1047b7133757SJason A. Donenfeld
1048b7133757SJason A. Donenfeld	  See https://web.archive.org/web/20171129084214/http://www.larc.usp.br/~pbarreto/WhirlpoolPage.html
1049b7133757SJason A. Donenfeld	  for further information.
1050b7133757SJason A. Donenfeld
1051b7133757SJason A. Donenfeldconfig CRYPTO_XCBC
1052b7133757SJason A. Donenfeld	tristate "XCBC-MAC (Extended Cipher Block Chaining MAC)"
1053b7133757SJason A. Donenfeld	select CRYPTO_HASH
1054b7133757SJason A. Donenfeld	select CRYPTO_MANAGER
1055b7133757SJason A. Donenfeld	help
10561da177e4SLinus Torvalds	  XCBC-MAC (Extended Cipher Block Chaining Message Authentication
10571da177e4SLinus Torvalds	  Code) (RFC3566)
1058bd9d20dbSAdrian-Ken Rueegsegger
10591da177e4SLinus Torvaldsconfig CRYPTO_XXHASH
10601da177e4SLinus Torvalds	tristate "xxHash"
10611da177e4SLinus Torvalds	select CRYPTO_HASH
10621da177e4SLinus Torvalds	select XXHASH
10631da177e4SLinus Torvalds	help
10641da177e4SLinus Torvalds	  xxHash non-cryptographic hash algorithm
10651da177e4SLinus Torvalds
10661da177e4SLinus Torvalds	  Extremely fast, working at speeds close to RAM limits.
10671da177e4SLinus Torvalds
1068efdb6f6eSAaro Koskinen	  Used by the btrfs filesystem.
1069efdb6f6eSAaro Koskinen
1070efdb6f6eSAaro Koskinenendmenu
1071efdb6f6eSAaro Koskinen
1072efdb6f6eSAaro Koskinenmenu "CRCs (cyclic redundancy checks)"
1073efdb6f6eSAaro Koskinen
1074efdb6f6eSAaro Koskinenconfig CRYPTO_CRC32C
1075efdb6f6eSAaro Koskinen	tristate "CRC32c"
1076efdb6f6eSAaro Koskinen	select CRYPTO_HASH
1077775e0c69SDavid S. Miller	select CRC32
1078775e0c69SDavid S. Miller	help
1079775e0c69SDavid S. Miller	  CRC32c CRC algorithm with the iSCSI polynomial (RFC 3385 and RFC 3720)
1080775e0c69SDavid S. Miller
1081775e0c69SDavid S. Miller	  A 32-bit CRC (cyclic redundancy check) with a polynomial defined
1082775e0c69SDavid S. Miller	  by G. Castagnoli, S. Braeuer and M. Herrman in "Optimization of Cyclic
1083775e0c69SDavid S. Miller	  Redundancy-Check Codes with 24 and 32 Parity Bits", IEEE Transactions
1084775e0c69SDavid S. Miller	  on Communications, Vol. 41, No. 6, June 1993, selected for use with
1085775e0c69SDavid S. Miller	  iSCSI.
108653964b9eSJeff Garzik
108753964b9eSJeff Garzik	  Used by btrfs, ext4, jbd2, NVMeoF/TCP, and iSCSI.
108853964b9eSJeff Garzik
108953964b9eSJeff Garzikconfig CRYPTO_CRC32
109053964b9eSJeff Garzik	tristate "CRC32"
109153964b9eSJeff Garzik	select CRYPTO_HASH
109253964b9eSJeff Garzik	select CRC32
109353964b9eSJeff Garzik	help
109453964b9eSJeff Garzik	  CRC32 CRC algorithm (IEEE 802.3)
109553964b9eSJeff Garzik
1096b7133757SJason A. Donenfeld	  Used by RoCEv2 and f2fs.
1097b7133757SJason A. Donenfeld
1098b7133757SJason A. Donenfeldendmenu
1099b7133757SJason A. Donenfeld
1100b7133757SJason A. Donenfeldmenu "Compression"
1101b7133757SJason A. Donenfeld
1102b7133757SJason A. Donenfeldconfig CRYPTO_DEFLATE
1103b7133757SJason A. Donenfeld	tristate "Deflate"
1104b7133757SJason A. Donenfeld	select CRYPTO_ALGAPI
1105b7133757SJason A. Donenfeld	select CRYPTO_ACOMP2
1106b7133757SJason A. Donenfeld	select ZLIB_INFLATE
1107b7133757SJason A. Donenfeld	select ZLIB_DEFLATE
1108b7133757SJason A. Donenfeld	help
1109b7133757SJason A. Donenfeld	  Deflate compression algorithm (RFC1951)
1110b7133757SJason A. Donenfeld
1111b7133757SJason A. Donenfeld	  Used by IPSec with the IPCOMP protocol (RFC3173, RFC2394)
1112b7133757SJason A. Donenfeld
1113b7133757SJason A. Donenfeldconfig CRYPTO_LZO
1114b7133757SJason A. Donenfeld	tristate "LZO"
1115b7133757SJason A. Donenfeld	select CRYPTO_ALGAPI
11164f0fc160SGilad Ben-Yossef	select CRYPTO_ACOMP2
1117d2825fa9SJason A. Donenfeld	select LZO_COMPRESS
1118d2825fa9SJason A. Donenfeld	select LZO_DECOMPRESS
1119d2825fa9SJason A. Donenfeld	help
11204f0fc160SGilad Ben-Yossef	  LZO compression algorithm
11214f0fc160SGilad Ben-Yossef
1122d2825fa9SJason A. Donenfeld	  See https://www.oberhumer.com/opensource/lzo/ for further information.
11234f0fc160SGilad Ben-Yossef
11244f0fc160SGilad Ben-Yossefconfig CRYPTO_842
11254f0fc160SGilad Ben-Yossef	tristate "842"
11264f0fc160SGilad Ben-Yossef	select CRYPTO_ALGAPI
11274f0fc160SGilad Ben-Yossef	select CRYPTO_ACOMP2
11284f0fc160SGilad Ben-Yossef	select 842_COMPRESS
11294f0fc160SGilad Ben-Yossef	select 842_DECOMPRESS
11304f0fc160SGilad Ben-Yossef	help
1131930ab34dSTianjia Zhang	  842 compression algorithm by IBM
1132930ab34dSTianjia Zhang
1133930ab34dSTianjia Zhang	  See https://github.com/plauth/lib842 for further information.
1134930ab34dSTianjia Zhang
1135d2825fa9SJason A. Donenfeldconfig CRYPTO_LZ4
1136930ab34dSTianjia Zhang	tristate "LZ4"
1137930ab34dSTianjia Zhang	select CRYPTO_ALGAPI
1138930ab34dSTianjia Zhang	select CRYPTO_ACOMP2
1139930ab34dSTianjia Zhang	select LZ4_COMPRESS
1140930ab34dSTianjia Zhang	select LZ4_DECOMPRESS
1141930ab34dSTianjia Zhang	help
1142930ab34dSTianjia Zhang	  LZ4 compression algorithm
1143930ab34dSTianjia Zhang
1144fe18957eSVitaly Chikunov	  See https://github.com/lz4/lz4 for further information.
1145fe18957eSVitaly Chikunov
1146fe18957eSVitaly Chikunovconfig CRYPTO_LZ4HC
1147fe18957eSVitaly Chikunov	tristate "LZ4HC"
1148fe18957eSVitaly Chikunov	select CRYPTO_ALGAPI
1149fe18957eSVitaly Chikunov	select CRYPTO_ACOMP2
1150fe18957eSVitaly Chikunov	select LZ4HC_COMPRESS
1151fe18957eSVitaly Chikunov	select LZ4_DECOMPRESS
1152fe18957eSVitaly Chikunov	help
1153fe18957eSVitaly Chikunov	  LZ4 high compression mode algorithm
1154fe18957eSVitaly Chikunov
1155fe18957eSVitaly Chikunov	  See https://github.com/lz4/lz4 for further information.
1156584fffc8SSebastian Siewior
1157584fffc8SSebastian Siewiorconfig CRYPTO_ZSTD
11584946510bSAdrian-Ken Rueegsegger	tristate "Zstd"
11591da177e4SLinus Torvalds	select CRYPTO_ALGAPI
1160584fffc8SSebastian Siewior	select CRYPTO_ACOMP2
11611da177e4SLinus Torvalds	select ZSTD_COMPRESS
1162584fffc8SSebastian Siewior	select ZSTD_DECOMPRESS
1163584fffc8SSebastian Siewior	help
11641da177e4SLinus Torvalds	  zstd compression algorithm
11651da177e4SLinus Torvalds
11666d8de74cSJustin P. Mattock	  See https://github.com/facebook/zstd for further information.
11671da177e4SLinus Torvalds
11680e1227d3SHuang Yingendmenu
11698dfa20fcSEric Biggers
11708af00860SRichard Weinbergermenu "Random number generation"
11710e1227d3SHuang Ying
11720e1227d3SHuang Yingconfig CRYPTO_ANSI_CPRNG
11738dfa20fcSEric Biggers	tristate "ANSI PRNG (Pseudo Random Number Generator)"
11748dfa20fcSEric Biggers	select CRYPTO_AES
11750e1227d3SHuang Ying	select CRYPTO_RNG
1176b7133757SJason A. Donenfeld	help
1177b7133757SJason A. Donenfeld	  Pseudo RNG (random number generator) (ANSI X9.31 Appendix A.2.4)
1178b7133757SJason A. Donenfeld
1179b7133757SJason A. Donenfeld	  This uses the AES cipher algorithm.
1180b7133757SJason A. Donenfeld
1181b7133757SJason A. Donenfeld	  Note that this option must be enabled if CRYPTO_FIPS is selected
1182b7133757SJason A. Donenfeld
1183b7133757SJason A. Donenfeldmenuconfig CRYPTO_DRBG_MENU
1184b7133757SJason A. Donenfeld	tristate "NIST SP800-90A DRBG (Deterministic Random Bit Generator)"
1185b7133757SJason A. Donenfeld	help
1186584fffc8SSebastian Siewior	  DRBG (Deterministic Random Bit Generator) (NIST SP800-90A)
11871da177e4SLinus Torvalds
11881da177e4SLinus Torvalds	  In the following submenu, one or more of the DRBG types must be selected.
11891da177e4SLinus Torvalds
1190cce9e06dSHerbert Xuif CRYPTO_DRBG_MENU
11915bb12d78SArd Biesheuvel
11921da177e4SLinus Torvaldsconfig CRYPTO_DRBG_HMAC
11931da177e4SLinus Torvalds	bool
11941da177e4SLinus Torvalds	default y
11951da177e4SLinus Torvalds	select CRYPTO_HMAC
11961da177e4SLinus Torvalds	select CRYPTO_SHA512
11971da177e4SLinus Torvalds
11981da177e4SLinus Torvaldsconfig CRYPTO_DRBG_HASH
11991da177e4SLinus Torvalds	bool "Hash_DRBG"
12001da177e4SLinus Torvalds	select CRYPTO_SHA256
12011da177e4SLinus Torvalds	help
12021da177e4SLinus Torvalds	  Hash_DRBG variant as defined in NIST SP800-90A.
12031da177e4SLinus Torvalds
12041da177e4SLinus Torvalds	  This uses the SHA-1, SHA-256, SHA-384, or SHA-512 hash algorithms.
12051da177e4SLinus Torvalds
12061da177e4SLinus Torvaldsconfig CRYPTO_DRBG_CTR
12071da177e4SLinus Torvalds	bool "CTR_DRBG"
12081da177e4SLinus Torvalds	select CRYPTO_AES
1209b5e0b032SArd Biesheuvel	select CRYPTO_CTR
1210b5e0b032SArd Biesheuvel	help
1211b5e0b032SArd Biesheuvel	  CTR_DRBG variant as defined in NIST SP800-90A.
1212e59c1c98SArd Biesheuvel
1213b5e0b032SArd Biesheuvel	  This uses the AES cipher algorithm with the counter block mode.
1214b5e0b032SArd Biesheuvel
1215b5e0b032SArd Biesheuvelconfig CRYPTO_DRBG
1216b5e0b032SArd Biesheuvel	tristate
1217b5e0b032SArd Biesheuvel	default CRYPTO_DRBG_MENU
1218b5e0b032SArd Biesheuvel	select CRYPTO_RNG
1219b5e0b032SArd Biesheuvel	select CRYPTO_JITTERENTROPY
1220b5e0b032SArd Biesheuvel
1221b5e0b032SArd Biesheuvelendif	# if CRYPTO_DRBG_MENU
1222b5e0b032SArd Biesheuvel
1223b5e0b032SArd Biesheuvelconfig CRYPTO_JITTERENTROPY
1224b5e0b032SArd Biesheuvel	tristate "CPU Jitter Non-Deterministic RNG (Random Number Generator)"
12250a6a40c2SEric Biggers	select CRYPTO_RNG
12260a6a40c2SEric Biggers	select CRYPTO_SHA3
1227b5e0b032SArd Biesheuvel	help
122854b6a1bdSHuang Ying	  CPU Jitter RNG (Random Number Generator) from the Jitterentropy library
122954b6a1bdSHuang Ying
12308af00860SRichard Weinberger	  A non-physical non-deterministic ("true") RNG (e.g., an entropy source
123185671860SHerbert Xu	  compliant with NIST SP800-90B) intended to provide a seed to a
12322c53fd11SArd Biesheuvel	  deterministic RNG (e.g., per NIST SP800-90C).
123354b6a1bdSHuang Ying	  This RNG does not perform any cryptographic whitening of the generated
1234b95bba5dSEric Biggers	  random numbers.
123585671860SHerbert Xu
123654b6a1bdSHuang Ying	  See https://www.chronox.de/jent/
123754b6a1bdSHuang Ying
123854b6a1bdSHuang Yingif CRYPTO_JITTERENTROPY
123954b6a1bdSHuang Yingif CRYPTO_FIPS && EXPERT
124054b6a1bdSHuang Ying
124154b6a1bdSHuang Yingchoice
124254b6a1bdSHuang Ying	prompt "CPU Jitter RNG Memory Size"
124354b6a1bdSHuang Ying	default CRYPTO_JITTERENTROPY_MEMSIZE_2
124454b6a1bdSHuang Ying	help
124554b6a1bdSHuang Ying	  The Jitter RNG measures the execution time of memory accesses.
124654b6a1bdSHuang Ying	  Multiple consecutive memory accesses are performed. If the memory
124754b6a1bdSHuang Ying	  size fits into a cache (e.g. L1), only the memory access timing
124854b6a1bdSHuang Ying	  to that cache is measured. The closer the cache is to the CPU
124954b6a1bdSHuang Ying	  the less variations are measured and thus the less entropy is
125054b6a1bdSHuang Ying	  obtained. Thus, if the memory size fits into the L1 cache, the
125154b6a1bdSHuang Ying	  obtained entropy is less than if the memory size fits within
125254b6a1bdSHuang Ying	  L1 + L2, which in turn is less if the memory fits into
125354b6a1bdSHuang Ying	  L1 + L2 + L3. Thus, by selecting a different memory size,
125454b6a1bdSHuang Ying	  the entropy rate produced by the Jitter RNG can be modified.
12550d258efbSMathias Krause
12560d258efbSMathias Krause	config CRYPTO_JITTERENTROPY_MEMSIZE_2
1257944585a6SArd Biesheuvel		bool "2048 Bytes (default)"
1258fd94fcf0SNathan Huckleberry
12592cf4ac8bSHuang Ying	config CRYPTO_JITTERENTROPY_MEMSIZE_128
12609bf4852dSDavid S. Miller		bool "128 kBytes"
12619bf4852dSDavid S. Miller
12629bf4852dSDavid S. Miller	config CRYPTO_JITTERENTROPY_MEMSIZE_1024
1263b95bba5dSEric Biggers		bool "1024 kBytes"
12649bf4852dSDavid S. Miller
12659bf4852dSDavid S. Miller	config CRYPTO_JITTERENTROPY_MEMSIZE_8192
12669bf4852dSDavid S. Miller		bool "8192 kBytes"
12679bf4852dSDavid S. Millerendchoice
12689bf4852dSDavid S. Miller
12699bf4852dSDavid S. Millerconfig CRYPTO_JITTERENTROPY_MEMORY_BLOCKS
12709bf4852dSDavid S. Miller	int
12719bf4852dSDavid S. Miller	default 64 if CRYPTO_JITTERENTROPY_MEMSIZE_2
12729bf4852dSDavid S. Miller	default 512 if CRYPTO_JITTERENTROPY_MEMSIZE_128
12739bf4852dSDavid S. Miller	default 1024 if CRYPTO_JITTERENTROPY_MEMSIZE_1024
12749bf4852dSDavid S. Miller	default 4096 if CRYPTO_JITTERENTROPY_MEMSIZE_8192
12759bf4852dSDavid S. Miller
12769bf4852dSDavid S. Millerconfig CRYPTO_JITTERENTROPY_MEMORY_BLOCKSIZE
12779bf4852dSDavid S. Miller	int
12789bf4852dSDavid S. Miller	default 32 if CRYPTO_JITTERENTROPY_MEMSIZE_2
12799bf4852dSDavid S. Miller	default 256 if CRYPTO_JITTERENTROPY_MEMSIZE_128
12809bf4852dSDavid S. Miller	default 1024 if CRYPTO_JITTERENTROPY_MEMSIZE_1024
12819bf4852dSDavid S. Miller	default 2048 if CRYPTO_JITTERENTROPY_MEMSIZE_8192
12829bf4852dSDavid S. Miller
12839bf4852dSDavid S. Millerconfig CRYPTO_JITTERENTROPY_OSR
12849bf4852dSDavid S. Miller	int "CPU Jitter RNG Oversampling Rate"
12859bf4852dSDavid S. Miller	range 1 15
12869bf4852dSDavid S. Miller	default 3
1287504c6143SMarkus Stockhausen	help
1288504c6143SMarkus Stockhausen	  The Jitter RNG allows the specification of an oversampling rate (OSR).
1289504c6143SMarkus Stockhausen	  The Jitter RNG operation requires a fixed amount of timing
1290b95bba5dSEric Biggers	  measurements to produce one output block of random numbers. The
1291504c6143SMarkus Stockhausen	  OSR value is multiplied with the amount of timing measurements to
1292504c6143SMarkus Stockhausen	  generate one output block. Thus, the timing measurement is oversampled
1293504c6143SMarkus Stockhausen	  by the OSR factor. The oversampling allows the Jitter RNG to operate
1294504c6143SMarkus Stockhausen	  on hardware whose timers deliver limited amount of entropy (e.g.
1295504c6143SMarkus Stockhausen	  the timer is coarse) by setting the OSR to a higher value. The
1296504c6143SMarkus Stockhausen	  trade-off, however, is that the Jitter RNG now requires more time
1297504c6143SMarkus Stockhausen	  to generate random numbers.
1298504c6143SMarkus Stockhausen
1299504c6143SMarkus Stockhausenconfig CRYPTO_JITTERENTROPY_TESTINTERFACE
1300504c6143SMarkus Stockhausen	bool "CPU Jitter RNG Test Interface"
1301b7133757SJason A. Donenfeld	help
1302b7133757SJason A. Donenfeld	  The test interface allows a privileged process to capture
1303b7133757SJason A. Donenfeld	  the raw unconditioned high resolution time stamp noise that
1304b7133757SJason A. Donenfeld	  is collected by the Jitter RNG for statistical analysis. As
1305b7133757SJason A. Donenfeld	  this data is used at the same time to generate random bits,
1306b7133757SJason A. Donenfeld	  the Jitter RNG operates in an insecure mode as long as the
1307b7133757SJason A. Donenfeld	  recording is enabled. This interface therefore is only
1308b7133757SJason A. Donenfeld	  intended for testing purposes and is not suitable for
1309b7133757SJason A. Donenfeld	  production systems.
1310b7133757SJason A. Donenfeld
1311b7133757SJason A. Donenfeld	  The raw noise data can be obtained using the jent_raw_hires
1312b7133757SJason A. Donenfeld	  debugfs file. Using the option
1313b7133757SJason A. Donenfeld	  jitterentropy_testing.boot_raw_hires_test=1 the raw noise of
1314b7133757SJason A. Donenfeld	  the first 1000 entropy events since boot can be sampled.
1315b7133757SJason A. Donenfeld
1316b7133757SJason A. Donenfeld	  If unsure, select N.
1317b7133757SJason A. Donenfeld
13181da177e4SLinus Torvaldsendif	# if CRYPTO_FIPS && EXPERT
13191da177e4SLinus Torvalds
13201674aea5SArd Biesheuvelif !(CRYPTO_FIPS && EXPERT)
1321cce9e06dSHerbert Xu
13221da177e4SLinus Torvaldsconfig CRYPTO_JITTERENTROPY_MEMORY_BLOCKS
13231da177e4SLinus Torvalds	int
13241da177e4SLinus Torvalds	default 64
13251da177e4SLinus Torvalds
13261da177e4SLinus Torvaldsconfig CRYPTO_JITTERENTROPY_MEMORY_BLOCKSIZE
13271da177e4SLinus Torvalds	int
13281da177e4SLinus Torvalds	default 32
13291da177e4SLinus Torvalds
13306d8de74cSJustin P. Mattockconfig CRYPTO_JITTERENTROPY_OSR
13316d8de74cSJustin P. Mattock	int
13321da177e4SLinus Torvalds	default 1
1333584fffc8SSebastian Siewior
1334584fffc8SSebastian Siewiorconfig CRYPTO_JITTERENTROPY_TESTINTERFACE
13359ace6771SArd Biesheuvel	bool
1336b95bba5dSEric Biggers
1337dc51f257SArd Biesheuvelendif	# if !(CRYPTO_FIPS && EXPERT)
1338e2ee95b8SHye-Shik Changendif	# if CRYPTO_JITTERENTROPY
1339584fffc8SSebastian Siewior
1340e2ee95b8SHye-Shik Changconfig CRYPTO_KDF800108_CTR
1341584fffc8SSebastian Siewior	tristate
1342584fffc8SSebastian Siewior	select CRYPTO_HMAC
1343584fffc8SSebastian Siewior	select CRYPTO_SHA256
1344584fffc8SSebastian Siewior
1345584fffc8SSebastian Siewiorendmenu
1346584fffc8SSebastian Siewiormenu "Userspace interface"
1347584fffc8SSebastian Siewior
1348584fffc8SSebastian Siewiorconfig CRYPTO_USER_API
134952ba867cSJussi Kivilinna	tristate
1350584fffc8SSebastian Siewior
1351584fffc8SSebastian Siewiorconfig CRYPTO_USER_API_HASH
1352584fffc8SSebastian Siewior	tristate "Hash algorithms"
1353584fffc8SSebastian Siewior	depends on NET
1354584fffc8SSebastian Siewior	select CRYPTO_HASH
1355584fffc8SSebastian Siewior	select CRYPTO_USER_API
1356e2ee95b8SHye-Shik Chang	help
1357e2ee95b8SHye-Shik Chang	  Enable the userspace interface for hash algorithms.
13589332a9e7SAlexander A. Klimov
1359584fffc8SSebastian Siewior	  See Documentation/crypto/userspace-if.rst and
136052ba867cSJussi Kivilinna	  https://www.chronox.de/libkcapi/html/index.html
136152ba867cSJussi Kivilinna
136252ba867cSJussi Kivilinnaconfig CRYPTO_USER_API_SKCIPHER
136352ba867cSJussi Kivilinna	tristate "Symmetric key cipher algorithms"
136452ba867cSJussi Kivilinna	depends on NET
136552ba867cSJussi Kivilinna	select CRYPTO_SKCIPHER
136652ba867cSJussi Kivilinna	select CRYPTO_USER_API
13679332a9e7SAlexander A. Klimov	help
136852ba867cSJussi Kivilinna	  Enable the userspace interface for symmetric key cipher algorithms.
136964b94ceaSJussi Kivilinna
137064b94ceaSJussi Kivilinna	  See Documentation/crypto/userspace-if.rst and
1371f21a7c19SAl Viro	  https://www.chronox.de/libkcapi/html/index.html
1372b95bba5dSEric Biggers
137364b94ceaSJussi Kivilinnaconfig CRYPTO_USER_API_RNG
1374c0a64926SArd Biesheuvel	tristate "RNG (random number generator) algorithms"
137564b94ceaSJussi Kivilinna	depends on NET
137664b94ceaSJussi Kivilinna	select CRYPTO_RNG
137764b94ceaSJussi Kivilinna	select CRYPTO_USER_API
137864b94ceaSJussi Kivilinna	help
137964b94ceaSJussi Kivilinna	  Enable the userspace interface for RNG (random number generator)
138064b94ceaSJussi Kivilinna	  algorithms.
138164b94ceaSJussi Kivilinna
138264b94ceaSJussi Kivilinna	  See Documentation/crypto/userspace-if.rst and
13839332a9e7SAlexander A. Klimov	  https://www.chronox.de/libkcapi/html/index.html
138464b94ceaSJussi Kivilinna
1385584fffc8SSebastian Siewiorconfig CRYPTO_USER_API_RNG_CAVP
1386584fffc8SSebastian Siewior	bool "Enable CAVP testing of DRBG"
1387584fffc8SSebastian Siewior	depends on CRYPTO_USER_API_RNG && CRYPTO_DRBG
1388584fffc8SSebastian Siewior	help
1389584fffc8SSebastian Siewior	  Enable extra APIs in the userspace interface for NIST CAVP
1390584fffc8SSebastian Siewior	  (Cryptographic Algorithm Validation Program) testing:
1391584fffc8SSebastian Siewior	  - resetting DRBG entropy
1392584fffc8SSebastian Siewior	  - providing Additional Data
1393584fffc8SSebastian Siewior
1394584fffc8SSebastian Siewior	  This should only be enabled for CAVP testing. You should say
1395584fffc8SSebastian Siewior	  no unless you know what this is.
1396584fffc8SSebastian Siewior
1397584fffc8SSebastian Siewiorconfig CRYPTO_USER_API_AEAD
1398584fffc8SSebastian Siewior	tristate "AEAD cipher algorithms"
13990b95ec56SJussi Kivilinna	depends on NET
14000b95ec56SJussi Kivilinna	select CRYPTO_AEAD
1401f21a7c19SAl Viro	select CRYPTO_SKCIPHER
1402b95bba5dSEric Biggers	select CRYPTO_USER_API
1403a1f91ecfSArd Biesheuvel	help
14040b95ec56SJussi Kivilinna	  Enable the userspace interface for AEAD cipher algorithms.
14050b95ec56SJussi Kivilinna
14060b95ec56SJussi Kivilinna	  See Documentation/crypto/userspace-if.rst and
14070b95ec56SJussi Kivilinna	  https://www.chronox.de/libkcapi/html/index.html
14080b95ec56SJussi Kivilinna
14090b95ec56SJussi Kivilinnaconfig CRYPTO_USER_API_ENABLE_OBSOLETE
14100b95ec56SJussi Kivilinna	bool "Obsolete cryptographic algorithms"
14110b95ec56SJussi Kivilinna	depends on CRYPTO_USER_API
14120b95ec56SJussi Kivilinna	default y
14130b95ec56SJussi Kivilinna	help
14140b95ec56SJussi Kivilinna	  Allow obsolete cryptographic algorithms to be selected that have
1415d9b1d2e7SJussi Kivilinna	  already been phased out from internal use by the kernel, and are
1416d9b1d2e7SJussi Kivilinna	  only useful for userspace clients that still rely on them.
1417d9b1d2e7SJussi Kivilinna
1418b95bba5dSEric Biggersendmenu
1419d9b1d2e7SJussi Kivilinna
142044893bc2SEric Biggersif !KMSAN # avoid false positives from assembly
142155a7e88fSArd Biesheuvelif ARM
1422d9b1d2e7SJussi Kivilinnasource "arch/arm/crypto/Kconfig"
1423d9b1d2e7SJussi Kivilinnaendif
1424d9b1d2e7SJussi Kivilinnaif ARM64
1425d9b1d2e7SJussi Kivilinnasource "arch/arm64/crypto/Kconfig"
1426d9b1d2e7SJussi Kivilinnaendif
1427d9b1d2e7SJussi Kivilinnaif LOONGARCH
1428d9b1d2e7SJussi Kivilinnasource "arch/loongarch/crypto/Kconfig"
1429d9b1d2e7SJussi Kivilinnaendif
1430d9b1d2e7SJussi Kivilinnaif MIPS
1431d9b1d2e7SJussi Kivilinnasource "arch/mips/crypto/Kconfig"
1432d9b1d2e7SJussi Kivilinnaendif
1433f3f935a7SJussi Kivilinnaif PPC
1434f3f935a7SJussi Kivilinnasource "arch/powerpc/crypto/Kconfig"
1435f3f935a7SJussi Kivilinnaendif
1436f3f935a7SJussi Kivilinnaif RISCV
1437f3f935a7SJussi Kivilinnasource "arch/riscv/crypto/Kconfig"
1438f3f935a7SJussi Kivilinnaendif
1439f3f935a7SJussi Kivilinnaif S390
1440f3f935a7SJussi Kivilinnasource "arch/s390/crypto/Kconfig"
1441f3f935a7SJussi Kivilinnaendif
1442f3f935a7SJussi Kivilinnaif SPARC
1443f3f935a7SJussi Kivilinnasource "arch/sparc/crypto/Kconfig"
1444f3f935a7SJussi Kivilinnaendif
1445f3f935a7SJussi Kivilinnaif X86
1446f3f935a7SJussi Kivilinnasource "arch/x86/crypto/Kconfig"
1447f3f935a7SJussi Kivilinnaendif
144881658ad0SDavid S. Millerendif
144981658ad0SDavid S. Miller
145081658ad0SDavid S. Millersource "drivers/crypto/Kconfig"
145181658ad0SDavid S. Millersource "crypto/asymmetric_keys/Kconfig"
1452b95bba5dSEric Biggerssource "certs/Kconfig"
145381658ad0SDavid S. Millersource "crypto/krb5/Kconfig"
145481658ad0SDavid S. Miller
145581658ad0SDavid S. Millerendif	# if CRYPTO
145681658ad0SDavid S. Miller