xref: /linux/crypto/Kconfig (revision ab93e0dd72c37d378dd936f031ffb83ff2bd87ce)
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"
2840b99697SEric Biggers	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
746a0fcbb4SHerbert Xu
756cb8815fSHerbert Xuconfig CRYPTO_SIG
766cb8815fSHerbert Xu	tristate
776cb8815fSHerbert Xu	select CRYPTO_SIG2
786cb8815fSHerbert Xu	select CRYPTO_ALGAPI
796cb8815fSHerbert Xu
806cb8815fSHerbert Xuconfig CRYPTO_SIG2
816cb8815fSHerbert Xu	tristate
826cb8815fSHerbert Xu	select CRYPTO_ALGAPI2
836cb8815fSHerbert Xu
84b95bba5dSEric Biggersconfig CRYPTO_SKCIPHER
855cde0af2SHerbert Xu	tristate
86b95bba5dSEric Biggers	select CRYPTO_SKCIPHER2
875cde0af2SHerbert Xu	select CRYPTO_ALGAPI
8884534684SHerbert Xu	select CRYPTO_ECB
896a0fcbb4SHerbert Xu
90b95bba5dSEric Biggersconfig CRYPTO_SKCIPHER2
916a0fcbb4SHerbert Xu	tristate
926a0fcbb4SHerbert Xu	select CRYPTO_ALGAPI2
935cde0af2SHerbert Xu
94055bcee3SHerbert Xuconfig CRYPTO_HASH
95055bcee3SHerbert Xu	tristate
966a0fcbb4SHerbert Xu	select CRYPTO_HASH2
97055bcee3SHerbert Xu	select CRYPTO_ALGAPI
98055bcee3SHerbert Xu
996a0fcbb4SHerbert Xuconfig CRYPTO_HASH2
1006a0fcbb4SHerbert Xu	tristate
1016a0fcbb4SHerbert Xu	select CRYPTO_ALGAPI2
1026a0fcbb4SHerbert Xu
10317f0f4a4SNeil Hormanconfig CRYPTO_RNG
10417f0f4a4SNeil Horman	tristate
1056a0fcbb4SHerbert Xu	select CRYPTO_RNG2
10617f0f4a4SNeil Horman	select CRYPTO_ALGAPI
10717f0f4a4SNeil Horman
1086a0fcbb4SHerbert Xuconfig CRYPTO_RNG2
1096a0fcbb4SHerbert Xu	tristate
1106a0fcbb4SHerbert Xu	select CRYPTO_ALGAPI2
1116a0fcbb4SHerbert Xu
112401e4238SHerbert Xuconfig CRYPTO_RNG_DEFAULT
113401e4238SHerbert Xu	tristate
114401e4238SHerbert Xu	select CRYPTO_DRBG_MENU
115401e4238SHerbert Xu
1163c339ab8STadeusz Strukconfig CRYPTO_AKCIPHER2
1173c339ab8STadeusz Struk	tristate
1183c339ab8STadeusz Struk	select CRYPTO_ALGAPI2
1193c339ab8STadeusz Struk
1203c339ab8STadeusz Strukconfig CRYPTO_AKCIPHER
1213c339ab8STadeusz Struk	tristate
1223c339ab8STadeusz Struk	select CRYPTO_AKCIPHER2
1233c339ab8STadeusz Struk	select CRYPTO_ALGAPI
1243c339ab8STadeusz Struk
1254e5f2c40SSalvatore Benedettoconfig CRYPTO_KPP2
1264e5f2c40SSalvatore Benedetto	tristate
1274e5f2c40SSalvatore Benedetto	select CRYPTO_ALGAPI2
1284e5f2c40SSalvatore Benedetto
1294e5f2c40SSalvatore Benedettoconfig CRYPTO_KPP
1304e5f2c40SSalvatore Benedetto	tristate
1314e5f2c40SSalvatore Benedetto	select CRYPTO_ALGAPI
1324e5f2c40SSalvatore Benedetto	select CRYPTO_KPP2
1334e5f2c40SSalvatore Benedetto
1342ebda74fSGiovanni Cabidduconfig CRYPTO_ACOMP2
1352ebda74fSGiovanni Cabiddu	tristate
1362ebda74fSGiovanni Cabiddu	select CRYPTO_ALGAPI2
1378cd579d2SBart Van Assche	select SGL_ALLOC
1382ebda74fSGiovanni Cabiddu
1392ebda74fSGiovanni Cabidduconfig CRYPTO_ACOMP
1402ebda74fSGiovanni Cabiddu	tristate
1412ebda74fSGiovanni Cabiddu	select CRYPTO_ALGAPI
1422ebda74fSGiovanni Cabiddu	select CRYPTO_ACOMP2
1432ebda74fSGiovanni Cabiddu
1443241cd0cSHannes Reineckeconfig CRYPTO_HKDF
1453241cd0cSHannes Reinecke	tristate
14640b99697SEric Biggers	select CRYPTO_SHA256 if CRYPTO_SELFTESTS
14740b99697SEric Biggers	select CRYPTO_SHA512 if CRYPTO_SELFTESTS
1483241cd0cSHannes Reinecke	select CRYPTO_HASH2
1493241cd0cSHannes Reinecke
1502b8c19dbSHerbert Xuconfig CRYPTO_MANAGER
1516f9d0f53SEric Biggers	tristate
152*57999ed1SEric Biggers	default CRYPTO_ALGAPI if CRYPTO_SELFTESTS
1536a0fcbb4SHerbert Xu	select CRYPTO_MANAGER2
1542b8c19dbSHerbert Xu	help
155*57999ed1SEric Biggers	  This provides the support for instantiating templates such as
156*57999ed1SEric Biggers	  cbc(aes), and the support for the crypto self-tests.
1572b8c19dbSHerbert Xu
1586a0fcbb4SHerbert Xuconfig CRYPTO_MANAGER2
1596a0fcbb4SHerbert Xu	def_tristate CRYPTO_MANAGER || (CRYPTO_MANAGER!=n && CRYPTO_ALGAPI=y)
1602ebda74fSGiovanni Cabiddu	select CRYPTO_ACOMP2
161fb28fabfSHerbert Xu	select CRYPTO_AEAD2
162fb28fabfSHerbert Xu	select CRYPTO_AKCIPHER2
1636cb8815fSHerbert Xu	select CRYPTO_SIG2
164fb28fabfSHerbert Xu	select CRYPTO_HASH2
165fb28fabfSHerbert Xu	select CRYPTO_KPP2
166fb28fabfSHerbert Xu	select CRYPTO_RNG2
167fb28fabfSHerbert Xu	select CRYPTO_SKCIPHER2
1686a0fcbb4SHerbert Xu
169a38f7907SSteffen Klassertconfig CRYPTO_USER
170a38f7907SSteffen Klassert	tristate "Userspace cryptographic algorithm configuration"
1715db017aaSHerbert Xu	depends on NET
172a38f7907SSteffen Klassert	select CRYPTO_MANAGER
173a38f7907SSteffen Klassert	help
174d19978f5SValdis.Kletnieks@vt.edu	  Userspace configuration for cryptographic instantiations such as
175a38f7907SSteffen Klassert	  cbc(aes).
176a38f7907SSteffen Klassert
17740b99697SEric Biggersconfig CRYPTO_SELFTESTS
17840b99697SEric Biggers	bool "Enable cryptographic self-tests"
17940b99697SEric Biggers	depends on EXPERT
1800b767f96SAlexander Shishkin	help
18140b99697SEric Biggers	  Enable the cryptographic self-tests.
18240b99697SEric Biggers
18340b99697SEric Biggers	  The cryptographic self-tests run at boot time, or at algorithm
18440b99697SEric Biggers	  registration time if algorithms are dynamically loaded later.
18540b99697SEric Biggers
18640b99697SEric Biggers	  There are two main use cases for these tests:
18740b99697SEric Biggers
18840b99697SEric Biggers	  - Development and pre-release testing.  In this case, also enable
1890b767f96SAlexander Shishkin	    CRYPTO_SELFTESTS_FULL to get the full set of tests.  All crypto code
190584fffc8SSebastian Siewior	    in the kernel is expected to pass the full set of tests.
191584fffc8SSebastian Siewior
192bde39305SEric Biggers	  - Production kernels, to help prevent buggy drivers from being used
193bde39305SEric Biggers	    and/or meet FIPS 140-3 pre-operational testing requirements.  In
194bde39305SEric Biggers	    this case, enable CRYPTO_SELFTESTS but not CRYPTO_SELFTESTS_FULL.
195584fffc8SSebastian Siewior
196584fffc8SSebastian Siewiorconfig CRYPTO_SELFTESTS_FULL
197584fffc8SSebastian Siewior	bool "Enable the full set of cryptographic self-tests"
1985068c7a8SSteffen Klassert	depends on CRYPTO_SELFTESTS
1993b4afaf2SKees Cook	help
2003b4afaf2SKees Cook	  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
2035068c7a8SSteffen Klassert	  pre-release testing, but not in production kernels.
2045068c7a8SSteffen Klassert
2055068c7a8SSteffen Klassert	  All crypto code in the kernel is expected to pass the full tests.
2065068c7a8SSteffen Klassert
2075068c7a8SSteffen Klassertconfig CRYPTO_NULL
208584fffc8SSebastian Siewior	tristate "Null algorithms"
209584fffc8SSebastian Siewior	select CRYPTO_ALGAPI
210b95bba5dSEric Biggers	select CRYPTO_SKCIPHER
211b8a28251SLoc Ho	select CRYPTO_HASH
212584fffc8SSebastian Siewior	help
213584fffc8SSebastian Siewior	  These are 'Null' algorithms, used by IPsec, which do nothing.
214584fffc8SSebastian Siewior
215584fffc8SSebastian Siewiorconfig CRYPTO_PCRYPT
216584fffc8SSebastian Siewior	tristate "Parallel crypto engine"
217584fffc8SSebastian Siewior	depends on SMP
218584fffc8SSebastian Siewior	select PADATA
219584fffc8SSebastian Siewior	select CRYPTO_MANAGER
220584fffc8SSebastian Siewior	select CRYPTO_AEAD
221b95bba5dSEric Biggers	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
226cf514b2aSRobert Elliott	tristate "Software async crypto daemon"
227cf514b2aSRobert Elliott	select CRYPTO_SKCIPHER
228584fffc8SSebastian Siewior	select CRYPTO_HASH
229d1775a17SDavid Howells	select CRYPTO_MANAGER
230d1775a17SDavid Howells	help
231d1775a17SDavid Howells	  This is a generic software asynchronous crypto daemon that
232d1775a17SDavid Howells	  converts an arbitrary synchronous software crypto algorithm
233d1775a17SDavid Howells	  into an asynchronous algorithm that executes in a kernel thread.
234d1775a17SDavid Howells
235d1775a17SDavid Howellsconfig CRYPTO_AUTHENC
236d1775a17SDavid Howells	tristate "Authenc support"
237d1775a17SDavid Howells	select CRYPTO_AEAD
238d1775a17SDavid Howells	select CRYPTO_SKCIPHER
239d1775a17SDavid Howells	select CRYPTO_MANAGER
2403357b6c9SEric Biggers	select CRYPTO_HASH
2413357b6c9SEric Biggers	help
24200ea27f1SArd Biesheuvel	  Authenc: Combined mode wrapper for IPsec.
243da7f033dSHerbert Xu
244584fffc8SSebastian Siewior	  This is required for IPSec ESP (XFRM_ESP).
2453357b6c9SEric Biggers
2463357b6c9SEric Biggersconfig CRYPTO_KRB5ENC
2473357b6c9SEric Biggers	tristate "Kerberos 5 combined hash+cipher support"
2483357b6c9SEric Biggers	select CRYPTO_AEAD
2493357b6c9SEric Biggers	select CRYPTO_SKCIPHER
250584fffc8SSebastian Siewior	select CRYPTO_MANAGER
251266d0516SHerbert Xu	select CRYPTO_HASH
252266d0516SHerbert Xu	help
253266d0516SHerbert Xu	  Combined hash and cipher support for Kerberos 5 RFC3961 simplified
254266d0516SHerbert Xu	  profile.  This is required for Kerberos 5-style encryption, used by
255735d37b5SBaolin Wang	  sunrpc/NFS and rxrpc/AFS.
256735d37b5SBaolin Wang
257735d37b5SBaolin Wangconfig CRYPTO_BENCHMARK
258f1f142adSRobert Elliott	tristate "Crypto benchmarking module"
259f1f142adSRobert Elliott	depends on m || EXPERT
260f1f142adSRobert Elliott	select CRYPTO_MANAGER
2613d6228a5SVitaly Chikunov	help
2623d6228a5SVitaly Chikunov	  Quick & dirty crypto benchmarking module.
26305b37465SRobert Elliott
2643d6228a5SVitaly Chikunov	  This is mainly intended for use by people developing cryptographic
2653d6228a5SVitaly Chikunov	  algorithms in the kernel.  It should not be enabled in production
2661e562deaSLukas Wunner	  kernels.
2673d6228a5SVitaly Chikunov
2683d6228a5SVitaly Chikunovconfig CRYPTO_SIMD
2693d6228a5SVitaly Chikunov	tristate
27005b37465SRobert Elliott	select CRYPTO_CRYPTD
2713d6228a5SVitaly Chikunov
2723d6228a5SVitaly Chikunovconfig CRYPTO_ENGINE
27305b37465SRobert Elliott	tristate
2743d6228a5SVitaly Chikunov
2753d6228a5SVitaly Chikunovendmenu
2763d6228a5SVitaly Chikunov
27705b37465SRobert Elliottmenu "Public-key cryptography"
2783d6228a5SVitaly Chikunov
2797dce5981SNicolai Stangeconfig CRYPTO_RSA
28005b37465SRobert Elliott	tristate "RSA (Rivest-Shamir-Adleman)"
2817dce5981SNicolai Stange	select CRYPTO_AKCIPHER
2821e207964SNicolai Stange	select CRYPTO_MANAGER
2837dce5981SNicolai Stange	select CRYPTO_SIG
28405b37465SRobert Elliott	select MPILIB
28505b37465SRobert Elliott	select ASN1
28605b37465SRobert Elliott	help
28705b37465SRobert Elliott	  RSA (Rivest-Shamir-Adleman) public key algorithm (RFC8017)
28805b37465SRobert Elliott
28905b37465SRobert Elliottconfig CRYPTO_DH
29005b37465SRobert Elliott	tristate "DH (Diffie-Hellman)"
2917dce5981SNicolai Stange	select CRYPTO_KPP
2924a2289daSVitaly Chikunov	select MPILIB
2934a2289daSVitaly Chikunov	help
29438aa192aSArnd Bergmann	  DH (Diffie-Hellman) key exchange algorithm
2954a2289daSVitaly Chikunov
2963d6228a5SVitaly Chikunovconfig CRYPTO_DH_RFC7919_GROUPS
29705b37465SRobert Elliott	bool "RFC 7919 FFDHE groups"
2984a2289daSVitaly Chikunov	depends on CRYPTO_DH
2993d6228a5SVitaly Chikunov	select CRYPTO_RNG_DEFAULT
3003d6228a5SVitaly Chikunov	help
30105b37465SRobert Elliott	  FFDHE (Finite-Field-based Diffie-Hellman Ephemeral) groups
30205b37465SRobert Elliott	  defined in RFC7919.
3033d6228a5SVitaly Chikunov
3044e660291SStefan Berger	  Support these finite-field groups in DH key exchanges:
30505b37465SRobert Elliott	  - ffdhe2048, ffdhe3072, ffdhe4096, ffdhe6144, ffdhe8192
3064e660291SStefan Berger
307ef132350SLukas Wunner	  If unsure, say N.
3084e660291SStefan Berger
3094e660291SStefan Bergerconfig CRYPTO_ECC
31005b37465SRobert Elliott	tristate
31105b37465SRobert Elliott	select CRYPTO_RNG_DEFAULT
31291790c7aSLukas Wunner
31305b37465SRobert Elliottconfig CRYPTO_ECDH
31405b37465SRobert Elliott	tristate "ECDH (Elliptic Curve Diffie-Hellman)"
3154e660291SStefan Berger	select CRYPTO_ECC
3160d7a7864SVitaly Chikunov	select CRYPTO_KPP
31705b37465SRobert Elliott	help
3180d7a7864SVitaly Chikunov	  ECDH (Elliptic Curve Diffie-Hellman) key exchange algorithm
319ae117924SLukas Wunner	  using curves P-192, P-256, and P-384 (FIPS 186)
3200d7a7864SVitaly Chikunov
3211036633eSVitaly Chikunovconfig CRYPTO_ECDSA
3221036633eSVitaly Chikunov	tristate "ECDSA (Elliptic Curve Digital Signature Algorithm)"
3230d7a7864SVitaly Chikunov	select CRYPTO_ECC
3240d7a7864SVitaly Chikunov	select CRYPTO_SIG
32505b37465SRobert Elliott	select ASN1
32605b37465SRobert Elliott	help
32705b37465SRobert Elliott	  ECDSA (Elliptic Curve Digital Signature Algorithm) (FIPS 186,
32805b37465SRobert Elliott	  ISO/IEC 14888-3)
3290d7a7864SVitaly Chikunov	  using curves P-192, P-256, P-384 and P-521
330ee772cb6SArd Biesheuvel
33105b37465SRobert Elliott	  Only signature verification is implemented.
332ee772cb6SArd Biesheuvel
333ee772cb6SArd Biesheuvelconfig CRYPTO_ECRDSA
33417ec3e71SHerbert Xu	tristate "EC-RDSA (Elliptic Curve Russian Digital Signature Algorithm)"
33505b37465SRobert Elliott	select CRYPTO_ECC
33605b37465SRobert Elliott	select CRYPTO_SIG
337ee772cb6SArd Biesheuvel	select CRYPTO_STREEBOG
338f1f142adSRobert Elliott	select OID_REGISTRY
339584fffc8SSebastian Siewior	select ASN1
340f1f142adSRobert Elliott	help
3411da177e4SLinus Torvalds	  Elliptic Curve Russian Digital Signature Algorithm (GOST R 34.10-2012,
3421da177e4SLinus Torvalds	  RFC 7091, ISO/IEC 14888-3)
343cf514b2aSRobert Elliott
344cce9e06dSHerbert Xu	  One of the Russian cryptographic standard algorithms (called GOST
3455bb12d78SArd Biesheuvel	  algorithms). Only signature verification is implemented.
3461da177e4SLinus Torvalds
347cf514b2aSRobert Elliottconfig CRYPTO_CURVE25519
3481da177e4SLinus Torvalds	tristate "Curve25519"
3491da177e4SLinus Torvalds	select CRYPTO_KPP
3501da177e4SLinus Torvalds	select CRYPTO_LIB_CURVE25519_GENERIC
3511da177e4SLinus Torvalds	select CRYPTO_LIB_CURVE25519_INTERNAL
3521da177e4SLinus Torvalds	help
3531da177e4SLinus Torvalds	  Curve25519 elliptic curve (RFC7748)
3541da177e4SLinus Torvalds
3551da177e4SLinus Torvaldsendmenu
3561da177e4SLinus Torvalds
3571da177e4SLinus Torvaldsmenu "Block ciphers"
3581da177e4SLinus Torvalds
3591da177e4SLinus Torvaldsconfig CRYPTO_AES
360b5e0b032SArd Biesheuvel	tristate "AES (Advanced Encryption Standard)"
361cf514b2aSRobert Elliott	select CRYPTO_ALGAPI
362b5e0b032SArd Biesheuvel	select CRYPTO_LIB_AES
363e59c1c98SArd Biesheuvel	help
364b5e0b032SArd Biesheuvel	  AES cipher algorithms (Rijndael)(FIPS-197, ISO/IEC 18033-3)
365cf514b2aSRobert Elliott
366cf514b2aSRobert Elliott	  Rijndael appears to be consistently a very good performer in
367b5e0b032SArd Biesheuvel	  both hardware and software across a wide range of computing
368b5e0b032SArd Biesheuvel	  environments regardless of its use in feedback or non-feedback
369b5e0b032SArd Biesheuvel	  modes. Its key setup time is excellent, and its key agility is
370b5e0b032SArd Biesheuvel	  good. Rijndael's very low memory requirements make it very well
371b5e0b032SArd Biesheuvel	  suited for restricted-space environments, in which it also
372b5e0b032SArd Biesheuvel	  demonstrates excellent performance. Rijndael's operations are
373b5e0b032SArd Biesheuvel	  among the easiest to defend against power and timing attacks.
374b5e0b032SArd Biesheuvel
375b5e0b032SArd Biesheuvel	  The AES specifies three key sizes: 128, 192 and 256 bits
376b5e0b032SArd Biesheuvel
377b5e0b032SArd Biesheuvelconfig CRYPTO_AES_TI
3780a6a40c2SEric Biggers	tristate "AES (Advanced Encryption Standard) (fixed time)"
3790a6a40c2SEric Biggers	select CRYPTO_ALGAPI
380b5e0b032SArd Biesheuvel	select CRYPTO_LIB_AES
3811da177e4SLinus Torvalds	help
382cf514b2aSRobert Elliott	  AES cipher algorithms (Rijndael)(FIPS-197, ISO/IEC 18033-3)
3831674aea5SArd Biesheuvel
384cce9e06dSHerbert Xu	  This is a generic implementation of AES that attempts to eliminate
3851da177e4SLinus Torvalds	  data dependent latencies as much as possible without affecting
386cf514b2aSRobert Elliott	  performance too much. It is intended for use by the generic CCM
3871da177e4SLinus Torvalds	  and GCM drivers, and other CTR or CMAC/XCBC based modes that rely
3881da177e4SLinus Torvalds	  solely on encryption (although decryption is supported as well, but
3891da177e4SLinus Torvalds	  with a more dramatic performance hit)
3901da177e4SLinus Torvalds
3911da177e4SLinus Torvalds	  Instead of using 16 lookup tables of 1 KB each, (8 for encryption and
392cf514b2aSRobert Elliott	  8 for decryption), this implementation only uses just two S-boxes of
393cf514b2aSRobert Elliott	  256 bytes each, and attempts to eliminate data dependent latencies by
3941da177e4SLinus Torvalds	  prefetching the entire table into the cache at the start of each
395f1f142adSRobert Elliott	  block. Interrupts are also disabled to avoid races where cachelines
396cf514b2aSRobert Elliott	  are evicted when the CPU is interrupted to do something else.
397f1f142adSRobert Elliott
398e2ee95b8SHye-Shik Changconfig CRYPTO_ANUBIS
399cf514b2aSRobert Elliott	tristate "Anubis"
400e2ee95b8SHye-Shik Chang	depends on CRYPTO_USER_API_ENABLE_OBSOLETE
401f1f142adSRobert Elliott	select CRYPTO_ALGAPI
402f1f142adSRobert Elliott	help
403f1f142adSRobert Elliott	  Anubis cipher algorithm
404f1f142adSRobert Elliott
405f1f142adSRobert Elliott	  Anubis is a variable key length cipher which can use keys from
406f1f142adSRobert Elliott	  128 bits to 320 bits in length.  It was evaluated as a entrant
407cf514b2aSRobert Elliott	  in the NESSIE competition.
408cf514b2aSRobert Elliott
409584fffc8SSebastian Siewior	  See https://web.archive.org/web/20160606112246/http://www.larc.usp.br/~pbarreto/AnubisPage.html
410584fffc8SSebastian Siewior	  for further information.
411cf514b2aSRobert Elliott
412584fffc8SSebastian Siewiorconfig CRYPTO_ARIA
41352ba867cSJussi Kivilinna	tristate "ARIA"
414584fffc8SSebastian Siewior	select CRYPTO_ALGAPI
415cf514b2aSRobert Elliott	help
416584fffc8SSebastian Siewior	  ARIA cipher algorithm (RFC5794)
417584fffc8SSebastian Siewior
418584fffc8SSebastian Siewior	  ARIA is a standard encryption algorithm of the Republic of Korea.
419584fffc8SSebastian Siewior	  The ARIA specifies three key sizes and rounds.
420e2ee95b8SHye-Shik Chang	  128-bit: 12 rounds.
421cf514b2aSRobert Elliott	  192-bit: 14 rounds.
422584fffc8SSebastian Siewior	  256-bit: 16 rounds.
42352ba867cSJussi Kivilinna
42452ba867cSJussi Kivilinna	  See:
42552ba867cSJussi Kivilinna	  https://seed.kisa.or.kr/kisa/algorithm/EgovAriaInfo.do
42652ba867cSJussi Kivilinna
42752ba867cSJussi Kivilinnaconfig CRYPTO_BLOWFISH
42852ba867cSJussi Kivilinna	tristate "Blowfish"
429584fffc8SSebastian Siewior	select CRYPTO_ALGAPI
430cf514b2aSRobert Elliott	select CRYPTO_BLOWFISH_COMMON
431584fffc8SSebastian Siewior	help
432584fffc8SSebastian Siewior	  Blowfish cipher algorithm, by Bruce Schneier
433cf514b2aSRobert Elliott
434584fffc8SSebastian Siewior	  This is a variable key length cipher which can use keys from 32
435584fffc8SSebastian Siewior	  bits to 448 bits in length.  It's fast, simple and specifically
436584fffc8SSebastian Siewior	  designed for use on "large microprocessors".
437584fffc8SSebastian Siewior
438584fffc8SSebastian Siewior	  See https://www.schneier.com/blowfish.html for further information.
439584fffc8SSebastian Siewior
440cf514b2aSRobert Elliottconfig CRYPTO_BLOWFISH_COMMON
441584fffc8SSebastian Siewior	tristate
442044ab525SJussi Kivilinna	help
443044ab525SJussi Kivilinna	  Common parts of the Blowfish cipher algorithm shared by the
444044ab525SJussi Kivilinna	  generic c and the assembler implementations.
445044ab525SJussi Kivilinna
446044ab525SJussi Kivilinnaconfig CRYPTO_CAMELLIA
447044ab525SJussi Kivilinna	tristate "Camellia"
448584fffc8SSebastian Siewior	select CRYPTO_ALGAPI
449cf514b2aSRobert Elliott	help
450584fffc8SSebastian Siewior	  Camellia cipher algorithms (ISO/IEC 18033-3)
451044ab525SJussi Kivilinna
452584fffc8SSebastian Siewior	  Camellia is a symmetric key block cipher developed jointly
453cf514b2aSRobert Elliott	  at NTT and Mitsubishi Electric Corporation.
454584fffc8SSebastian Siewior
455584fffc8SSebastian Siewior	  The Camellia specifies three key sizes: 128, 192 and 256 bits.
456cf514b2aSRobert Elliott
457584fffc8SSebastian Siewior	  See https://info.isl.ntt.co.jp/crypt/eng/camellia/ for further information.
458044ab525SJussi Kivilinna
459584fffc8SSebastian Siewiorconfig CRYPTO_CAST_COMMON
460cf514b2aSRobert Elliott	tristate
461584fffc8SSebastian Siewior	help
462584fffc8SSebastian Siewior	  Common parts of the CAST cipher algorithms shared by the
463cf514b2aSRobert Elliott	  generic c and the assembler implementations.
464584fffc8SSebastian Siewior
46504007b0eSArd Biesheuvelconfig CRYPTO_CAST5
466584fffc8SSebastian Siewior	tristate "CAST5 (CAST-128)"
467cf514b2aSRobert Elliott	select CRYPTO_ALGAPI
468cf514b2aSRobert Elliott	select CRYPTO_CAST_COMMON
469cf514b2aSRobert Elliott	help
470584fffc8SSebastian Siewior	  CAST5 (CAST-128) cipher algorithm (RFC2144, ISO/IEC 18033-3)
471584fffc8SSebastian Siewior
472cf514b2aSRobert Elliottconfig CRYPTO_CAST6
473584fffc8SSebastian Siewior	tristate "CAST6 (CAST-256)"
474b95bba5dSEric Biggers	select CRYPTO_ALGAPI
475584fffc8SSebastian Siewior	select CRYPTO_CAST_COMMON
476cf514b2aSRobert Elliott	help
477cf514b2aSRobert Elliott	  CAST6 (CAST-256) encryption algorithm (RFC2612)
478cf514b2aSRobert Elliott
479584fffc8SSebastian Siewiorconfig CRYPTO_DES
480584fffc8SSebastian Siewior	tristate "DES and Triple DES EDE"
481cf514b2aSRobert Elliott	select CRYPTO_ALGAPI
4821674aea5SArd Biesheuvel	select CRYPTO_LIB_DES
483584fffc8SSebastian Siewior	help
484584fffc8SSebastian Siewior	  DES (Data Encryption Standard)(FIPS 46-2, ISO/IEC 18033-3) and
485cf514b2aSRobert Elliott	  Triple DES EDE (Encrypt/Decrypt/Encrypt) (FIPS 46-3, ISO/IEC 18033-3)
486584fffc8SSebastian Siewior	  cipher algorithms
487584fffc8SSebastian Siewior
488584fffc8SSebastian Siewiorconfig CRYPTO_FCRYPT
489584fffc8SSebastian Siewior	tristate "FCrypt"
490584fffc8SSebastian Siewior	select CRYPTO_ALGAPI
491cf514b2aSRobert Elliott	select CRYPTO_SKCIPHER
492cf514b2aSRobert Elliott	help
493e2ee95b8SHye-Shik Chang	  FCrypt algorithm used by RxRPC
494584fffc8SSebastian Siewior
495cf514b2aSRobert Elliott	  See https://ota.polyonymo.us/fcrypt-paper.txt
4961674aea5SArd Biesheuvel
497584fffc8SSebastian Siewiorconfig CRYPTO_KHAZAD
498584fffc8SSebastian Siewior	tristate "Khazad"
499cf514b2aSRobert Elliott	depends on CRYPTO_USER_API_ENABLE_OBSOLETE
500584fffc8SSebastian Siewior	select CRYPTO_ALGAPI
501584fffc8SSebastian Siewior	help
502584fffc8SSebastian Siewior	  Khazad cipher algorithm
503584fffc8SSebastian Siewior
504584fffc8SSebastian Siewior	  Khazad was a finalist in the initial NESSIE competition.  It is
505584fffc8SSebastian Siewior	  an algorithm optimized for 64-bit processors with good performance
506cf514b2aSRobert Elliott	  on 32-bit processors.  Khazad uses an 128 bit key size.
507cf514b2aSRobert Elliott
508584fffc8SSebastian Siewior	  See https://web.archive.org/web/20171011071731/http://www.larc.usp.br/~pbarreto/KhazadPage.html
509584fffc8SSebastian Siewior	  for further information.
510cf514b2aSRobert Elliott
511584fffc8SSebastian Siewiorconfig CRYPTO_SEED
512584fffc8SSebastian Siewior	tristate "SEED"
513cf514b2aSRobert Elliott	depends on CRYPTO_USER_API_ENABLE_OBSOLETE
514584fffc8SSebastian Siewior	select CRYPTO_ALGAPI
515584fffc8SSebastian Siewior	help
516784506a1SArd Biesheuvel	  SEED cipher algorithm (RFC4269, ISO/IEC 18033-3)
517584fffc8SSebastian Siewior
518cf514b2aSRobert Elliott	  SEED is a 128-bit symmetric key block cipher that has been
519584fffc8SSebastian Siewior	  developed by KISA (Korea Information Security Agency) as a
520747c8ce4SGilad Ben-Yossef	  national standard encryption algorithm of the Republic of Korea.
521d2825fa9SJason A. Donenfeld	  It is a 16 round block cipher with the key size of 128 bit.
522d2825fa9SJason A. Donenfeld
523d2825fa9SJason A. Donenfeld	  See https://seed.kisa.or.kr/kisa/algorithm/EgovSeedInfo.do
524cf514b2aSRobert Elliott	  for further information.
525747c8ce4SGilad Ben-Yossef
526d2825fa9SJason A. Donenfeldconfig CRYPTO_SERPENT
527747c8ce4SGilad Ben-Yossef	tristate "Serpent"
528cf514b2aSRobert Elliott	select CRYPTO_ALGAPI
529cf514b2aSRobert Elliott	help
530747c8ce4SGilad Ben-Yossef	  Serpent cipher algorithm, by Anderson, Biham & Knudsen
531747c8ce4SGilad Ben-Yossef
532747c8ce4SGilad Ben-Yossef	  Keys are allowed to be from 0 to 256 bits in length, in steps
533747c8ce4SGilad Ben-Yossef	  of 8 bits.
534747c8ce4SGilad Ben-Yossef
535747c8ce4SGilad Ben-Yossef	  See https://www.cl.cam.ac.uk/~rja14/serpent.html for further information.
536747c8ce4SGilad Ben-Yossef
537747c8ce4SGilad Ben-Yossefconfig CRYPTO_SM4
538747c8ce4SGilad Ben-Yossef	tristate
539747c8ce4SGilad Ben-Yossef
540747c8ce4SGilad Ben-Yossefconfig CRYPTO_SM4_GENERIC
541747c8ce4SGilad Ben-Yossef	tristate "SM4 (ShangMi 4)"
542747c8ce4SGilad Ben-Yossef	select CRYPTO_ALGAPI
543747c8ce4SGilad Ben-Yossef	select CRYPTO_SM4
544747c8ce4SGilad Ben-Yossef	help
545747c8ce4SGilad Ben-Yossef	  SM4 cipher algorithms (OSCCA GB/T 32907-2016,
546cf514b2aSRobert Elliott	  ISO/IEC 18033-3:2010/Amd 1:2021)
547747c8ce4SGilad Ben-Yossef
548747c8ce4SGilad Ben-Yossef	  SM4 (GBT.32907-2016) is a cryptographic standard issued by the
549747c8ce4SGilad Ben-Yossef	  Organization of State Commercial Administration of China (OSCCA)
550584fffc8SSebastian Siewior	  as an authorized cryptographic algorithms for the use within China.
551cf514b2aSRobert Elliott
5521674aea5SArd Biesheuvel	  SMS4 was originally created for use in protecting wireless
553584fffc8SSebastian Siewior	  networks, and is mandated in the Chinese National Standard for
554584fffc8SSebastian Siewior	  Wireless LAN WAPI (Wired Authentication and Privacy Infrastructure)
555cf514b2aSRobert Elliott	  (GB.15629.11-2003).
556584fffc8SSebastian Siewior
557584fffc8SSebastian Siewior	  The latest SM4 standard (GBT.32907-2016) was proposed by OSCCA and
558584fffc8SSebastian Siewior	  standardized through TC 260 of the Standardization Administration
559584fffc8SSebastian Siewior	  of the People's Republic of China (SAC).
560584fffc8SSebastian Siewior
561584fffc8SSebastian Siewior	  The input, output, and key of SMS4 are each 128 bits.
562584fffc8SSebastian Siewior
563584fffc8SSebastian Siewior	  See https://eprint.iacr.org/2008/329.pdf for further information.
564584fffc8SSebastian Siewior
565584fffc8SSebastian Siewior	  If unsure, say N.
566584fffc8SSebastian Siewior
567584fffc8SSebastian Siewiorconfig CRYPTO_TEA
568584fffc8SSebastian Siewior	tristate "TEA, XTEA and XETA"
569cf514b2aSRobert Elliott	depends on CRYPTO_USER_API_ENABLE_OBSOLETE
570584fffc8SSebastian Siewior	select CRYPTO_ALGAPI
571584fffc8SSebastian Siewior	help
572584fffc8SSebastian Siewior	  TEA (Tiny Encryption Algorithm) cipher algorithms
573cf514b2aSRobert Elliott
574584fffc8SSebastian Siewior	  Tiny Encryption Algorithm is a simple cipher that uses
575584fffc8SSebastian Siewior	  many rounds for security.  It is very fast and uses
576584fffc8SSebastian Siewior	  little memory.
577584fffc8SSebastian Siewior
578584fffc8SSebastian Siewior	  Xtendend Tiny Encryption Algorithm is a modification to
579584fffc8SSebastian Siewior	  the TEA algorithm to address a potential key weakness
580cf514b2aSRobert Elliott	  in the TEA algorithm.
581584fffc8SSebastian Siewior
582584fffc8SSebastian Siewior	  Xtendend Encryption Tiny Algorithm is a mis-implementation
583584fffc8SSebastian Siewior	  of the XTEA algorithm for compatibility purposes.
584584fffc8SSebastian Siewior
585584fffc8SSebastian Siewiorconfig CRYPTO_TWOFISH
586584fffc8SSebastian Siewior	tristate "Twofish"
587584fffc8SSebastian Siewior	select CRYPTO_ALGAPI
588f1f142adSRobert Elliott	select CRYPTO_TWOFISH_COMMON
589f1f142adSRobert Elliott	help
590f1f142adSRobert Elliott	  Twofish cipher algorithm
591f1f142adSRobert Elliott
592f1f142adSRobert Elliott	  Twofish was submitted as an AES (Advanced Encryption Standard)
593cf514b2aSRobert Elliott	  candidate cipher by researchers at CounterPane Systems.  It is a
594f1f142adSRobert Elliott	  16 round block cipher supporting key sizes of 128, 192, and 256
595f1f142adSRobert Elliott	  bits.
596f1f142adSRobert Elliott
597f1f142adSRobert Elliott	  See https://www.schneier.com/twofish.html for further information.
598f1f142adSRobert Elliott
599cf514b2aSRobert Elliottconfig CRYPTO_TWOFISH_COMMON
600cf514b2aSRobert Elliott	tristate
601cf514b2aSRobert Elliott	help
602f1f142adSRobert Elliott	  Common parts of the Twofish cipher algorithm shared by the
603f1f142adSRobert Elliott	  generic c and the assembler implementations.
604f1f142adSRobert Elliott
605f1f142adSRobert Elliottendmenu
606f1f142adSRobert Elliott
607f1f142adSRobert Elliottmenu "Length-preserving ciphers and modes"
608f1f142adSRobert Elliott
609f1f142adSRobert Elliottconfig CRYPTO_ADIANTUM
610f1f142adSRobert Elliott	tristate "Adiantum"
611f1f142adSRobert Elliott	select CRYPTO_CHACHA20
612f1f142adSRobert Elliott	select CRYPTO_LIB_POLY1305_GENERIC
613f1f142adSRobert Elliott	select CRYPTO_NHPOLY1305
614f1f142adSRobert Elliott	select CRYPTO_MANAGER
615f1f142adSRobert Elliott	help
616f1f142adSRobert Elliott	  Adiantum tweakable, length-preserving encryption mode
617f1f142adSRobert Elliott
618cf514b2aSRobert Elliott	  Designed for fast and secure disk encryption, especially on
619f1f142adSRobert Elliott	  CPUs without dedicated crypto instructions.  It encrypts
620f1f142adSRobert Elliott	  each sector using the XChaCha12 stream cipher, two passes of
621f1f142adSRobert Elliott	  an ε-almost-∆-universal hash function, and an invocation of
622f1f142adSRobert Elliott	  the AES-256 block cipher on a single 16-byte block.  On CPUs
623cf514b2aSRobert Elliott	  without AES instructions, Adiantum is much faster than
624f1f142adSRobert Elliott	  AES-XTS.
625f1f142adSRobert Elliott
626f1f142adSRobert Elliott	  Adiantum's security is provably reducible to that of its
627f1f142adSRobert Elliott	  underlying stream and block ciphers, subject to a security
628f1f142adSRobert Elliott	  bound.  Unlike XTS, Adiantum is a true wide-block encryption
629f1f142adSRobert Elliott	  mode, so it actually provides an even stronger notion of
630f1f142adSRobert Elliott	  security than XTS, subject to the security bound.
631cf514b2aSRobert Elliott
632879f4754SEric Biggers	  If unsure, say N.
633f1f142adSRobert Elliott
634f1f142adSRobert Elliottconfig CRYPTO_ARC4
635f1f142adSRobert Elliott	tristate "ARC4 (Alleged Rivest Cipher 4)"
636cf514b2aSRobert Elliott	depends on CRYPTO_USER_API_ENABLE_OBSOLETE
637f1f142adSRobert Elliott	select CRYPTO_SKCIPHER
638f1f142adSRobert Elliott	select CRYPTO_LIB_ARC4
639f1f142adSRobert Elliott	help
640cf514b2aSRobert Elliott	  ARC4 cipher algorithm
641cf514b2aSRobert Elliott
642f1f142adSRobert Elliott	  ARC4 is a stream cipher using keys ranging from 8 bits to 2048
643f1f142adSRobert Elliott	  bits in length.  This algorithm is required for driver-based
644f1f142adSRobert Elliott	  WEP, but it should not be for other purposes because of the
645f1f142adSRobert Elliott	  weakness of the algorithm.
646cf514b2aSRobert Elliott
647cf514b2aSRobert Elliottconfig CRYPTO_CHACHA20
648f1f142adSRobert Elliott	tristate "ChaCha"
649f1f142adSRobert Elliott	select CRYPTO_LIB_CHACHA
650f1f142adSRobert Elliott	select CRYPTO_LIB_CHACHA_GENERIC
651f1f142adSRobert Elliott	select CRYPTO_SKCIPHER
652f1f142adSRobert Elliott	help
653f1f142adSRobert Elliott	  The ChaCha20, XChaCha20, and XChaCha12 stream cipher algorithms
654cf514b2aSRobert Elliott
655f1f142adSRobert Elliott	  ChaCha20 is a 256-bit high-speed stream cipher designed by Daniel J.
656f1f142adSRobert Elliott	  Bernstein and further specified in RFC7539 for use in IETF protocols.
657f1f142adSRobert Elliott	  This is the portable C implementation of ChaCha20.  See
658cf514b2aSRobert Elliott	  https://cr.yp.to/chacha/chacha-20080128.pdf for further information.
659cf514b2aSRobert Elliott
660cf514b2aSRobert Elliott	  XChaCha20 is the application of the XSalsa20 construction to ChaCha20
661f1f142adSRobert Elliott	  rather than to Salsa20.  XChaCha20 extends ChaCha20's nonce length
662f1f142adSRobert Elliott	  from 64 bits (or 96 bits using the RFC7539 convention) to 192 bits,
663cf514b2aSRobert Elliott	  while provably retaining ChaCha20's security.  See
664f1f142adSRobert Elliott	  https://cr.yp.to/snuffle/xsalsa-20081128.pdf for further information.
665f1f142adSRobert Elliott
666f1f142adSRobert Elliott	  XChaCha12 is XChaCha20 reduced to 12 rounds, with correspondingly
667cf514b2aSRobert Elliott	  reduced security margin but increased performance.  It can be needed
668f1f142adSRobert Elliott	  in some performance-sensitive scenarios.
669f1f142adSRobert Elliott
670cf514b2aSRobert Elliottconfig CRYPTO_CBC
671f1f142adSRobert Elliott	tristate "CBC (Cipher Block Chaining)"
672f1f142adSRobert Elliott	select CRYPTO_SKCIPHER
673f1f142adSRobert Elliott	select CRYPTO_MANAGER
674cf514b2aSRobert Elliott	help
675cf514b2aSRobert Elliott	  CBC (Cipher Block Chaining) mode (NIST SP800-38A)
676cf514b2aSRobert Elliott
677f1f142adSRobert Elliott	  This block cipher mode is required for IPSec ESP (XFRM_ESP).
678f1f142adSRobert Elliott
679f1f142adSRobert Elliottconfig CRYPTO_CTR
680f1f142adSRobert Elliott	tristate "CTR (Counter)"
681cf514b2aSRobert Elliott	select CRYPTO_SKCIPHER
68284534684SHerbert Xu	select CRYPTO_MANAGER
683f1f142adSRobert Elliott	help
684f1f142adSRobert Elliott	  CTR (Counter) mode (NIST SP800-38A)
685cf514b2aSRobert Elliott
686f1f142adSRobert Elliottconfig CRYPTO_CTS
687f1f142adSRobert Elliott	tristate "CTS (Cipher Text Stealing)"
688cf514b2aSRobert Elliott	select CRYPTO_SKCIPHER
689f1f142adSRobert Elliott	select CRYPTO_MANAGER
690f1f142adSRobert Elliott	help
691f1f142adSRobert Elliott	  CBC-CS3 variant of CTS (Cipher Text Stealing) (NIST
692f1f142adSRobert Elliott	  Addendum to SP800-38A (October 2010))
693cf514b2aSRobert Elliott
694cf514b2aSRobert Elliott	  This mode is required for Kerberos gss mechanism support
695cf514b2aSRobert Elliott	  for AES encryption.
696cf514b2aSRobert Elliott
697cf514b2aSRobert Elliottconfig CRYPTO_ECB
698cf514b2aSRobert Elliott	tristate "ECB (Electronic Codebook)"
699cf514b2aSRobert Elliott	select CRYPTO_SKCIPHER2
700cf514b2aSRobert Elliott	select CRYPTO_MANAGER
701f1f142adSRobert Elliott	help
702f1f142adSRobert Elliott	  ECB (Electronic Codebook) mode (NIST SP800-38A)
703cf514b2aSRobert Elliott
70461c581a4SArd Biesheuvelconfig CRYPTO_HCTR2
705f1f142adSRobert Elliott	tristate "HCTR2"
706f1f142adSRobert Elliott	select CRYPTO_XCTR
707f1f142adSRobert Elliott	select CRYPTO_POLYVAL
708f1f142adSRobert Elliott	select CRYPTO_MANAGER
709cf514b2aSRobert Elliott	help
710cf514b2aSRobert Elliott	  HCTR2 length-preserving encryption mode
711cf514b2aSRobert Elliott
712f1f142adSRobert Elliott	  A mode for storage encryption that is efficient on processors with
713f1f142adSRobert Elliott	  instructions to accelerate AES and carryless multiplication, e.g.
714f1f142adSRobert Elliott	  x86 processors with AES-NI and CLMUL, and ARM processors with the
715f1f142adSRobert Elliott	  ARMv8 crypto extensions.
716f1f142adSRobert Elliott
717cf514b2aSRobert Elliott	  See https://eprint.iacr.org/2021/1441
718cf514b2aSRobert Elliott
719f1f142adSRobert Elliottconfig CRYPTO_LRW
720cf514b2aSRobert Elliott	tristate "LRW (Liskov Rivest Wagner)"
721f1f142adSRobert Elliott	select CRYPTO_LIB_GF128MUL
722f1f142adSRobert Elliott	select CRYPTO_SKCIPHER
723f1f142adSRobert Elliott	select CRYPTO_MANAGER
724cf514b2aSRobert Elliott	select CRYPTO_ECB
725cf514b2aSRobert Elliott	help
726cf514b2aSRobert Elliott	  LRW (Liskov Rivest Wagner) mode
727f1f142adSRobert Elliott
728f1f142adSRobert Elliott	  A tweakable, non malleable, non movable
729f1f142adSRobert Elliott	  narrow block cipher mode for dm-crypt.  Use it with cipher
730f1f142adSRobert Elliott	  specification string aes-lrw-benbi, the key must be 256, 320 or 384.
731f1f142adSRobert Elliott	  The first 128, 192 or 256 bits in the key are used for AES and the
732f1f142adSRobert Elliott	  rest is used to tie each cipher block to its logical position.
733cf514b2aSRobert Elliott
734cf514b2aSRobert Elliott	  See https://people.csail.mit.edu/rivest/pubs/LRW02.pdf
735cf514b2aSRobert Elliott
736cf514b2aSRobert Elliottconfig CRYPTO_PCBC
737cf514b2aSRobert Elliott	tristate "PCBC (Propagating Cipher Block Chaining)"
738f1f142adSRobert Elliott	select CRYPTO_SKCIPHER
739f1f142adSRobert Elliott	select CRYPTO_MANAGER
740f1f142adSRobert Elliott	help
741cf514b2aSRobert Elliott	  PCBC (Propagating Cipher Block Chaining) mode
742f1f142adSRobert Elliott
743f1f142adSRobert Elliott	  This block cipher mode is required for RxRPC.
744f1f142adSRobert Elliott
745f1f142adSRobert Elliottconfig CRYPTO_XCTR
746cf514b2aSRobert Elliott	tristate
747cf514b2aSRobert Elliott	select CRYPTO_SKCIPHER
748cf514b2aSRobert Elliott	select CRYPTO_MANAGER
749cf514b2aSRobert Elliott	help
750cf514b2aSRobert Elliott	  XCTR (XOR Counter) mode for HCTR2
751cf514b2aSRobert Elliott
752f1f142adSRobert Elliott	  This blockcipher mode is a variant of CTR mode using XORs and little-endian
753f1f142adSRobert Elliott	  addition rather than big-endian arithmetic.
754f1f142adSRobert Elliott
755f1f142adSRobert Elliott	  XCTR mode is used to implement HCTR2.
756f1f142adSRobert Elliott
757f1f142adSRobert Elliottconfig CRYPTO_XTS
758f1f142adSRobert Elliott	tristate "XTS (XOR Encrypt XOR with ciphertext stealing)"
759f1f142adSRobert Elliott	select CRYPTO_SKCIPHER
760f1f142adSRobert Elliott	select CRYPTO_MANAGER
761f1f142adSRobert Elliott	select CRYPTO_ECB
762f1f142adSRobert Elliott	help
763e3d2eaddSRobert Elliott	  XTS (XOR Encrypt XOR with ciphertext stealing) mode (NIST SP800-38E
764f1f142adSRobert Elliott	  and IEEE 1619)
765f1f142adSRobert Elliott
766f1f142adSRobert Elliott	  Use with aes-xts-plain, key size 256, 384 or 512 bits. This
767e3d2eaddSRobert Elliott	  implementation currently can't handle a sectorsize which is not a
768f1f142adSRobert Elliott	  multiple of 16 bytes.
769f1f142adSRobert Elliott
770e3d2eaddSRobert Elliottconfig CRYPTO_NHPOLY1305
771f1f142adSRobert Elliott	tristate
772f1f142adSRobert Elliott	select CRYPTO_HASH
773e3d2eaddSRobert Elliott	select CRYPTO_LIB_POLY1305_GENERIC
774e3d2eaddSRobert Elliott
775e3d2eaddSRobert Elliottendmenu
776e3d2eaddSRobert Elliott
777e3d2eaddSRobert Elliottmenu "AEAD (authenticated encryption with associated data) ciphers"
778f1f142adSRobert Elliott
779f1f142adSRobert Elliottconfig CRYPTO_AEGIS128
780e3d2eaddSRobert Elliott	tristate "AEGIS-128"
781f1f142adSRobert Elliott	select CRYPTO_AEAD
782f1f142adSRobert Elliott	select CRYPTO_AES  # for AES S-box tables
783a298765eSHerbert Xu	help
784f1f142adSRobert Elliott	  AEGIS-128 AEAD algorithm
785f1f142adSRobert Elliott
786e3d2eaddSRobert Elliottconfig CRYPTO_AEGIS128_SIMD
787e3d2eaddSRobert Elliott	bool "AEGIS-128 (arm NEON, arm64 NEON)"
788f1f142adSRobert Elliott	depends on CRYPTO_AEGIS128 && ((ARM || ARM64) && KERNEL_MODE_NEON)
789f1f142adSRobert Elliott	default y
790cf514b2aSRobert Elliott	help
791f1f142adSRobert Elliott	  AEGIS-128 AEAD algorithm
792f1f142adSRobert Elliott
793f1f142adSRobert Elliott	  Architecture: arm or arm64 using:
794f1f142adSRobert Elliott	  - NEON (Advanced SIMD) extension
795f1f142adSRobert Elliott
796e3d2eaddSRobert Elliottconfig CRYPTO_CHACHA20POLY1305
797e3d2eaddSRobert Elliott	tristate "ChaCha20-Poly1305"
798f1f142adSRobert Elliott	select CRYPTO_CHACHA20
799f1f142adSRobert Elliott	select CRYPTO_AEAD
800cf514b2aSRobert Elliott	select CRYPTO_LIB_POLY1305
801f1f142adSRobert Elliott	select CRYPTO_MANAGER
802f1f142adSRobert Elliott	help
803f1f142adSRobert Elliott	  ChaCha20 stream cipher and Poly1305 authenticator combined
804f1f142adSRobert Elliott	  mode (RFC8439)
805f1f142adSRobert Elliott
806e3d2eaddSRobert Elliottconfig CRYPTO_CCM
807e3d2eaddSRobert Elliott	tristate "CCM (Counter with Cipher Block Chaining-MAC)"
808e3d2eaddSRobert Elliott	select CRYPTO_CTR
809e3d2eaddSRobert Elliott	select CRYPTO_HASH
810f1f142adSRobert Elliott	select CRYPTO_AEAD
811ba51738fSHerbert Xu	select CRYPTO_MANAGER
812ba51738fSHerbert Xu	help
813ba51738fSHerbert Xu	  CCM (Counter with Cipher Block Chaining-Message Authentication Code)
814ba51738fSHerbert Xu	  authenticated encryption mode (NIST SP800-38C)
815ba51738fSHerbert Xu
816ba51738fSHerbert Xuconfig CRYPTO_GCM
817f1f142adSRobert Elliott	tristate "GCM (Galois/Counter Mode) and GMAC (GCM MAC)"
818f1f142adSRobert Elliott	select CRYPTO_CTR
819ba51738fSHerbert Xu	select CRYPTO_AEAD
820f1f142adSRobert Elliott	select CRYPTO_GHASH
821e3d2eaddSRobert Elliott	select CRYPTO_MANAGER
822e3d2eaddSRobert Elliott	help
823f1f142adSRobert Elliott	  GCM (Galois/Counter Mode) authenticated encryption mode and GMAC
824e3d2eaddSRobert Elliott	  (GCM Message Authentication Code) (NIST SP800-38D)
825e3d2eaddSRobert Elliott
826e3d2eaddSRobert Elliott	  This is required for IPSec ESP (XFRM_ESP).
827f1f142adSRobert Elliott
828f1f142adSRobert Elliottconfig CRYPTO_GENIV
829f1f142adSRobert Elliott	tristate
830ba51738fSHerbert Xu	select CRYPTO_AEAD
831f1f142adSRobert Elliott	select CRYPTO_MANAGER
832e3d2eaddSRobert Elliott	select CRYPTO_RNG_DEFAULT
833e3d2eaddSRobert Elliott
834f1f142adSRobert Elliottconfig CRYPTO_SEQIV
835f1f142adSRobert Elliott	tristate "Sequence Number IV Generator"
836f1f142adSRobert Elliott	select CRYPTO_GENIV
837f1f142adSRobert Elliott	help
838f1f142adSRobert Elliott	  Sequence Number IV generator
839e3d2eaddSRobert Elliott
840f1f142adSRobert Elliott	  This IV generator generates an IV based on a sequence number by
841f1f142adSRobert Elliott	  xoring it with a salt.  This algorithm is mainly useful for CTR.
842e3d2eaddSRobert Elliott
843e3d2eaddSRobert Elliott	  This is required for IPsec ESP (XFRM_ESP).
844e3d2eaddSRobert Elliott
845f1f142adSRobert Elliottconfig CRYPTO_ECHAINIV
846f1f142adSRobert Elliott	tristate "Encrypted Chain IV Generator"
847f1f142adSRobert Elliott	select CRYPTO_GENIV
848f1f142adSRobert Elliott	help
849f1f142adSRobert Elliott	  Encrypted Chain IV generator
850f1f142adSRobert Elliott
851f1f142adSRobert Elliott	  This IV generator generates an IV based on the encryption of
852f1f142adSRobert Elliott	  a sequence number xored with a salt.  This is the default
853f1f142adSRobert Elliott	  algorithm for CBC.
854f1f142adSRobert Elliott
855f1f142adSRobert Elliottconfig CRYPTO_ESSIV
856f1f142adSRobert Elliott	tristate "Encrypted Salt-Sector IV Generator"
857f1f142adSRobert Elliott	select CRYPTO_AUTHENC
858f1f142adSRobert Elliott	help
859f1f142adSRobert Elliott	  Encrypted Salt-Sector IV generator
860f1f142adSRobert Elliott
861f1f142adSRobert Elliott	  This IV generator is used in some cases by fscrypt and/or
862f1f142adSRobert Elliott	  dm-crypt. It uses the hash of the block encryption key as the
863f1f142adSRobert Elliott	  symmetric key for a block encryption pass applied to the input
864f1f142adSRobert Elliott	  IV, making low entropy IV sources more suitable for block
865f1f142adSRobert Elliott	  encryption.
866f1f142adSRobert Elliott
867f1f142adSRobert Elliott	  This driver implements a crypto API template that can be
868f1f142adSRobert Elliott	  instantiated either as an skcipher or as an AEAD (depending on the
869f1f142adSRobert Elliott	  type of the first template argument), and which defers encryption
870f1f142adSRobert Elliott	  and decryption requests to the encapsulated cipher after applying
871f1f142adSRobert Elliott	  ESSIV to the input IV. Note that in the AEAD case, it is assumed
8723f342a23SRobert Elliott	  that the keys are presented in the same format used by the authenc
873f1f142adSRobert Elliott	  template, and that the IV appears at the end of the authenticated
874f1f142adSRobert Elliott	  associated data (AAD) region (which is how dm-crypt uses it.)
8753f342a23SRobert Elliott
8763f342a23SRobert Elliott	  Note that the use of ESSIV is not recommended for new deployments,
8773f342a23SRobert Elliott	  and so this only needs to be enabled when interoperability with
8783f342a23SRobert Elliott	  existing encrypted volumes of filesystems is required, or when
879f1f142adSRobert Elliott	  building for a particular system that requires it (e.g., when
880f1f142adSRobert Elliott	  the SoC in question has accelerated CBC but not XTS, making CBC
881f1f142adSRobert Elliott	  combined with ESSIV the only feasible mode for h/w accelerated
882f1f142adSRobert Elliott	  block encryption)
883f1f142adSRobert Elliott
884f1f142adSRobert Elliottendmenu
885f1f142adSRobert Elliott
8863f342a23SRobert Elliottmenu "Hashes, digests, and MACs"
8873f342a23SRobert Elliott
8883f342a23SRobert Elliottconfig CRYPTO_BLAKE2B
8893f342a23SRobert Elliott	tristate "BLAKE2b"
890f1f142adSRobert Elliott	select CRYPTO_HASH
8913f342a23SRobert Elliott	help
892f1f142adSRobert Elliott	  BLAKE2b cryptographic hash function (RFC 7693)
893f1f142adSRobert Elliott
894f1f142adSRobert Elliott	  BLAKE2b is optimized for 64-bit platforms and can produce digests
8953f342a23SRobert Elliott	  of any size between 1 and 64 bytes. The keyed hash is also implemented.
8963f342a23SRobert Elliott
897f1f142adSRobert Elliott	  This module provides the following algorithms:
898f1f142adSRobert Elliott	  - blake2b-160
8993f342a23SRobert Elliott	  - blake2b-256
900f1f142adSRobert Elliott	  - blake2b-384
90161c581a4SArd Biesheuvel	  - blake2b-512
902f1f142adSRobert Elliott
9033f342a23SRobert Elliott	  Used by the btrfs filesystem.
904f1f142adSRobert Elliott
905f1f142adSRobert Elliott	  See https://blake2.net for further information.
9063f342a23SRobert Elliott
907f1f142adSRobert Elliottconfig CRYPTO_CMAC
908f1f142adSRobert Elliott	tristate "CMAC (Cipher-based MAC)"
909f1f142adSRobert Elliott	select CRYPTO_HASH
9103f342a23SRobert Elliott	select CRYPTO_MANAGER
9113f342a23SRobert Elliott	help
9123f342a23SRobert Elliott	  CMAC (Cipher-based Message Authentication Code) authentication
9133f342a23SRobert Elliott	  mode (NIST SP800-38B and IETF RFC4493)
914f1f142adSRobert Elliott
915f1f142adSRobert Elliottconfig CRYPTO_GHASH
9163f342a23SRobert Elliott	tristate "GHASH"
917f1f142adSRobert Elliott	select CRYPTO_HASH
918f1f142adSRobert Elliott	select CRYPTO_LIB_GF128MUL
9193f342a23SRobert Elliott	help
920f1f142adSRobert Elliott	  GCM GHASH function (NIST SP800-38D)
921f1f142adSRobert Elliott
9223f342a23SRobert Elliottconfig CRYPTO_HMAC
923f1f142adSRobert Elliott	tristate "HMAC (Keyed-Hash MAC)"
924f1f142adSRobert Elliott	select CRYPTO_HASH
9253f342a23SRobert Elliott	select CRYPTO_MANAGER
926f1f142adSRobert Elliott	help
927f1f142adSRobert Elliott	  HMAC (Keyed-Hash Message Authentication Code) (FIPS 198 and
9283f342a23SRobert Elliott	  RFC2104)
929f1f142adSRobert Elliott
930f1f142adSRobert Elliott	  This is required for IPsec AH (XFRM_AH) and IPsec ESP (XFRM_ESP).
9313f342a23SRobert Elliott
9323f342a23SRobert Elliottconfig CRYPTO_MD4
9333f342a23SRobert Elliott	tristate "MD4"
9343f342a23SRobert Elliott	select CRYPTO_HASH
9353f342a23SRobert Elliott	help
9363f342a23SRobert Elliott	  MD4 message digest algorithm (RFC1320)
9373f342a23SRobert Elliott
938f1f142adSRobert Elliottconfig CRYPTO_MD5
939f1f142adSRobert Elliott	tristate "MD5"
940f1f142adSRobert Elliott	select CRYPTO_HASH
941f1f142adSRobert Elliott	help
94261c581a4SArd Biesheuvel	  MD5 message digest algorithm (RFC1321)
943f1f142adSRobert Elliott
9443f342a23SRobert Elliottconfig CRYPTO_MICHAEL_MIC
9453f342a23SRobert Elliott	tristate "Michael MIC"
9463f342a23SRobert Elliott	select CRYPTO_HASH
947f1f142adSRobert Elliott	help
948f1f142adSRobert Elliott	  Michael MIC (Message Integrity Code) (IEEE 802.11i)
949f1f142adSRobert Elliott
9503f342a23SRobert Elliott	  Defined by the IEEE 802.11i TKIP (Temporal Key Integrity Protocol),
951f1f142adSRobert Elliott	  known as WPA (Wif-Fi Protected Access).
952f1f142adSRobert Elliott
9533f342a23SRobert Elliott	  This algorithm is required for TKIP, but it should not be used for
954f1f142adSRobert Elliott	  other purposes because of the weakness of the algorithm.
955f1f142adSRobert Elliott
956f1f142adSRobert Elliottconfig CRYPTO_POLYVAL
957f1f142adSRobert Elliott	tristate
958f1f142adSRobert Elliott	select CRYPTO_HASH
959f1f142adSRobert Elliott	select CRYPTO_LIB_GF128MUL
9603f342a23SRobert Elliott	help
961f1f142adSRobert Elliott	  POLYVAL hash function for HCTR2
962f1f142adSRobert Elliott
963f1f142adSRobert Elliott	  This is used in HCTR2.  It is not a general-purpose
9643f342a23SRobert Elliott	  cryptographic hash function.
9653f342a23SRobert Elliott
966f1f142adSRobert Elliottconfig CRYPTO_RMD160
967f1f142adSRobert Elliott	tristate "RIPEMD-160"
9683f342a23SRobert Elliott	select CRYPTO_HASH
969f1f142adSRobert Elliott	help
970f1f142adSRobert Elliott	  RIPEMD-160 hash function (ISO/IEC 10118-3)
971f1f142adSRobert Elliott
9723f342a23SRobert Elliott	  RIPEMD-160 is a 160-bit cryptographic hash function. It is intended
973f1f142adSRobert Elliott	  to be used as a secure replacement for the 128-bit hash functions
974f1f142adSRobert Elliott	  MD4, MD5 and its predecessor RIPEMD
9753f342a23SRobert Elliott	  (not to be confused with RIPEMD-128).
976f1f142adSRobert Elliott
977f1f142adSRobert Elliott	  Its speed is comparable to SHA-1 and there are no known attacks
978950e5c84SEric Biggers	  against RIPEMD-160.
979f1f142adSRobert Elliott
9803f342a23SRobert Elliott	  Developed by Hans Dobbertin, Antoon Bosselaers and Bart Preneel.
981f1f142adSRobert Elliott	  See https://homes.esat.kuleuven.be/~bosselae/ripemd160.html
9823f342a23SRobert Elliott	  for further information.
9833f342a23SRobert Elliott
984f1f142adSRobert Elliottconfig CRYPTO_SHA1
985f1f142adSRobert Elliott	tristate "SHA-1"
9863f342a23SRobert Elliott	select CRYPTO_HASH
987f1f142adSRobert Elliott	select CRYPTO_LIB_SHA1
988f1f142adSRobert Elliott	help
9893f342a23SRobert Elliott	  SHA-1 secure hash algorithm (FIPS 180, ISO/IEC 10118-3), including
990f1f142adSRobert Elliott	  HMAC support.
991f1f142adSRobert Elliott
9923f342a23SRobert Elliottconfig CRYPTO_SHA256
993f1f142adSRobert Elliott	tristate "SHA-224 and SHA-256"
994f1f142adSRobert Elliott	select CRYPTO_HASH
9953f342a23SRobert Elliott	select CRYPTO_LIB_SHA256
996f1f142adSRobert Elliott	help
997f1f142adSRobert Elliott	  SHA-224 and SHA-256 secure hash algorithms (FIPS 180, ISO/IEC
9983f342a23SRobert Elliott	  10118-3), including HMAC support.
999f1f142adSRobert Elliott
1000f4065b2fSHerbert Xu	  This is required for IPsec AH (XFRM_AH) and IPsec ESP (XFRM_ESP).
1001f1f142adSRobert Elliott	  Used by the btrfs filesystem, Ceph, NFS, and SMB.
10023f342a23SRobert Elliott
10033f342a23SRobert Elliottconfig CRYPTO_SHA512
10043f342a23SRobert Elliott	tristate "SHA-384 and SHA-512"
1005f1f142adSRobert Elliott	select CRYPTO_HASH
1006f1f142adSRobert Elliott	select CRYPTO_LIB_SHA512
1007f1f142adSRobert Elliott	help
1008f1f142adSRobert Elliott	  SHA-384 and SHA-512 secure hash algorithms (FIPS 180, ISO/IEC
1009f1f142adSRobert Elliott	  10118-3), including HMAC support.
1010f1f142adSRobert Elliott
10113f342a23SRobert Elliottconfig CRYPTO_SHA3
1012f1f142adSRobert Elliott	tristate "SHA-3"
1013f1f142adSRobert Elliott	select CRYPTO_HASH
10143f342a23SRobert Elliott	help
10153f342a23SRobert Elliott	  SHA-3 secure hash algorithms (FIPS 202, ISO/IEC 10118-3)
10163f342a23SRobert Elliott
10173f342a23SRobert Elliottconfig CRYPTO_SM3_GENERIC
10183f342a23SRobert Elliott	tristate "SM3 (ShangMi 3)"
1019f1f142adSRobert Elliott	select CRYPTO_HASH
1020f1f142adSRobert Elliott	select CRYPTO_LIB_SM3
1021f1f142adSRobert Elliott	help
1022f1f142adSRobert Elliott	  SM3 (ShangMi 3) secure hash function (OSCCA GM/T 0004-2012, ISO/IEC 10118-3)
1023f1f142adSRobert Elliott
1024f1f142adSRobert Elliott	  This is part of the Chinese Commercial Cryptography suite.
10253f342a23SRobert Elliott
1026f1f142adSRobert Elliott	  References:
1027f1f142adSRobert Elliott	  http://www.oscca.gov.cn/UpFile/20101222141857786.pdf
10283f342a23SRobert Elliott	  https://datatracker.ietf.org/doc/html/draft-shen-sm3-hash
10293f342a23SRobert Elliott
10303f342a23SRobert Elliottconfig CRYPTO_STREEBOG
1031f1f142adSRobert Elliott	tristate "Streebog"
1032f1f142adSRobert Elliott	select CRYPTO_HASH
1033f1f142adSRobert Elliott	help
10343f342a23SRobert Elliott	  Streebog Hash Function (GOST R 34.11-2012, RFC 6986, ISO/IEC 10118-3)
10353f342a23SRobert Elliott
1036f1f142adSRobert Elliott	  This is one of the Russian cryptographic standard algorithms (called
1037f1f142adSRobert Elliott	  GOST algorithms). This setting enables two hash algorithms with
10383f342a23SRobert Elliott	  256 and 512 bits output.
1039f1f142adSRobert Elliott
1040f1f142adSRobert Elliott	  References:
1041f1f142adSRobert Elliott	  https://tc26.ru/upload/iblock/fed/feddbb4d26b685903faa2ba11aea43f6.pdf
10423f342a23SRobert Elliott	  https://tools.ietf.org/html/rfc6986
10433f342a23SRobert Elliott
1044f1f142adSRobert Elliottconfig CRYPTO_WP512
1045f1f142adSRobert Elliott	tristate "Whirlpool"
10463f342a23SRobert Elliott	select CRYPTO_HASH
1047f1f142adSRobert Elliott	help
1048f1f142adSRobert Elliott	  Whirlpool hash function (ISO/IEC 10118-3)
1049f1f142adSRobert Elliott
10503f342a23SRobert Elliott	  512, 384 and 256-bit hashes.
10513f342a23SRobert Elliott
10523f342a23SRobert Elliott	  Whirlpool-512 is part of the NESSIE cryptographic primitives.
10533f342a23SRobert Elliott
10543f342a23SRobert Elliott	  See https://web.archive.org/web/20171129084214/http://www.larc.usp.br/~pbarreto/WhirlpoolPage.html
1055f1f142adSRobert Elliott	  for further information.
1056f1f142adSRobert Elliott
1057f1f142adSRobert Elliottconfig CRYPTO_XCBC
1058f1f142adSRobert Elliott	tristate "XCBC-MAC (Extended Cipher Block Chaining MAC)"
1059f1f142adSRobert Elliott	select CRYPTO_HASH
1060f1f142adSRobert Elliott	select CRYPTO_MANAGER
1061ec84348dSRobert Elliott	help
1062f1f142adSRobert Elliott	  XCBC-MAC (Extended Cipher Block Chaining Message Authentication
1063f1f142adSRobert Elliott	  Code) (RFC3566)
1064f1f142adSRobert Elliott
1065ec84348dSRobert Elliottconfig CRYPTO_XXHASH
1066ec84348dSRobert Elliott	tristate "xxHash"
1067ec84348dSRobert Elliott	select CRYPTO_HASH
1068ec84348dSRobert Elliott	select XXHASH
1069ec84348dSRobert Elliott	help
1070ec84348dSRobert Elliott	  xxHash non-cryptographic hash algorithm
1071ec84348dSRobert Elliott
1072ec84348dSRobert Elliott	  Extremely fast, working at speeds close to RAM limits.
1073ec84348dSRobert Elliott
1074f1f142adSRobert Elliott	  Used by the btrfs filesystem.
1075f1f142adSRobert Elliott
1076ec84348dSRobert Elliottendmenu
1077f1f142adSRobert Elliott
1078f1f142adSRobert Elliottmenu "CRCs (cyclic redundancy checks)"
1079f1f142adSRobert Elliott
1080ec84348dSRobert Elliottconfig CRYPTO_CRC32C
1081ec84348dSRobert Elliott	tristate "CRC32c"
1082ec84348dSRobert Elliott	select CRYPTO_HASH
1083f1f142adSRobert Elliott	select CRC32
1084f1f142adSRobert Elliott	help
1085f1f142adSRobert Elliott	  CRC32c CRC algorithm with the iSCSI polynomial (RFC 3385 and RFC 3720)
1086f1f142adSRobert Elliott
1087584fffc8SSebastian Siewior	  A 32-bit CRC (cyclic redundancy check) with a polynomial defined
10881da177e4SLinus Torvalds	  by G. Castagnoli, S. Braeuer and M. Herrman in "Optimization of Cyclic
1089a9a98d49SRobert Elliott	  Redundancy-Check Codes with 24 and 32 Parity Bits", IEEE Transactions
1090cce9e06dSHerbert Xu	  on Communications, Vol. 41, No. 6, June 1993, selected for use with
1091f6ded09dSGiovanni Cabiddu	  iSCSI.
10921da177e4SLinus Torvalds
10931da177e4SLinus Torvalds	  Used by btrfs, ext4, jbd2, NVMeoF/TCP, and iSCSI.
10941da177e4SLinus Torvalds
1095a9a98d49SRobert Elliottconfig CRYPTO_CRC32
10961da177e4SLinus Torvalds	tristate "CRC32"
1097a9a98d49SRobert Elliott	select CRYPTO_HASH
10981da177e4SLinus Torvalds	select CRC32
10990b77abb3SZoltan Sogor	help
1100a9a98d49SRobert Elliott	  CRC32 CRC algorithm (IEEE 802.3)
11010b77abb3SZoltan Sogor
1102ac9d2c4bSGiovanni Cabiddu	  Used by RoCEv2 and f2fs.
11030b77abb3SZoltan Sogor
11040b77abb3SZoltan Sogorendmenu
11050b77abb3SZoltan Sogor
1106a9a98d49SRobert Elliottmenu "Compression"
1107a9a98d49SRobert Elliott
1108a9a98d49SRobert Elliottconfig CRYPTO_DEFLATE
11090b77abb3SZoltan Sogor	tristate "Deflate"
111035a1fc18SSeth Jennings	select CRYPTO_ALGAPI
1111a9a98d49SRobert Elliott	select CRYPTO_ACOMP2
11122062c5b6SDan Streetman	select ZLIB_INFLATE
11136a8de3aeSGiovanni Cabiddu	select ZLIB_DEFLATE
11142062c5b6SDan Streetman	help
11152062c5b6SDan Streetman	  Deflate compression algorithm (RFC1951)
111635a1fc18SSeth Jennings
1117a9a98d49SRobert Elliott	  Used by IPSec with the IPCOMP protocol (RFC3173, RFC2394)
1118a9a98d49SRobert Elliott
1119a9a98d49SRobert Elliottconfig CRYPTO_LZO
112035a1fc18SSeth Jennings	tristate "LZO"
11210ea8530dSChanho Min	select CRYPTO_ALGAPI
1122a9a98d49SRobert Elliott	select CRYPTO_ACOMP2
11230ea8530dSChanho Min	select LZO_COMPRESS
11248cd9330eSGiovanni Cabiddu	select LZO_DECOMPRESS
11250ea8530dSChanho Min	help
11260ea8530dSChanho Min	  LZO compression algorithm
11270ea8530dSChanho Min
1128a9a98d49SRobert Elliott	  See https://www.oberhumer.com/opensource/lzo/ for further information.
1129a9a98d49SRobert Elliott
1130a9a98d49SRobert Elliottconfig CRYPTO_842
11310ea8530dSChanho Min	tristate "842"
11320ea8530dSChanho Min	select CRYPTO_ALGAPI
1133a9a98d49SRobert Elliott	select CRYPTO_ACOMP2
11340ea8530dSChanho Min	select 842_COMPRESS
113591d53d96SGiovanni Cabiddu	select 842_DECOMPRESS
11360ea8530dSChanho Min	help
11370ea8530dSChanho Min	  842 compression algorithm by IBM
11380ea8530dSChanho Min
1139a9a98d49SRobert Elliott	  See https://github.com/plauth/lib842 for further information.
1140a9a98d49SRobert Elliott
1141a9a98d49SRobert Elliottconfig CRYPTO_LZ4
11420ea8530dSChanho Min	tristate "LZ4"
1143d28fc3dbSNick Terrell	select CRYPTO_ALGAPI
1144a9a98d49SRobert Elliott	select CRYPTO_ACOMP2
1145d28fc3dbSNick Terrell	select LZ4_COMPRESS
1146d28fc3dbSNick Terrell	select LZ4_DECOMPRESS
1147d28fc3dbSNick Terrell	help
1148d28fc3dbSNick Terrell	  LZ4 compression algorithm
1149d28fc3dbSNick Terrell
1150a9a98d49SRobert Elliott	  See https://github.com/lz4/lz4 for further information.
1151a9a98d49SRobert Elliott
1152a9a98d49SRobert Elliottconfig CRYPTO_LZ4HC
1153d28fc3dbSNick Terrell	tristate "LZ4HC"
1154f1f142adSRobert Elliott	select CRYPTO_ALGAPI
1155f1f142adSRobert Elliott	select CRYPTO_ACOMP2
1156f1f142adSRobert Elliott	select LZ4HC_COMPRESS
115717f0f4a4SNeil Horman	select LZ4_DECOMPRESS
115817f0f4a4SNeil Horman	help
1159a9a98d49SRobert Elliott	  LZ4 high compression mode algorithm
116017f0f4a4SNeil Horman
116117f0f4a4SNeil Horman	  See https://github.com/lz4/lz4 for further information.
116217f0f4a4SNeil Horman
1163a9a98d49SRobert Elliottconfig CRYPTO_ZSTD
1164a9a98d49SRobert Elliott	tristate "Zstd"
1165a9a98d49SRobert Elliott	select CRYPTO_ALGAPI
1166a9a98d49SRobert Elliott	select CRYPTO_ACOMP2
1167a9a98d49SRobert Elliott	select ZSTD_COMPRESS
116817f0f4a4SNeil Horman	select ZSTD_DECOMPRESS
1169f2c89a10SHerbert Xu	help
1170a9a98d49SRobert Elliott	  zstd compression algorithm
1171419090c6SStephan Mueller
1172a9a98d49SRobert Elliott	  See https://github.com/facebook/zstd for further information.
1173a9a98d49SRobert Elliott
1174a9a98d49SRobert Elliottendmenu
1175419090c6SStephan Mueller
1176f2c89a10SHerbert Xumenu "Random number generation"
1177419090c6SStephan Mueller
1178419090c6SStephan Muellerconfig CRYPTO_ANSI_CPRNG
1179401e4238SHerbert Xu	tristate "ANSI PRNG (Pseudo Random Number Generator)"
1180419090c6SStephan Mueller	select CRYPTO_AES
1181419090c6SStephan Mueller	select CRYPTO_RNG
11825261cdf4SStephan Mueller	help
1183419090c6SStephan Mueller	  Pseudo RNG (random number generator) (ANSI X9.31 Appendix A.2.4)
1184419090c6SStephan Mueller
1185a9a98d49SRobert Elliott	  This uses the AES cipher algorithm.
1186826775bbSHerbert Xu
1187419090c6SStephan Mueller	  Note that this option must be enabled if CRYPTO_FIPS is selected
1188a9a98d49SRobert Elliott
1189a9a98d49SRobert Elliottmenuconfig CRYPTO_DRBG_MENU
1190a9a98d49SRobert Elliott	tristate "NIST SP800-90A DRBG (Deterministic Random Bit Generator)"
1191419090c6SStephan Mueller	help
1192419090c6SStephan Mueller	  DRBG (Deterministic Random Bit Generator) (NIST SP800-90A)
1193a9a98d49SRobert Elliott
1194419090c6SStephan Mueller	  In the following submenu, one or more of the DRBG types must be selected.
1195d6fc1a45SCorentin Labbe
1196419090c6SStephan Muellerif CRYPTO_DRBG_MENU
1197a9a98d49SRobert Elliott
1198a9a98d49SRobert Elliottconfig CRYPTO_DRBG_HMAC
1199a9a98d49SRobert Elliott	bool
1200419090c6SStephan Mueller	default y
1201f2c89a10SHerbert Xu	select CRYPTO_HMAC
1202f2c89a10SHerbert Xu	select CRYPTO_SHA512
1203401e4238SHerbert Xu
1204f2c89a10SHerbert Xuconfig CRYPTO_DRBG_HASH
1205bb5530e4SStephan Mueller	bool "Hash_DRBG"
1206f2c89a10SHerbert Xu	select CRYPTO_SHA256
1207f2c89a10SHerbert Xu	help
1208419090c6SStephan Mueller	  Hash_DRBG variant as defined in NIST SP800-90A.
1209bb5530e4SStephan Mueller
1210a9a98d49SRobert Elliott	  This uses the SHA-1, SHA-256, SHA-384, or SHA-512 hash algorithms.
12112f313e02SArnd Bergmann
1212bb897c55SStephan Müllerconfig CRYPTO_DRBG_CTR
1213bb5530e4SStephan Mueller	bool "CTR_DRBG"
1214a9a98d49SRobert Elliott	select CRYPTO_AES
1215a9a98d49SRobert Elliott	select CRYPTO_CTR
1216a9a98d49SRobert Elliott	help
1217a9a98d49SRobert Elliott	  CTR_DRBG variant as defined in NIST SP800-90A.
1218e63df1ecSRandy Dunlap
1219a9a98d49SRobert Elliott	  This uses the AES cipher algorithm with the counter block mode.
1220e63df1ecSRandy Dunlap
1221a9a98d49SRobert Elliottconfig CRYPTO_DRBG
1222e63df1ecSRandy Dunlap	tristate
1223bb5530e4SStephan Mueller	default CRYPTO_DRBG_MENU
1224e7ed6473SHerbert Xu	select CRYPTO_RNG
1225e7ed6473SHerbert Xu	select CRYPTO_JITTERENTROPY
1226e7ed6473SHerbert Xu
122759bcfd78SStephan Müllerendif	# if CRYPTO_DRBG_MENU
122859bcfd78SStephan Müller
122959bcfd78SStephan Müllerconfig CRYPTO_JITTERENTROPY
123059bcfd78SStephan Müller	tristate "CPU Jitter Non-Deterministic RNG (Random Number Generator)"
123159bcfd78SStephan Müller	select CRYPTO_RNG
123259bcfd78SStephan Müller	select CRYPTO_SHA3
123359bcfd78SStephan Müller	help
123459bcfd78SStephan Müller	  CPU Jitter RNG (Random Number Generator) from the Jitterentropy library
123559bcfd78SStephan Müller
123659bcfd78SStephan Müller	  A non-physical non-deterministic ("true") RNG (e.g., an entropy source
123759bcfd78SStephan Müller	  compliant with NIST SP800-90B) intended to provide a seed to a
123859bcfd78SStephan Müller	  deterministic RNG (e.g., per NIST SP800-90C).
123959bcfd78SStephan Müller	  This RNG does not perform any cryptographic whitening of the generated
124059bcfd78SStephan Müller	  random numbers.
124159bcfd78SStephan Müller
124259bcfd78SStephan Müller	  See https://www.chronox.de/jent/
124359bcfd78SStephan Müller
124459bcfd78SStephan Müllerif CRYPTO_JITTERENTROPY
124559bcfd78SStephan Müllerif CRYPTO_FIPS && EXPERT
124659bcfd78SStephan Müller
124759bcfd78SStephan Müllerchoice
124859bcfd78SStephan Müller	prompt "CPU Jitter RNG Memory Size"
124959bcfd78SStephan Müller	default CRYPTO_JITTERENTROPY_MEMSIZE_2
125059bcfd78SStephan Müller	help
125159bcfd78SStephan Müller	  The Jitter RNG measures the execution time of memory accesses.
125259bcfd78SStephan Müller	  Multiple consecutive memory accesses are performed. If the memory
125359bcfd78SStephan Müller	  size fits into a cache (e.g. L1), only the memory access timing
125459bcfd78SStephan Müller	  to that cache is measured. The closer the cache is to the CPU
125559bcfd78SStephan Müller	  the less variations are measured and thus the less entropy is
125659bcfd78SStephan Müller	  obtained. Thus, if the memory size fits into the L1 cache, the
125759bcfd78SStephan Müller	  obtained entropy is less than if the memory size fits within
125859bcfd78SStephan Müller	  L1 + L2, which in turn is less if the memory fits into
125959bcfd78SStephan Müller	  L1 + L2 + L3. Thus, by selecting a different memory size,
126059bcfd78SStephan Müller	  the entropy rate produced by the Jitter RNG can be modified.
126159bcfd78SStephan Müller
126259bcfd78SStephan Müller	config CRYPTO_JITTERENTROPY_MEMSIZE_2
126359bcfd78SStephan Müller		bool "2048 Bytes (default)"
126459bcfd78SStephan Müller
126559bcfd78SStephan Müller	config CRYPTO_JITTERENTROPY_MEMSIZE_128
126659bcfd78SStephan Müller		bool "128 kBytes"
126759bcfd78SStephan Müller
126859bcfd78SStephan Müller	config CRYPTO_JITTERENTROPY_MEMSIZE_1024
12690baa8fabSStephan Müller		bool "1024 kBytes"
12700baa8fabSStephan Müller
12710baa8fabSStephan Müller	config CRYPTO_JITTERENTROPY_MEMSIZE_8192
127295a798d2SStephan Mueller		bool "8192 kBytes"
12730baa8fabSStephan Müllerendchoice
12740baa8fabSStephan Müller
12750baa8fabSStephan Müllerconfig CRYPTO_JITTERENTROPY_MEMORY_BLOCKS
12760baa8fabSStephan Müller	int
12770baa8fabSStephan Müller	default 64 if CRYPTO_JITTERENTROPY_MEMSIZE_2
12780baa8fabSStephan Müller	default 512 if CRYPTO_JITTERENTROPY_MEMSIZE_128
12790baa8fabSStephan Müller	default 1024 if CRYPTO_JITTERENTROPY_MEMSIZE_1024
12800baa8fabSStephan Müller	default 4096 if CRYPTO_JITTERENTROPY_MEMSIZE_8192
12810baa8fabSStephan Müller
12820baa8fabSStephan Müllerconfig CRYPTO_JITTERENTROPY_MEMORY_BLOCKSIZE
12830baa8fabSStephan Müller	int
12840baa8fabSStephan Müller	default 32 if CRYPTO_JITTERENTROPY_MEMSIZE_2
128569f1c387SStephan Müller	default 256 if CRYPTO_JITTERENTROPY_MEMSIZE_128
128669f1c387SStephan Müller	default 1024 if CRYPTO_JITTERENTROPY_MEMSIZE_1024
128769f1c387SStephan Müller	default 2048 if CRYPTO_JITTERENTROPY_MEMSIZE_8192
128869f1c387SStephan Müller
128969f1c387SStephan Müllerconfig CRYPTO_JITTERENTROPY_OSR
129069f1c387SStephan Müller	int "CPU Jitter RNG Oversampling Rate"
129169f1c387SStephan Müller	range 1 15
129269f1c387SStephan Müller	default 3
129369f1c387SStephan Müller	help
129469f1c387SStephan Müller	  The Jitter RNG allows the specification of an oversampling rate (OSR).
129569f1c387SStephan Müller	  The Jitter RNG operation requires a fixed amount of timing
129669f1c387SStephan Müller	  measurements to produce one output block of random numbers. The
129769f1c387SStephan Müller	  OSR value is multiplied with the amount of timing measurements to
129869f1c387SStephan Müller	  generate one output block. Thus, the timing measurement is oversampled
129969f1c387SStephan Müller	  by the OSR factor. The oversampling allows the Jitter RNG to operate
130069f1c387SStephan Müller	  on hardware whose timers deliver limited amount of entropy (e.g.
130169f1c387SStephan Müller	  the timer is coarse) by setting the OSR to a higher value. The
130269f1c387SStephan Müller	  trade-off, however, is that the Jitter RNG now requires more time
130369f1c387SStephan Müller	  to generate random numbers.
1304e7ed6473SHerbert Xu
1305e7ed6473SHerbert Xuconfig CRYPTO_JITTERENTROPY_TESTINTERFACE
1306e7ed6473SHerbert Xu	bool "CPU Jitter RNG Test Interface"
1307e7ed6473SHerbert Xu	help
1308e7ed6473SHerbert Xu	  The test interface allows a privileged process to capture
1309e7ed6473SHerbert Xu	  the raw unconditioned high resolution time stamp noise that
1310e7ed6473SHerbert Xu	  is collected by the Jitter RNG for statistical analysis. As
1311e7ed6473SHerbert Xu	  this data is used at the same time to generate random bits,
1312e7ed6473SHerbert Xu	  the Jitter RNG operates in an insecure mode as long as the
1313e7ed6473SHerbert Xu	  recording is enabled. This interface therefore is only
1314e7ed6473SHerbert Xu	  intended for testing purposes and is not suitable for
1315e7ed6473SHerbert Xu	  production systems.
1316e7ed6473SHerbert Xu
1317e7ed6473SHerbert Xu	  The raw noise data can be obtained using the jent_raw_hires
1318e7ed6473SHerbert Xu	  debugfs file. Using the option
1319e7ed6473SHerbert Xu	  jitterentropy_testing.boot_raw_hires_test=1 the raw noise of
1320e7ed6473SHerbert Xu	  the first 1000 entropy events since boot can be sampled.
1321e7ed6473SHerbert Xu
1322e7ed6473SHerbert Xu	  If unsure, select N.
1323e7ed6473SHerbert Xu
1324e7ed6473SHerbert Xuendif	# if CRYPTO_FIPS && EXPERT
1325e7ed6473SHerbert Xu
1326026a733eSStephan Müllerif !(CRYPTO_FIPS && EXPERT)
1327026a733eSStephan Müller
1328a88592ccSHerbert Xuconfig CRYPTO_JITTERENTROPY_MEMORY_BLOCKS
1329304b4aceSStephan Müller	int
1330026a733eSStephan Müller	default 64
1331f1f142adSRobert Elliott
13329bc51715SRobert Elliottconfig CRYPTO_JITTERENTROPY_MEMORY_BLOCKSIZE
1333f1f142adSRobert Elliott	int
133403c8efc1SHerbert Xu	default 32
133503c8efc1SHerbert Xu
133603c8efc1SHerbert Xuconfig CRYPTO_JITTERENTROPY_OSR
1337fe869cdbSHerbert Xu	int
13389bc51715SRobert Elliott	default 1
13397451708fSHerbert Xu
1340fe869cdbSHerbert Xuconfig CRYPTO_JITTERENTROPY_TESTINTERFACE
1341fe869cdbSHerbert Xu	bool
1342fe869cdbSHerbert Xu
13439bc51715SRobert Elliottendif	# if !(CRYPTO_FIPS && EXPERT)
13449bc51715SRobert Elliottendif	# if CRYPTO_JITTERENTROPY
13459bc51715SRobert Elliott
13469bc51715SRobert Elliottconfig CRYPTO_KDF800108_CTR
1347fe869cdbSHerbert Xu	tristate
13488ff59090SHerbert Xu	select CRYPTO_HMAC
13499bc51715SRobert Elliott	select CRYPTO_SHA256
13507451708fSHerbert Xu
1351b95bba5dSEric Biggersendmenu
13528ff59090SHerbert Xumenu "Userspace interface"
13538ff59090SHerbert Xu
13549bc51715SRobert Elliottconfig CRYPTO_USER_API
13559bc51715SRobert Elliott	tristate
13569bc51715SRobert Elliott
13579bc51715SRobert Elliottconfig CRYPTO_USER_API_HASH
13588ff59090SHerbert Xu	tristate "Hash algorithms"
13592f375538SStephan Mueller	depends on NET
13609bc51715SRobert Elliott	select CRYPTO_HASH
13612f375538SStephan Mueller	select CRYPTO_USER_API
13622f375538SStephan Mueller	help
13632f375538SStephan Mueller	  Enable the userspace interface for hash algorithms.
13642f375538SStephan Mueller
13659bc51715SRobert Elliott	  See Documentation/crypto/userspace-if.rst and
13669bc51715SRobert Elliott	  https://www.chronox.de/libkcapi/html/index.html
13679bc51715SRobert Elliott
13689bc51715SRobert Elliottconfig CRYPTO_USER_API_SKCIPHER
13699bc51715SRobert Elliott	tristate "Symmetric key cipher algorithms"
13702f375538SStephan Mueller	depends on NET
137177ebdabeSElena Petrova	select CRYPTO_SKCIPHER
137277ebdabeSElena Petrova	select CRYPTO_USER_API
137377ebdabeSElena Petrova	help
137477ebdabeSElena Petrova	  Enable the userspace interface for symmetric key cipher algorithms.
13759bc51715SRobert Elliott
13769bc51715SRobert Elliott	  See Documentation/crypto/userspace-if.rst and
13779bc51715SRobert Elliott	  https://www.chronox.de/libkcapi/html/index.html
13789bc51715SRobert Elliott
13799bc51715SRobert Elliottconfig CRYPTO_USER_API_RNG
138077ebdabeSElena Petrova	tristate "RNG (random number generator) algorithms"
138177ebdabeSElena Petrova	depends on NET
138277ebdabeSElena Petrova	select CRYPTO_RNG
1383b64a2d95SHerbert Xu	select CRYPTO_USER_API
13849bc51715SRobert Elliott	help
1385b64a2d95SHerbert Xu	  Enable the userspace interface for RNG (random number generator)
1386b64a2d95SHerbert Xu	  algorithms.
1387b95bba5dSEric Biggers
1388b64a2d95SHerbert Xu	  See Documentation/crypto/userspace-if.rst and
1389b64a2d95SHerbert Xu	  https://www.chronox.de/libkcapi/html/index.html
13909bc51715SRobert Elliott
13919bc51715SRobert Elliottconfig CRYPTO_USER_API_RNG_CAVP
13929bc51715SRobert Elliott	bool "Enable CAVP testing of DRBG"
13939bc51715SRobert Elliott	depends on CRYPTO_USER_API_RNG && CRYPTO_DRBG
1394b64a2d95SHerbert Xu	help
13959ace6771SArd Biesheuvel	  Enable extra APIs in the userspace interface for NIST CAVP
13969bc51715SRobert Elliott	  (Cryptographic Algorithm Validation Program) testing:
13979ace6771SArd Biesheuvel	  - resetting DRBG entropy
13989ace6771SArd Biesheuvel	  - providing Additional Data
13999ace6771SArd Biesheuvel
14009ace6771SArd Biesheuvel	  This should only be enabled for CAVP testing. You should say
14019ace6771SArd Biesheuvel	  no unless you know what this is.
14029ace6771SArd Biesheuvel
14039ace6771SArd Biesheuvelconfig CRYPTO_USER_API_AEAD
1404f1f142adSRobert Elliott	tristate "AEAD cipher algorithms"
1405f1f142adSRobert Elliott	depends on NET
1406ee08997fSDmitry Kasatkin	select CRYPTO_AEAD
1407ee08997fSDmitry Kasatkin	select CRYPTO_SKCIPHER
1408ee08997fSDmitry Kasatkin	select CRYPTO_USER_API
140927bc50fcSLinus Torvalds	help
14104a329fecSRobert Elliott	  Enable the userspace interface for AEAD cipher algorithms.
14114a329fecSRobert Elliott
14124a329fecSRobert Elliott	  See Documentation/crypto/userspace-if.rst and
14134a329fecSRobert Elliott	  https://www.chronox.de/libkcapi/html/index.html
14144a329fecSRobert Elliott
14154a329fecSRobert Elliottconfig CRYPTO_USER_API_ENABLE_OBSOLETE
14162f164822SMin Zhou	bool "Obsolete cryptographic algorithms"
14172f164822SMin Zhou	depends on CRYPTO_USER_API
14182f164822SMin Zhou	default y
1419e45f710bSRobert Elliott	help
1420e45f710bSRobert Elliott	  Allow obsolete cryptographic algorithms to be selected that have
1421e45f710bSRobert Elliott	  already been phased out from internal use by the kernel, and are
14226a490a4eSRobert Elliott	  only useful for userspace clients that still rely on them.
14236a490a4eSRobert Elliott
14246a490a4eSRobert Elliottendmenu
1425178f3856SHeiko Stuebner
1426178f3856SHeiko Stuebnerif !KMSAN # avoid false positives from assembly
1427178f3856SHeiko Stuebnerif ARM
1428c9d24c97SRobert Elliottsource "arch/arm/crypto/Kconfig"
1429c9d24c97SRobert Elliottendif
1430c9d24c97SRobert Elliottif ARM64
14310e9f9ea6SRobert Elliottsource "arch/arm64/crypto/Kconfig"
14320e9f9ea6SRobert Elliottendif
14330e9f9ea6SRobert Elliottif LOONGARCH
143428a936efSRobert Elliottsource "arch/loongarch/crypto/Kconfig"
143528a936efSRobert Elliottendif
143628a936efSRobert Elliottif MIPS
143727bc50fcSLinus Torvaldssource "arch/mips/crypto/Kconfig"
1438e45f710bSRobert Elliottendif
14391da177e4SLinus Torvaldsif PPC
14408636a1f9SMasahiro Yamadasource "arch/powerpc/crypto/Kconfig"
14418636a1f9SMasahiro Yamadaendif
14423936f02bSDavid Howellsif RISCV
14431da177e4SLinus Torvaldssource "arch/riscv/crypto/Kconfig"
1444cce9e06dSHerbert Xuendif
1445if S390
1446source "arch/s390/crypto/Kconfig"
1447endif
1448if SPARC
1449source "arch/sparc/crypto/Kconfig"
1450endif
1451if X86
1452source "arch/x86/crypto/Kconfig"
1453endif
1454endif
1455
1456source "drivers/crypto/Kconfig"
1457source "crypto/asymmetric_keys/Kconfig"
1458source "certs/Kconfig"
1459source "crypto/krb5/Kconfig"
1460
1461endif	# if CRYPTO
1462