xref: /kernel/linux/linux-6.6/crypto/Kconfig (revision 62306a36)
162306a36Sopenharmony_ci# SPDX-License-Identifier: GPL-2.0
262306a36Sopenharmony_ci#
362306a36Sopenharmony_ci# Generic algorithms support
462306a36Sopenharmony_ci#
562306a36Sopenharmony_ciconfig XOR_BLOCKS
662306a36Sopenharmony_ci	tristate
762306a36Sopenharmony_ci
862306a36Sopenharmony_ci#
962306a36Sopenharmony_ci# async_tx api: hardware offloaded memory transfer/transform support
1062306a36Sopenharmony_ci#
1162306a36Sopenharmony_cisource "crypto/async_tx/Kconfig"
1262306a36Sopenharmony_ci
1362306a36Sopenharmony_ci#
1462306a36Sopenharmony_ci# Cryptographic API Configuration
1562306a36Sopenharmony_ci#
1662306a36Sopenharmony_cimenuconfig CRYPTO
1762306a36Sopenharmony_ci	tristate "Cryptographic API"
1862306a36Sopenharmony_ci	select CRYPTO_LIB_UTILS
1962306a36Sopenharmony_ci	help
2062306a36Sopenharmony_ci	  This option provides the core Cryptographic API.
2162306a36Sopenharmony_ci
2262306a36Sopenharmony_ciif CRYPTO
2362306a36Sopenharmony_ci
2462306a36Sopenharmony_cimenu "Crypto core or helper"
2562306a36Sopenharmony_ci
2662306a36Sopenharmony_ciconfig CRYPTO_FIPS
2762306a36Sopenharmony_ci	bool "FIPS 200 compliance"
2862306a36Sopenharmony_ci	depends on (CRYPTO_ANSI_CPRNG || CRYPTO_DRBG) && !CRYPTO_MANAGER_DISABLE_TESTS
2962306a36Sopenharmony_ci	depends on (MODULE_SIG || !MODULES)
3062306a36Sopenharmony_ci	help
3162306a36Sopenharmony_ci	  This option enables the fips boot option which is
3262306a36Sopenharmony_ci	  required if you want the system to operate in a FIPS 200
3362306a36Sopenharmony_ci	  certification.  You should say no unless you know what
3462306a36Sopenharmony_ci	  this is.
3562306a36Sopenharmony_ci
3662306a36Sopenharmony_ciconfig CRYPTO_FIPS_NAME
3762306a36Sopenharmony_ci	string "FIPS Module Name"
3862306a36Sopenharmony_ci	default "Linux Kernel Cryptographic API"
3962306a36Sopenharmony_ci	depends on CRYPTO_FIPS
4062306a36Sopenharmony_ci	help
4162306a36Sopenharmony_ci	  This option sets the FIPS Module name reported by the Crypto API via
4262306a36Sopenharmony_ci	  the /proc/sys/crypto/fips_name file.
4362306a36Sopenharmony_ci
4462306a36Sopenharmony_ciconfig CRYPTO_FIPS_CUSTOM_VERSION
4562306a36Sopenharmony_ci	bool "Use Custom FIPS Module Version"
4662306a36Sopenharmony_ci	depends on CRYPTO_FIPS
4762306a36Sopenharmony_ci	default n
4862306a36Sopenharmony_ci
4962306a36Sopenharmony_ciconfig CRYPTO_FIPS_VERSION
5062306a36Sopenharmony_ci	string "FIPS Module Version"
5162306a36Sopenharmony_ci	default "(none)"
5262306a36Sopenharmony_ci	depends on CRYPTO_FIPS_CUSTOM_VERSION
5362306a36Sopenharmony_ci	help
5462306a36Sopenharmony_ci	  This option provides the ability to override the FIPS Module Version.
5562306a36Sopenharmony_ci	  By default the KERNELRELEASE value is used.
5662306a36Sopenharmony_ci
5762306a36Sopenharmony_ciconfig CRYPTO_ALGAPI
5862306a36Sopenharmony_ci	tristate
5962306a36Sopenharmony_ci	select CRYPTO_ALGAPI2
6062306a36Sopenharmony_ci	help
6162306a36Sopenharmony_ci	  This option provides the API for cryptographic algorithms.
6262306a36Sopenharmony_ci
6362306a36Sopenharmony_ciconfig CRYPTO_ALGAPI2
6462306a36Sopenharmony_ci	tristate
6562306a36Sopenharmony_ci
6662306a36Sopenharmony_ciconfig CRYPTO_AEAD
6762306a36Sopenharmony_ci	tristate
6862306a36Sopenharmony_ci	select CRYPTO_AEAD2
6962306a36Sopenharmony_ci	select CRYPTO_ALGAPI
7062306a36Sopenharmony_ci
7162306a36Sopenharmony_ciconfig CRYPTO_AEAD2
7262306a36Sopenharmony_ci	tristate
7362306a36Sopenharmony_ci	select CRYPTO_ALGAPI2
7462306a36Sopenharmony_ci
7562306a36Sopenharmony_ciconfig CRYPTO_SIG
7662306a36Sopenharmony_ci	tristate
7762306a36Sopenharmony_ci	select CRYPTO_SIG2
7862306a36Sopenharmony_ci	select CRYPTO_ALGAPI
7962306a36Sopenharmony_ci
8062306a36Sopenharmony_ciconfig CRYPTO_SIG2
8162306a36Sopenharmony_ci	tristate
8262306a36Sopenharmony_ci	select CRYPTO_ALGAPI2
8362306a36Sopenharmony_ci
8462306a36Sopenharmony_ciconfig CRYPTO_SKCIPHER
8562306a36Sopenharmony_ci	tristate
8662306a36Sopenharmony_ci	select CRYPTO_SKCIPHER2
8762306a36Sopenharmony_ci	select CRYPTO_ALGAPI
8862306a36Sopenharmony_ci
8962306a36Sopenharmony_ciconfig CRYPTO_SKCIPHER2
9062306a36Sopenharmony_ci	tristate
9162306a36Sopenharmony_ci	select CRYPTO_ALGAPI2
9262306a36Sopenharmony_ci
9362306a36Sopenharmony_ciconfig CRYPTO_HASH
9462306a36Sopenharmony_ci	tristate
9562306a36Sopenharmony_ci	select CRYPTO_HASH2
9662306a36Sopenharmony_ci	select CRYPTO_ALGAPI
9762306a36Sopenharmony_ci
9862306a36Sopenharmony_ciconfig CRYPTO_HASH2
9962306a36Sopenharmony_ci	tristate
10062306a36Sopenharmony_ci	select CRYPTO_ALGAPI2
10162306a36Sopenharmony_ci
10262306a36Sopenharmony_ciconfig CRYPTO_RNG
10362306a36Sopenharmony_ci	tristate
10462306a36Sopenharmony_ci	select CRYPTO_RNG2
10562306a36Sopenharmony_ci	select CRYPTO_ALGAPI
10662306a36Sopenharmony_ci
10762306a36Sopenharmony_ciconfig CRYPTO_RNG2
10862306a36Sopenharmony_ci	tristate
10962306a36Sopenharmony_ci	select CRYPTO_ALGAPI2
11062306a36Sopenharmony_ci
11162306a36Sopenharmony_ciconfig CRYPTO_RNG_DEFAULT
11262306a36Sopenharmony_ci	tristate
11362306a36Sopenharmony_ci	select CRYPTO_DRBG_MENU
11462306a36Sopenharmony_ci
11562306a36Sopenharmony_ciconfig CRYPTO_AKCIPHER2
11662306a36Sopenharmony_ci	tristate
11762306a36Sopenharmony_ci	select CRYPTO_ALGAPI2
11862306a36Sopenharmony_ci
11962306a36Sopenharmony_ciconfig CRYPTO_AKCIPHER
12062306a36Sopenharmony_ci	tristate
12162306a36Sopenharmony_ci	select CRYPTO_AKCIPHER2
12262306a36Sopenharmony_ci	select CRYPTO_ALGAPI
12362306a36Sopenharmony_ci
12462306a36Sopenharmony_ciconfig CRYPTO_KPP2
12562306a36Sopenharmony_ci	tristate
12662306a36Sopenharmony_ci	select CRYPTO_ALGAPI2
12762306a36Sopenharmony_ci
12862306a36Sopenharmony_ciconfig CRYPTO_KPP
12962306a36Sopenharmony_ci	tristate
13062306a36Sopenharmony_ci	select CRYPTO_ALGAPI
13162306a36Sopenharmony_ci	select CRYPTO_KPP2
13262306a36Sopenharmony_ci
13362306a36Sopenharmony_ciconfig CRYPTO_ACOMP2
13462306a36Sopenharmony_ci	tristate
13562306a36Sopenharmony_ci	select CRYPTO_ALGAPI2
13662306a36Sopenharmony_ci	select SGL_ALLOC
13762306a36Sopenharmony_ci
13862306a36Sopenharmony_ciconfig CRYPTO_ACOMP
13962306a36Sopenharmony_ci	tristate
14062306a36Sopenharmony_ci	select CRYPTO_ALGAPI
14162306a36Sopenharmony_ci	select CRYPTO_ACOMP2
14262306a36Sopenharmony_ci
14362306a36Sopenharmony_ciconfig CRYPTO_MANAGER
14462306a36Sopenharmony_ci	tristate "Cryptographic algorithm manager"
14562306a36Sopenharmony_ci	select CRYPTO_MANAGER2
14662306a36Sopenharmony_ci	help
14762306a36Sopenharmony_ci	  Create default cryptographic template instantiations such as
14862306a36Sopenharmony_ci	  cbc(aes).
14962306a36Sopenharmony_ci
15062306a36Sopenharmony_ciconfig CRYPTO_MANAGER2
15162306a36Sopenharmony_ci	def_tristate CRYPTO_MANAGER || (CRYPTO_MANAGER!=n && CRYPTO_ALGAPI=y)
15262306a36Sopenharmony_ci	select CRYPTO_ACOMP2
15362306a36Sopenharmony_ci	select CRYPTO_AEAD2
15462306a36Sopenharmony_ci	select CRYPTO_AKCIPHER2
15562306a36Sopenharmony_ci	select CRYPTO_SIG2
15662306a36Sopenharmony_ci	select CRYPTO_HASH2
15762306a36Sopenharmony_ci	select CRYPTO_KPP2
15862306a36Sopenharmony_ci	select CRYPTO_RNG2
15962306a36Sopenharmony_ci	select CRYPTO_SKCIPHER2
16062306a36Sopenharmony_ci
16162306a36Sopenharmony_ciconfig CRYPTO_USER
16262306a36Sopenharmony_ci	tristate "Userspace cryptographic algorithm configuration"
16362306a36Sopenharmony_ci	depends on NET
16462306a36Sopenharmony_ci	select CRYPTO_MANAGER
16562306a36Sopenharmony_ci	help
16662306a36Sopenharmony_ci	  Userspace configuration for cryptographic instantiations such as
16762306a36Sopenharmony_ci	  cbc(aes).
16862306a36Sopenharmony_ci
16962306a36Sopenharmony_ciconfig CRYPTO_MANAGER_DISABLE_TESTS
17062306a36Sopenharmony_ci	bool "Disable run-time self tests"
17162306a36Sopenharmony_ci	default y
17262306a36Sopenharmony_ci	help
17362306a36Sopenharmony_ci	  Disable run-time self tests that normally take place at
17462306a36Sopenharmony_ci	  algorithm registration.
17562306a36Sopenharmony_ci
17662306a36Sopenharmony_ciconfig CRYPTO_MANAGER_EXTRA_TESTS
17762306a36Sopenharmony_ci	bool "Enable extra run-time crypto self tests"
17862306a36Sopenharmony_ci	depends on DEBUG_KERNEL && !CRYPTO_MANAGER_DISABLE_TESTS && CRYPTO_MANAGER
17962306a36Sopenharmony_ci	help
18062306a36Sopenharmony_ci	  Enable extra run-time self tests of registered crypto algorithms,
18162306a36Sopenharmony_ci	  including randomized fuzz tests.
18262306a36Sopenharmony_ci
18362306a36Sopenharmony_ci	  This is intended for developer use only, as these tests take much
18462306a36Sopenharmony_ci	  longer to run than the normal self tests.
18562306a36Sopenharmony_ci
18662306a36Sopenharmony_ciconfig CRYPTO_NULL
18762306a36Sopenharmony_ci	tristate "Null algorithms"
18862306a36Sopenharmony_ci	select CRYPTO_NULL2
18962306a36Sopenharmony_ci	help
19062306a36Sopenharmony_ci	  These are 'Null' algorithms, used by IPsec, which do nothing.
19162306a36Sopenharmony_ci
19262306a36Sopenharmony_ciconfig CRYPTO_NULL2
19362306a36Sopenharmony_ci	tristate
19462306a36Sopenharmony_ci	select CRYPTO_ALGAPI2
19562306a36Sopenharmony_ci	select CRYPTO_SKCIPHER2
19662306a36Sopenharmony_ci	select CRYPTO_HASH2
19762306a36Sopenharmony_ci
19862306a36Sopenharmony_ciconfig CRYPTO_PCRYPT
19962306a36Sopenharmony_ci	tristate "Parallel crypto engine"
20062306a36Sopenharmony_ci	depends on SMP
20162306a36Sopenharmony_ci	select PADATA
20262306a36Sopenharmony_ci	select CRYPTO_MANAGER
20362306a36Sopenharmony_ci	select CRYPTO_AEAD
20462306a36Sopenharmony_ci	help
20562306a36Sopenharmony_ci	  This converts an arbitrary crypto algorithm into a parallel
20662306a36Sopenharmony_ci	  algorithm that executes in kernel threads.
20762306a36Sopenharmony_ci
20862306a36Sopenharmony_ciconfig CRYPTO_CRYPTD
20962306a36Sopenharmony_ci	tristate "Software async crypto daemon"
21062306a36Sopenharmony_ci	select CRYPTO_SKCIPHER
21162306a36Sopenharmony_ci	select CRYPTO_HASH
21262306a36Sopenharmony_ci	select CRYPTO_MANAGER
21362306a36Sopenharmony_ci	help
21462306a36Sopenharmony_ci	  This is a generic software asynchronous crypto daemon that
21562306a36Sopenharmony_ci	  converts an arbitrary synchronous software crypto algorithm
21662306a36Sopenharmony_ci	  into an asynchronous algorithm that executes in a kernel thread.
21762306a36Sopenharmony_ci
21862306a36Sopenharmony_ciconfig CRYPTO_AUTHENC
21962306a36Sopenharmony_ci	tristate "Authenc support"
22062306a36Sopenharmony_ci	select CRYPTO_AEAD
22162306a36Sopenharmony_ci	select CRYPTO_SKCIPHER
22262306a36Sopenharmony_ci	select CRYPTO_MANAGER
22362306a36Sopenharmony_ci	select CRYPTO_HASH
22462306a36Sopenharmony_ci	select CRYPTO_NULL
22562306a36Sopenharmony_ci	help
22662306a36Sopenharmony_ci	  Authenc: Combined mode wrapper for IPsec.
22762306a36Sopenharmony_ci
22862306a36Sopenharmony_ci	  This is required for IPSec ESP (XFRM_ESP).
22962306a36Sopenharmony_ci
23062306a36Sopenharmony_ciconfig CRYPTO_TEST
23162306a36Sopenharmony_ci	tristate "Testing module"
23262306a36Sopenharmony_ci	depends on m || EXPERT
23362306a36Sopenharmony_ci	select CRYPTO_MANAGER
23462306a36Sopenharmony_ci	help
23562306a36Sopenharmony_ci	  Quick & dirty crypto test module.
23662306a36Sopenharmony_ci
23762306a36Sopenharmony_ciconfig CRYPTO_SIMD
23862306a36Sopenharmony_ci	tristate
23962306a36Sopenharmony_ci	select CRYPTO_CRYPTD
24062306a36Sopenharmony_ci
24162306a36Sopenharmony_ciconfig CRYPTO_ENGINE
24262306a36Sopenharmony_ci	tristate
24362306a36Sopenharmony_ci
24462306a36Sopenharmony_ciendmenu
24562306a36Sopenharmony_ci
24662306a36Sopenharmony_cimenu "Public-key cryptography"
24762306a36Sopenharmony_ci
24862306a36Sopenharmony_ciconfig CRYPTO_RSA
24962306a36Sopenharmony_ci	tristate "RSA (Rivest-Shamir-Adleman)"
25062306a36Sopenharmony_ci	select CRYPTO_AKCIPHER
25162306a36Sopenharmony_ci	select CRYPTO_MANAGER
25262306a36Sopenharmony_ci	select MPILIB
25362306a36Sopenharmony_ci	select ASN1
25462306a36Sopenharmony_ci	help
25562306a36Sopenharmony_ci	  RSA (Rivest-Shamir-Adleman) public key algorithm (RFC8017)
25662306a36Sopenharmony_ci
25762306a36Sopenharmony_ciconfig CRYPTO_DH
25862306a36Sopenharmony_ci	tristate "DH (Diffie-Hellman)"
25962306a36Sopenharmony_ci	select CRYPTO_KPP
26062306a36Sopenharmony_ci	select MPILIB
26162306a36Sopenharmony_ci	help
26262306a36Sopenharmony_ci	  DH (Diffie-Hellman) key exchange algorithm
26362306a36Sopenharmony_ci
26462306a36Sopenharmony_ciconfig CRYPTO_DH_RFC7919_GROUPS
26562306a36Sopenharmony_ci	bool "RFC 7919 FFDHE groups"
26662306a36Sopenharmony_ci	depends on CRYPTO_DH
26762306a36Sopenharmony_ci	select CRYPTO_RNG_DEFAULT
26862306a36Sopenharmony_ci	help
26962306a36Sopenharmony_ci	  FFDHE (Finite-Field-based Diffie-Hellman Ephemeral) groups
27062306a36Sopenharmony_ci	  defined in RFC7919.
27162306a36Sopenharmony_ci
27262306a36Sopenharmony_ci	  Support these finite-field groups in DH key exchanges:
27362306a36Sopenharmony_ci	  - ffdhe2048, ffdhe3072, ffdhe4096, ffdhe6144, ffdhe8192
27462306a36Sopenharmony_ci
27562306a36Sopenharmony_ci	  If unsure, say N.
27662306a36Sopenharmony_ci
27762306a36Sopenharmony_ciconfig CRYPTO_ECC
27862306a36Sopenharmony_ci	tristate
27962306a36Sopenharmony_ci	select CRYPTO_RNG_DEFAULT
28062306a36Sopenharmony_ci
28162306a36Sopenharmony_ciconfig CRYPTO_ECDH
28262306a36Sopenharmony_ci	tristate "ECDH (Elliptic Curve Diffie-Hellman)"
28362306a36Sopenharmony_ci	select CRYPTO_ECC
28462306a36Sopenharmony_ci	select CRYPTO_KPP
28562306a36Sopenharmony_ci	help
28662306a36Sopenharmony_ci	  ECDH (Elliptic Curve Diffie-Hellman) key exchange algorithm
28762306a36Sopenharmony_ci	  using curves P-192, P-256, and P-384 (FIPS 186)
28862306a36Sopenharmony_ci
28962306a36Sopenharmony_ciconfig CRYPTO_ECDSA
29062306a36Sopenharmony_ci	tristate "ECDSA (Elliptic Curve Digital Signature Algorithm)"
29162306a36Sopenharmony_ci	select CRYPTO_ECC
29262306a36Sopenharmony_ci	select CRYPTO_AKCIPHER
29362306a36Sopenharmony_ci	select ASN1
29462306a36Sopenharmony_ci	help
29562306a36Sopenharmony_ci	  ECDSA (Elliptic Curve Digital Signature Algorithm) (FIPS 186,
29662306a36Sopenharmony_ci	  ISO/IEC 14888-3)
29762306a36Sopenharmony_ci	  using curves P-192, P-256, and P-384
29862306a36Sopenharmony_ci
29962306a36Sopenharmony_ci	  Only signature verification is implemented.
30062306a36Sopenharmony_ci
30162306a36Sopenharmony_ciconfig CRYPTO_ECRDSA
30262306a36Sopenharmony_ci	tristate "EC-RDSA (Elliptic Curve Russian Digital Signature Algorithm)"
30362306a36Sopenharmony_ci	select CRYPTO_ECC
30462306a36Sopenharmony_ci	select CRYPTO_AKCIPHER
30562306a36Sopenharmony_ci	select CRYPTO_STREEBOG
30662306a36Sopenharmony_ci	select OID_REGISTRY
30762306a36Sopenharmony_ci	select ASN1
30862306a36Sopenharmony_ci	help
30962306a36Sopenharmony_ci	  Elliptic Curve Russian Digital Signature Algorithm (GOST R 34.10-2012,
31062306a36Sopenharmony_ci	  RFC 7091, ISO/IEC 14888-3)
31162306a36Sopenharmony_ci
31262306a36Sopenharmony_ci	  One of the Russian cryptographic standard algorithms (called GOST
31362306a36Sopenharmony_ci	  algorithms). Only signature verification is implemented.
31462306a36Sopenharmony_ci
31562306a36Sopenharmony_ciconfig CRYPTO_SM2
31662306a36Sopenharmony_ci	tristate "SM2 (ShangMi 2)"
31762306a36Sopenharmony_ci	select CRYPTO_SM3
31862306a36Sopenharmony_ci	select CRYPTO_AKCIPHER
31962306a36Sopenharmony_ci	select CRYPTO_MANAGER
32062306a36Sopenharmony_ci	select MPILIB
32162306a36Sopenharmony_ci	select ASN1
32262306a36Sopenharmony_ci	help
32362306a36Sopenharmony_ci	  SM2 (ShangMi 2) public key algorithm
32462306a36Sopenharmony_ci
32562306a36Sopenharmony_ci	  Published by State Encryption Management Bureau, China,
32662306a36Sopenharmony_ci	  as specified by OSCCA GM/T 0003.1-2012 -- 0003.5-2012.
32762306a36Sopenharmony_ci
32862306a36Sopenharmony_ci	  References:
32962306a36Sopenharmony_ci	  https://datatracker.ietf.org/doc/draft-shen-sm2-ecdsa/
33062306a36Sopenharmony_ci	  http://www.oscca.gov.cn/sca/xxgk/2010-12/17/content_1002386.shtml
33162306a36Sopenharmony_ci	  http://www.gmbz.org.cn/main/bzlb.html
33262306a36Sopenharmony_ci
33362306a36Sopenharmony_ciconfig CRYPTO_CURVE25519
33462306a36Sopenharmony_ci	tristate "Curve25519"
33562306a36Sopenharmony_ci	select CRYPTO_KPP
33662306a36Sopenharmony_ci	select CRYPTO_LIB_CURVE25519_GENERIC
33762306a36Sopenharmony_ci	help
33862306a36Sopenharmony_ci	  Curve25519 elliptic curve (RFC7748)
33962306a36Sopenharmony_ci
34062306a36Sopenharmony_ciendmenu
34162306a36Sopenharmony_ci
34262306a36Sopenharmony_cimenu "Block ciphers"
34362306a36Sopenharmony_ci
34462306a36Sopenharmony_ciconfig CRYPTO_AES
34562306a36Sopenharmony_ci	tristate "AES (Advanced Encryption Standard)"
34662306a36Sopenharmony_ci	select CRYPTO_ALGAPI
34762306a36Sopenharmony_ci	select CRYPTO_LIB_AES
34862306a36Sopenharmony_ci	help
34962306a36Sopenharmony_ci	  AES cipher algorithms (Rijndael)(FIPS-197, ISO/IEC 18033-3)
35062306a36Sopenharmony_ci
35162306a36Sopenharmony_ci	  Rijndael appears to be consistently a very good performer in
35262306a36Sopenharmony_ci	  both hardware and software across a wide range of computing
35362306a36Sopenharmony_ci	  environments regardless of its use in feedback or non-feedback
35462306a36Sopenharmony_ci	  modes. Its key setup time is excellent, and its key agility is
35562306a36Sopenharmony_ci	  good. Rijndael's very low memory requirements make it very well
35662306a36Sopenharmony_ci	  suited for restricted-space environments, in which it also
35762306a36Sopenharmony_ci	  demonstrates excellent performance. Rijndael's operations are
35862306a36Sopenharmony_ci	  among the easiest to defend against power and timing attacks.
35962306a36Sopenharmony_ci
36062306a36Sopenharmony_ci	  The AES specifies three key sizes: 128, 192 and 256 bits
36162306a36Sopenharmony_ci
36262306a36Sopenharmony_ciconfig CRYPTO_AES_TI
36362306a36Sopenharmony_ci	tristate "AES (Advanced Encryption Standard) (fixed time)"
36462306a36Sopenharmony_ci	select CRYPTO_ALGAPI
36562306a36Sopenharmony_ci	select CRYPTO_LIB_AES
36662306a36Sopenharmony_ci	help
36762306a36Sopenharmony_ci	  AES cipher algorithms (Rijndael)(FIPS-197, ISO/IEC 18033-3)
36862306a36Sopenharmony_ci
36962306a36Sopenharmony_ci	  This is a generic implementation of AES that attempts to eliminate
37062306a36Sopenharmony_ci	  data dependent latencies as much as possible without affecting
37162306a36Sopenharmony_ci	  performance too much. It is intended for use by the generic CCM
37262306a36Sopenharmony_ci	  and GCM drivers, and other CTR or CMAC/XCBC based modes that rely
37362306a36Sopenharmony_ci	  solely on encryption (although decryption is supported as well, but
37462306a36Sopenharmony_ci	  with a more dramatic performance hit)
37562306a36Sopenharmony_ci
37662306a36Sopenharmony_ci	  Instead of using 16 lookup tables of 1 KB each, (8 for encryption and
37762306a36Sopenharmony_ci	  8 for decryption), this implementation only uses just two S-boxes of
37862306a36Sopenharmony_ci	  256 bytes each, and attempts to eliminate data dependent latencies by
37962306a36Sopenharmony_ci	  prefetching the entire table into the cache at the start of each
38062306a36Sopenharmony_ci	  block. Interrupts are also disabled to avoid races where cachelines
38162306a36Sopenharmony_ci	  are evicted when the CPU is interrupted to do something else.
38262306a36Sopenharmony_ci
38362306a36Sopenharmony_ciconfig CRYPTO_ANUBIS
38462306a36Sopenharmony_ci	tristate "Anubis"
38562306a36Sopenharmony_ci	depends on CRYPTO_USER_API_ENABLE_OBSOLETE
38662306a36Sopenharmony_ci	select CRYPTO_ALGAPI
38762306a36Sopenharmony_ci	help
38862306a36Sopenharmony_ci	  Anubis cipher algorithm
38962306a36Sopenharmony_ci
39062306a36Sopenharmony_ci	  Anubis is a variable key length cipher which can use keys from
39162306a36Sopenharmony_ci	  128 bits to 320 bits in length.  It was evaluated as a entrant
39262306a36Sopenharmony_ci	  in the NESSIE competition.
39362306a36Sopenharmony_ci
39462306a36Sopenharmony_ci	  See https://web.archive.org/web/20160606112246/http://www.larc.usp.br/~pbarreto/AnubisPage.html
39562306a36Sopenharmony_ci	  for further information.
39662306a36Sopenharmony_ci
39762306a36Sopenharmony_ciconfig CRYPTO_ARIA
39862306a36Sopenharmony_ci	tristate "ARIA"
39962306a36Sopenharmony_ci	select CRYPTO_ALGAPI
40062306a36Sopenharmony_ci	help
40162306a36Sopenharmony_ci	  ARIA cipher algorithm (RFC5794)
40262306a36Sopenharmony_ci
40362306a36Sopenharmony_ci	  ARIA is a standard encryption algorithm of the Republic of Korea.
40462306a36Sopenharmony_ci	  The ARIA specifies three key sizes and rounds.
40562306a36Sopenharmony_ci	  128-bit: 12 rounds.
40662306a36Sopenharmony_ci	  192-bit: 14 rounds.
40762306a36Sopenharmony_ci	  256-bit: 16 rounds.
40862306a36Sopenharmony_ci
40962306a36Sopenharmony_ci	  See:
41062306a36Sopenharmony_ci	  https://seed.kisa.or.kr/kisa/algorithm/EgovAriaInfo.do
41162306a36Sopenharmony_ci
41262306a36Sopenharmony_ciconfig CRYPTO_BLOWFISH
41362306a36Sopenharmony_ci	tristate "Blowfish"
41462306a36Sopenharmony_ci	select CRYPTO_ALGAPI
41562306a36Sopenharmony_ci	select CRYPTO_BLOWFISH_COMMON
41662306a36Sopenharmony_ci	help
41762306a36Sopenharmony_ci	  Blowfish cipher algorithm, by Bruce Schneier
41862306a36Sopenharmony_ci
41962306a36Sopenharmony_ci	  This is a variable key length cipher which can use keys from 32
42062306a36Sopenharmony_ci	  bits to 448 bits in length.  It's fast, simple and specifically
42162306a36Sopenharmony_ci	  designed for use on "large microprocessors".
42262306a36Sopenharmony_ci
42362306a36Sopenharmony_ci	  See https://www.schneier.com/blowfish.html for further information.
42462306a36Sopenharmony_ci
42562306a36Sopenharmony_ciconfig CRYPTO_BLOWFISH_COMMON
42662306a36Sopenharmony_ci	tristate
42762306a36Sopenharmony_ci	help
42862306a36Sopenharmony_ci	  Common parts of the Blowfish cipher algorithm shared by the
42962306a36Sopenharmony_ci	  generic c and the assembler implementations.
43062306a36Sopenharmony_ci
43162306a36Sopenharmony_ciconfig CRYPTO_CAMELLIA
43262306a36Sopenharmony_ci	tristate "Camellia"
43362306a36Sopenharmony_ci	select CRYPTO_ALGAPI
43462306a36Sopenharmony_ci	help
43562306a36Sopenharmony_ci	  Camellia cipher algorithms (ISO/IEC 18033-3)
43662306a36Sopenharmony_ci
43762306a36Sopenharmony_ci	  Camellia is a symmetric key block cipher developed jointly
43862306a36Sopenharmony_ci	  at NTT and Mitsubishi Electric Corporation.
43962306a36Sopenharmony_ci
44062306a36Sopenharmony_ci	  The Camellia specifies three key sizes: 128, 192 and 256 bits.
44162306a36Sopenharmony_ci
44262306a36Sopenharmony_ci	  See https://info.isl.ntt.co.jp/crypt/eng/camellia/ for further information.
44362306a36Sopenharmony_ci
44462306a36Sopenharmony_ciconfig CRYPTO_CAST_COMMON
44562306a36Sopenharmony_ci	tristate
44662306a36Sopenharmony_ci	help
44762306a36Sopenharmony_ci	  Common parts of the CAST cipher algorithms shared by the
44862306a36Sopenharmony_ci	  generic c and the assembler implementations.
44962306a36Sopenharmony_ci
45062306a36Sopenharmony_ciconfig CRYPTO_CAST5
45162306a36Sopenharmony_ci	tristate "CAST5 (CAST-128)"
45262306a36Sopenharmony_ci	select CRYPTO_ALGAPI
45362306a36Sopenharmony_ci	select CRYPTO_CAST_COMMON
45462306a36Sopenharmony_ci	help
45562306a36Sopenharmony_ci	  CAST5 (CAST-128) cipher algorithm (RFC2144, ISO/IEC 18033-3)
45662306a36Sopenharmony_ci
45762306a36Sopenharmony_ciconfig CRYPTO_CAST6
45862306a36Sopenharmony_ci	tristate "CAST6 (CAST-256)"
45962306a36Sopenharmony_ci	select CRYPTO_ALGAPI
46062306a36Sopenharmony_ci	select CRYPTO_CAST_COMMON
46162306a36Sopenharmony_ci	help
46262306a36Sopenharmony_ci	  CAST6 (CAST-256) encryption algorithm (RFC2612)
46362306a36Sopenharmony_ci
46462306a36Sopenharmony_ciconfig CRYPTO_DES
46562306a36Sopenharmony_ci	tristate "DES and Triple DES EDE"
46662306a36Sopenharmony_ci	select CRYPTO_ALGAPI
46762306a36Sopenharmony_ci	select CRYPTO_LIB_DES
46862306a36Sopenharmony_ci	help
46962306a36Sopenharmony_ci	  DES (Data Encryption Standard)(FIPS 46-2, ISO/IEC 18033-3) and
47062306a36Sopenharmony_ci	  Triple DES EDE (Encrypt/Decrypt/Encrypt) (FIPS 46-3, ISO/IEC 18033-3)
47162306a36Sopenharmony_ci	  cipher algorithms
47262306a36Sopenharmony_ci
47362306a36Sopenharmony_ciconfig CRYPTO_FCRYPT
47462306a36Sopenharmony_ci	tristate "FCrypt"
47562306a36Sopenharmony_ci	select CRYPTO_ALGAPI
47662306a36Sopenharmony_ci	select CRYPTO_SKCIPHER
47762306a36Sopenharmony_ci	help
47862306a36Sopenharmony_ci	  FCrypt algorithm used by RxRPC
47962306a36Sopenharmony_ci
48062306a36Sopenharmony_ci	  See https://ota.polyonymo.us/fcrypt-paper.txt
48162306a36Sopenharmony_ci
48262306a36Sopenharmony_ciconfig CRYPTO_KHAZAD
48362306a36Sopenharmony_ci	tristate "Khazad"
48462306a36Sopenharmony_ci	depends on CRYPTO_USER_API_ENABLE_OBSOLETE
48562306a36Sopenharmony_ci	select CRYPTO_ALGAPI
48662306a36Sopenharmony_ci	help
48762306a36Sopenharmony_ci	  Khazad cipher algorithm
48862306a36Sopenharmony_ci
48962306a36Sopenharmony_ci	  Khazad was a finalist in the initial NESSIE competition.  It is
49062306a36Sopenharmony_ci	  an algorithm optimized for 64-bit processors with good performance
49162306a36Sopenharmony_ci	  on 32-bit processors.  Khazad uses an 128 bit key size.
49262306a36Sopenharmony_ci
49362306a36Sopenharmony_ci	  See https://web.archive.org/web/20171011071731/http://www.larc.usp.br/~pbarreto/KhazadPage.html
49462306a36Sopenharmony_ci	  for further information.
49562306a36Sopenharmony_ci
49662306a36Sopenharmony_ciconfig CRYPTO_SEED
49762306a36Sopenharmony_ci	tristate "SEED"
49862306a36Sopenharmony_ci	depends on CRYPTO_USER_API_ENABLE_OBSOLETE
49962306a36Sopenharmony_ci	select CRYPTO_ALGAPI
50062306a36Sopenharmony_ci	help
50162306a36Sopenharmony_ci	  SEED cipher algorithm (RFC4269, ISO/IEC 18033-3)
50262306a36Sopenharmony_ci
50362306a36Sopenharmony_ci	  SEED is a 128-bit symmetric key block cipher that has been
50462306a36Sopenharmony_ci	  developed by KISA (Korea Information Security Agency) as a
50562306a36Sopenharmony_ci	  national standard encryption algorithm of the Republic of Korea.
50662306a36Sopenharmony_ci	  It is a 16 round block cipher with the key size of 128 bit.
50762306a36Sopenharmony_ci
50862306a36Sopenharmony_ci	  See https://seed.kisa.or.kr/kisa/algorithm/EgovSeedInfo.do
50962306a36Sopenharmony_ci	  for further information.
51062306a36Sopenharmony_ci
51162306a36Sopenharmony_ciconfig CRYPTO_SERPENT
51262306a36Sopenharmony_ci	tristate "Serpent"
51362306a36Sopenharmony_ci	select CRYPTO_ALGAPI
51462306a36Sopenharmony_ci	help
51562306a36Sopenharmony_ci	  Serpent cipher algorithm, by Anderson, Biham & Knudsen
51662306a36Sopenharmony_ci
51762306a36Sopenharmony_ci	  Keys are allowed to be from 0 to 256 bits in length, in steps
51862306a36Sopenharmony_ci	  of 8 bits.
51962306a36Sopenharmony_ci
52062306a36Sopenharmony_ci	  See https://www.cl.cam.ac.uk/~rja14/serpent.html for further information.
52162306a36Sopenharmony_ci
52262306a36Sopenharmony_ciconfig CRYPTO_SM4
52362306a36Sopenharmony_ci	tristate
52462306a36Sopenharmony_ci
52562306a36Sopenharmony_ciconfig CRYPTO_SM4_GENERIC
52662306a36Sopenharmony_ci	tristate "SM4 (ShangMi 4)"
52762306a36Sopenharmony_ci	select CRYPTO_ALGAPI
52862306a36Sopenharmony_ci	select CRYPTO_SM4
52962306a36Sopenharmony_ci	help
53062306a36Sopenharmony_ci	  SM4 cipher algorithms (OSCCA GB/T 32907-2016,
53162306a36Sopenharmony_ci	  ISO/IEC 18033-3:2010/Amd 1:2021)
53262306a36Sopenharmony_ci
53362306a36Sopenharmony_ci	  SM4 (GBT.32907-2016) is a cryptographic standard issued by the
53462306a36Sopenharmony_ci	  Organization of State Commercial Administration of China (OSCCA)
53562306a36Sopenharmony_ci	  as an authorized cryptographic algorithms for the use within China.
53662306a36Sopenharmony_ci
53762306a36Sopenharmony_ci	  SMS4 was originally created for use in protecting wireless
53862306a36Sopenharmony_ci	  networks, and is mandated in the Chinese National Standard for
53962306a36Sopenharmony_ci	  Wireless LAN WAPI (Wired Authentication and Privacy Infrastructure)
54062306a36Sopenharmony_ci	  (GB.15629.11-2003).
54162306a36Sopenharmony_ci
54262306a36Sopenharmony_ci	  The latest SM4 standard (GBT.32907-2016) was proposed by OSCCA and
54362306a36Sopenharmony_ci	  standardized through TC 260 of the Standardization Administration
54462306a36Sopenharmony_ci	  of the People's Republic of China (SAC).
54562306a36Sopenharmony_ci
54662306a36Sopenharmony_ci	  The input, output, and key of SMS4 are each 128 bits.
54762306a36Sopenharmony_ci
54862306a36Sopenharmony_ci	  See https://eprint.iacr.org/2008/329.pdf for further information.
54962306a36Sopenharmony_ci
55062306a36Sopenharmony_ci	  If unsure, say N.
55162306a36Sopenharmony_ci
55262306a36Sopenharmony_ciconfig CRYPTO_TEA
55362306a36Sopenharmony_ci	tristate "TEA, XTEA and XETA"
55462306a36Sopenharmony_ci	depends on CRYPTO_USER_API_ENABLE_OBSOLETE
55562306a36Sopenharmony_ci	select CRYPTO_ALGAPI
55662306a36Sopenharmony_ci	help
55762306a36Sopenharmony_ci	  TEA (Tiny Encryption Algorithm) cipher algorithms
55862306a36Sopenharmony_ci
55962306a36Sopenharmony_ci	  Tiny Encryption Algorithm is a simple cipher that uses
56062306a36Sopenharmony_ci	  many rounds for security.  It is very fast and uses
56162306a36Sopenharmony_ci	  little memory.
56262306a36Sopenharmony_ci
56362306a36Sopenharmony_ci	  Xtendend Tiny Encryption Algorithm is a modification to
56462306a36Sopenharmony_ci	  the TEA algorithm to address a potential key weakness
56562306a36Sopenharmony_ci	  in the TEA algorithm.
56662306a36Sopenharmony_ci
56762306a36Sopenharmony_ci	  Xtendend Encryption Tiny Algorithm is a mis-implementation
56862306a36Sopenharmony_ci	  of the XTEA algorithm for compatibility purposes.
56962306a36Sopenharmony_ci
57062306a36Sopenharmony_ciconfig CRYPTO_TWOFISH
57162306a36Sopenharmony_ci	tristate "Twofish"
57262306a36Sopenharmony_ci	select CRYPTO_ALGAPI
57362306a36Sopenharmony_ci	select CRYPTO_TWOFISH_COMMON
57462306a36Sopenharmony_ci	help
57562306a36Sopenharmony_ci	  Twofish cipher algorithm
57662306a36Sopenharmony_ci
57762306a36Sopenharmony_ci	  Twofish was submitted as an AES (Advanced Encryption Standard)
57862306a36Sopenharmony_ci	  candidate cipher by researchers at CounterPane Systems.  It is a
57962306a36Sopenharmony_ci	  16 round block cipher supporting key sizes of 128, 192, and 256
58062306a36Sopenharmony_ci	  bits.
58162306a36Sopenharmony_ci
58262306a36Sopenharmony_ci	  See https://www.schneier.com/twofish.html for further information.
58362306a36Sopenharmony_ci
58462306a36Sopenharmony_ciconfig CRYPTO_TWOFISH_COMMON
58562306a36Sopenharmony_ci	tristate
58662306a36Sopenharmony_ci	help
58762306a36Sopenharmony_ci	  Common parts of the Twofish cipher algorithm shared by the
58862306a36Sopenharmony_ci	  generic c and the assembler implementations.
58962306a36Sopenharmony_ci
59062306a36Sopenharmony_ciendmenu
59162306a36Sopenharmony_ci
59262306a36Sopenharmony_cimenu "Length-preserving ciphers and modes"
59362306a36Sopenharmony_ci
59462306a36Sopenharmony_ciconfig CRYPTO_ADIANTUM
59562306a36Sopenharmony_ci	tristate "Adiantum"
59662306a36Sopenharmony_ci	select CRYPTO_CHACHA20
59762306a36Sopenharmony_ci	select CRYPTO_LIB_POLY1305_GENERIC
59862306a36Sopenharmony_ci	select CRYPTO_NHPOLY1305
59962306a36Sopenharmony_ci	select CRYPTO_MANAGER
60062306a36Sopenharmony_ci	help
60162306a36Sopenharmony_ci	  Adiantum tweakable, length-preserving encryption mode
60262306a36Sopenharmony_ci
60362306a36Sopenharmony_ci	  Designed for fast and secure disk encryption, especially on
60462306a36Sopenharmony_ci	  CPUs without dedicated crypto instructions.  It encrypts
60562306a36Sopenharmony_ci	  each sector using the XChaCha12 stream cipher, two passes of
60662306a36Sopenharmony_ci	  an ε-almost-∆-universal hash function, and an invocation of
60762306a36Sopenharmony_ci	  the AES-256 block cipher on a single 16-byte block.  On CPUs
60862306a36Sopenharmony_ci	  without AES instructions, Adiantum is much faster than
60962306a36Sopenharmony_ci	  AES-XTS.
61062306a36Sopenharmony_ci
61162306a36Sopenharmony_ci	  Adiantum's security is provably reducible to that of its
61262306a36Sopenharmony_ci	  underlying stream and block ciphers, subject to a security
61362306a36Sopenharmony_ci	  bound.  Unlike XTS, Adiantum is a true wide-block encryption
61462306a36Sopenharmony_ci	  mode, so it actually provides an even stronger notion of
61562306a36Sopenharmony_ci	  security than XTS, subject to the security bound.
61662306a36Sopenharmony_ci
61762306a36Sopenharmony_ci	  If unsure, say N.
61862306a36Sopenharmony_ci
61962306a36Sopenharmony_ciconfig CRYPTO_ARC4
62062306a36Sopenharmony_ci	tristate "ARC4 (Alleged Rivest Cipher 4)"
62162306a36Sopenharmony_ci	depends on CRYPTO_USER_API_ENABLE_OBSOLETE
62262306a36Sopenharmony_ci	select CRYPTO_SKCIPHER
62362306a36Sopenharmony_ci	select CRYPTO_LIB_ARC4
62462306a36Sopenharmony_ci	help
62562306a36Sopenharmony_ci	  ARC4 cipher algorithm
62662306a36Sopenharmony_ci
62762306a36Sopenharmony_ci	  ARC4 is a stream cipher using keys ranging from 8 bits to 2048
62862306a36Sopenharmony_ci	  bits in length.  This algorithm is required for driver-based
62962306a36Sopenharmony_ci	  WEP, but it should not be for other purposes because of the
63062306a36Sopenharmony_ci	  weakness of the algorithm.
63162306a36Sopenharmony_ci
63262306a36Sopenharmony_ciconfig CRYPTO_CHACHA20
63362306a36Sopenharmony_ci	tristate "ChaCha"
63462306a36Sopenharmony_ci	select CRYPTO_LIB_CHACHA_GENERIC
63562306a36Sopenharmony_ci	select CRYPTO_SKCIPHER
63662306a36Sopenharmony_ci	help
63762306a36Sopenharmony_ci	  The ChaCha20, XChaCha20, and XChaCha12 stream cipher algorithms
63862306a36Sopenharmony_ci
63962306a36Sopenharmony_ci	  ChaCha20 is a 256-bit high-speed stream cipher designed by Daniel J.
64062306a36Sopenharmony_ci	  Bernstein and further specified in RFC7539 for use in IETF protocols.
64162306a36Sopenharmony_ci	  This is the portable C implementation of ChaCha20.  See
64262306a36Sopenharmony_ci	  https://cr.yp.to/chacha/chacha-20080128.pdf for further information.
64362306a36Sopenharmony_ci
64462306a36Sopenharmony_ci	  XChaCha20 is the application of the XSalsa20 construction to ChaCha20
64562306a36Sopenharmony_ci	  rather than to Salsa20.  XChaCha20 extends ChaCha20's nonce length
64662306a36Sopenharmony_ci	  from 64 bits (or 96 bits using the RFC7539 convention) to 192 bits,
64762306a36Sopenharmony_ci	  while provably retaining ChaCha20's security.  See
64862306a36Sopenharmony_ci	  https://cr.yp.to/snuffle/xsalsa-20081128.pdf for further information.
64962306a36Sopenharmony_ci
65062306a36Sopenharmony_ci	  XChaCha12 is XChaCha20 reduced to 12 rounds, with correspondingly
65162306a36Sopenharmony_ci	  reduced security margin but increased performance.  It can be needed
65262306a36Sopenharmony_ci	  in some performance-sensitive scenarios.
65362306a36Sopenharmony_ci
65462306a36Sopenharmony_ciconfig CRYPTO_CBC
65562306a36Sopenharmony_ci	tristate "CBC (Cipher Block Chaining)"
65662306a36Sopenharmony_ci	select CRYPTO_SKCIPHER
65762306a36Sopenharmony_ci	select CRYPTO_MANAGER
65862306a36Sopenharmony_ci	help
65962306a36Sopenharmony_ci	  CBC (Cipher Block Chaining) mode (NIST SP800-38A)
66062306a36Sopenharmony_ci
66162306a36Sopenharmony_ci	  This block cipher mode is required for IPSec ESP (XFRM_ESP).
66262306a36Sopenharmony_ci
66362306a36Sopenharmony_ciconfig CRYPTO_CFB
66462306a36Sopenharmony_ci	tristate "CFB (Cipher Feedback)"
66562306a36Sopenharmony_ci	select CRYPTO_SKCIPHER
66662306a36Sopenharmony_ci	select CRYPTO_MANAGER
66762306a36Sopenharmony_ci	help
66862306a36Sopenharmony_ci	  CFB (Cipher Feedback) mode (NIST SP800-38A)
66962306a36Sopenharmony_ci
67062306a36Sopenharmony_ci	  This block cipher mode is required for TPM2 Cryptography.
67162306a36Sopenharmony_ci
67262306a36Sopenharmony_ciconfig CRYPTO_CTR
67362306a36Sopenharmony_ci	tristate "CTR (Counter)"
67462306a36Sopenharmony_ci	select CRYPTO_SKCIPHER
67562306a36Sopenharmony_ci	select CRYPTO_MANAGER
67662306a36Sopenharmony_ci	help
67762306a36Sopenharmony_ci	  CTR (Counter) mode (NIST SP800-38A)
67862306a36Sopenharmony_ci
67962306a36Sopenharmony_ciconfig CRYPTO_CTS
68062306a36Sopenharmony_ci	tristate "CTS (Cipher Text Stealing)"
68162306a36Sopenharmony_ci	select CRYPTO_SKCIPHER
68262306a36Sopenharmony_ci	select CRYPTO_MANAGER
68362306a36Sopenharmony_ci	help
68462306a36Sopenharmony_ci	  CBC-CS3 variant of CTS (Cipher Text Stealing) (NIST
68562306a36Sopenharmony_ci	  Addendum to SP800-38A (October 2010))
68662306a36Sopenharmony_ci
68762306a36Sopenharmony_ci	  This mode is required for Kerberos gss mechanism support
68862306a36Sopenharmony_ci	  for AES encryption.
68962306a36Sopenharmony_ci
69062306a36Sopenharmony_ciconfig CRYPTO_ECB
69162306a36Sopenharmony_ci	tristate "ECB (Electronic Codebook)"
69262306a36Sopenharmony_ci	select CRYPTO_SKCIPHER
69362306a36Sopenharmony_ci	select CRYPTO_MANAGER
69462306a36Sopenharmony_ci	help
69562306a36Sopenharmony_ci	  ECB (Electronic Codebook) mode (NIST SP800-38A)
69662306a36Sopenharmony_ci
69762306a36Sopenharmony_ciconfig CRYPTO_HCTR2
69862306a36Sopenharmony_ci	tristate "HCTR2"
69962306a36Sopenharmony_ci	select CRYPTO_XCTR
70062306a36Sopenharmony_ci	select CRYPTO_POLYVAL
70162306a36Sopenharmony_ci	select CRYPTO_MANAGER
70262306a36Sopenharmony_ci	help
70362306a36Sopenharmony_ci	  HCTR2 length-preserving encryption mode
70462306a36Sopenharmony_ci
70562306a36Sopenharmony_ci	  A mode for storage encryption that is efficient on processors with
70662306a36Sopenharmony_ci	  instructions to accelerate AES and carryless multiplication, e.g.
70762306a36Sopenharmony_ci	  x86 processors with AES-NI and CLMUL, and ARM processors with the
70862306a36Sopenharmony_ci	  ARMv8 crypto extensions.
70962306a36Sopenharmony_ci
71062306a36Sopenharmony_ci	  See https://eprint.iacr.org/2021/1441
71162306a36Sopenharmony_ci
71262306a36Sopenharmony_ciconfig CRYPTO_KEYWRAP
71362306a36Sopenharmony_ci	tristate "KW (AES Key Wrap)"
71462306a36Sopenharmony_ci	select CRYPTO_SKCIPHER
71562306a36Sopenharmony_ci	select CRYPTO_MANAGER
71662306a36Sopenharmony_ci	help
71762306a36Sopenharmony_ci	  KW (AES Key Wrap) authenticated encryption mode (NIST SP800-38F
71862306a36Sopenharmony_ci	  and RFC3394) without padding.
71962306a36Sopenharmony_ci
72062306a36Sopenharmony_ciconfig CRYPTO_LRW
72162306a36Sopenharmony_ci	tristate "LRW (Liskov Rivest Wagner)"
72262306a36Sopenharmony_ci	select CRYPTO_LIB_GF128MUL
72362306a36Sopenharmony_ci	select CRYPTO_SKCIPHER
72462306a36Sopenharmony_ci	select CRYPTO_MANAGER
72562306a36Sopenharmony_ci	select CRYPTO_ECB
72662306a36Sopenharmony_ci	help
72762306a36Sopenharmony_ci	  LRW (Liskov Rivest Wagner) mode
72862306a36Sopenharmony_ci
72962306a36Sopenharmony_ci	  A tweakable, non malleable, non movable
73062306a36Sopenharmony_ci	  narrow block cipher mode for dm-crypt.  Use it with cipher
73162306a36Sopenharmony_ci	  specification string aes-lrw-benbi, the key must be 256, 320 or 384.
73262306a36Sopenharmony_ci	  The first 128, 192 or 256 bits in the key are used for AES and the
73362306a36Sopenharmony_ci	  rest is used to tie each cipher block to its logical position.
73462306a36Sopenharmony_ci
73562306a36Sopenharmony_ci	  See https://people.csail.mit.edu/rivest/pubs/LRW02.pdf
73662306a36Sopenharmony_ci
73762306a36Sopenharmony_ciconfig CRYPTO_OFB
73862306a36Sopenharmony_ci	tristate "OFB (Output Feedback)"
73962306a36Sopenharmony_ci	select CRYPTO_SKCIPHER
74062306a36Sopenharmony_ci	select CRYPTO_MANAGER
74162306a36Sopenharmony_ci	help
74262306a36Sopenharmony_ci	  OFB (Output Feedback) mode (NIST SP800-38A)
74362306a36Sopenharmony_ci
74462306a36Sopenharmony_ci	  This mode makes a block cipher into a synchronous
74562306a36Sopenharmony_ci	  stream cipher. It generates keystream blocks, which are then XORed
74662306a36Sopenharmony_ci	  with the plaintext blocks to get the ciphertext. Flipping a bit in the
74762306a36Sopenharmony_ci	  ciphertext produces a flipped bit in the plaintext at the same
74862306a36Sopenharmony_ci	  location. This property allows many error correcting codes to function
74962306a36Sopenharmony_ci	  normally even when applied before encryption.
75062306a36Sopenharmony_ci
75162306a36Sopenharmony_ciconfig CRYPTO_PCBC
75262306a36Sopenharmony_ci	tristate "PCBC (Propagating Cipher Block Chaining)"
75362306a36Sopenharmony_ci	select CRYPTO_SKCIPHER
75462306a36Sopenharmony_ci	select CRYPTO_MANAGER
75562306a36Sopenharmony_ci	help
75662306a36Sopenharmony_ci	  PCBC (Propagating Cipher Block Chaining) mode
75762306a36Sopenharmony_ci
75862306a36Sopenharmony_ci	  This block cipher mode is required for RxRPC.
75962306a36Sopenharmony_ci
76062306a36Sopenharmony_ciconfig CRYPTO_XCTR
76162306a36Sopenharmony_ci	tristate
76262306a36Sopenharmony_ci	select CRYPTO_SKCIPHER
76362306a36Sopenharmony_ci	select CRYPTO_MANAGER
76462306a36Sopenharmony_ci	help
76562306a36Sopenharmony_ci	  XCTR (XOR Counter) mode for HCTR2
76662306a36Sopenharmony_ci
76762306a36Sopenharmony_ci	  This blockcipher mode is a variant of CTR mode using XORs and little-endian
76862306a36Sopenharmony_ci	  addition rather than big-endian arithmetic.
76962306a36Sopenharmony_ci
77062306a36Sopenharmony_ci	  XCTR mode is used to implement HCTR2.
77162306a36Sopenharmony_ci
77262306a36Sopenharmony_ciconfig CRYPTO_XTS
77362306a36Sopenharmony_ci	tristate "XTS (XOR Encrypt XOR with ciphertext stealing)"
77462306a36Sopenharmony_ci	select CRYPTO_SKCIPHER
77562306a36Sopenharmony_ci	select CRYPTO_MANAGER
77662306a36Sopenharmony_ci	select CRYPTO_ECB
77762306a36Sopenharmony_ci	help
77862306a36Sopenharmony_ci	  XTS (XOR Encrypt XOR with ciphertext stealing) mode (NIST SP800-38E
77962306a36Sopenharmony_ci	  and IEEE 1619)
78062306a36Sopenharmony_ci
78162306a36Sopenharmony_ci	  Use with aes-xts-plain, key size 256, 384 or 512 bits. This
78262306a36Sopenharmony_ci	  implementation currently can't handle a sectorsize which is not a
78362306a36Sopenharmony_ci	  multiple of 16 bytes.
78462306a36Sopenharmony_ci
78562306a36Sopenharmony_ciconfig CRYPTO_NHPOLY1305
78662306a36Sopenharmony_ci	tristate
78762306a36Sopenharmony_ci	select CRYPTO_HASH
78862306a36Sopenharmony_ci	select CRYPTO_LIB_POLY1305_GENERIC
78962306a36Sopenharmony_ci
79062306a36Sopenharmony_ciendmenu
79162306a36Sopenharmony_ci
79262306a36Sopenharmony_cimenu "AEAD (authenticated encryption with associated data) ciphers"
79362306a36Sopenharmony_ci
79462306a36Sopenharmony_ciconfig CRYPTO_AEGIS128
79562306a36Sopenharmony_ci	tristate "AEGIS-128"
79662306a36Sopenharmony_ci	select CRYPTO_AEAD
79762306a36Sopenharmony_ci	select CRYPTO_AES  # for AES S-box tables
79862306a36Sopenharmony_ci	help
79962306a36Sopenharmony_ci	  AEGIS-128 AEAD algorithm
80062306a36Sopenharmony_ci
80162306a36Sopenharmony_ciconfig CRYPTO_AEGIS128_SIMD
80262306a36Sopenharmony_ci	bool "AEGIS-128 (arm NEON, arm64 NEON)"
80362306a36Sopenharmony_ci	depends on CRYPTO_AEGIS128 && ((ARM || ARM64) && KERNEL_MODE_NEON)
80462306a36Sopenharmony_ci	default y
80562306a36Sopenharmony_ci	help
80662306a36Sopenharmony_ci	  AEGIS-128 AEAD algorithm
80762306a36Sopenharmony_ci
80862306a36Sopenharmony_ci	  Architecture: arm or arm64 using:
80962306a36Sopenharmony_ci	  - NEON (Advanced SIMD) extension
81062306a36Sopenharmony_ci
81162306a36Sopenharmony_ciconfig CRYPTO_CHACHA20POLY1305
81262306a36Sopenharmony_ci	tristate "ChaCha20-Poly1305"
81362306a36Sopenharmony_ci	select CRYPTO_CHACHA20
81462306a36Sopenharmony_ci	select CRYPTO_POLY1305
81562306a36Sopenharmony_ci	select CRYPTO_AEAD
81662306a36Sopenharmony_ci	select CRYPTO_MANAGER
81762306a36Sopenharmony_ci	help
81862306a36Sopenharmony_ci	  ChaCha20 stream cipher and Poly1305 authenticator combined
81962306a36Sopenharmony_ci	  mode (RFC8439)
82062306a36Sopenharmony_ci
82162306a36Sopenharmony_ciconfig CRYPTO_CCM
82262306a36Sopenharmony_ci	tristate "CCM (Counter with Cipher Block Chaining-MAC)"
82362306a36Sopenharmony_ci	select CRYPTO_CTR
82462306a36Sopenharmony_ci	select CRYPTO_HASH
82562306a36Sopenharmony_ci	select CRYPTO_AEAD
82662306a36Sopenharmony_ci	select CRYPTO_MANAGER
82762306a36Sopenharmony_ci	help
82862306a36Sopenharmony_ci	  CCM (Counter with Cipher Block Chaining-Message Authentication Code)
82962306a36Sopenharmony_ci	  authenticated encryption mode (NIST SP800-38C)
83062306a36Sopenharmony_ci
83162306a36Sopenharmony_ciconfig CRYPTO_GCM
83262306a36Sopenharmony_ci	tristate "GCM (Galois/Counter Mode) and GMAC (GCM MAC)"
83362306a36Sopenharmony_ci	select CRYPTO_CTR
83462306a36Sopenharmony_ci	select CRYPTO_AEAD
83562306a36Sopenharmony_ci	select CRYPTO_GHASH
83662306a36Sopenharmony_ci	select CRYPTO_NULL
83762306a36Sopenharmony_ci	select CRYPTO_MANAGER
83862306a36Sopenharmony_ci	help
83962306a36Sopenharmony_ci	  GCM (Galois/Counter Mode) authenticated encryption mode and GMAC
84062306a36Sopenharmony_ci	  (GCM Message Authentication Code) (NIST SP800-38D)
84162306a36Sopenharmony_ci
84262306a36Sopenharmony_ci	  This is required for IPSec ESP (XFRM_ESP).
84362306a36Sopenharmony_ci
84462306a36Sopenharmony_ciconfig CRYPTO_GENIV
84562306a36Sopenharmony_ci	tristate
84662306a36Sopenharmony_ci	select CRYPTO_AEAD
84762306a36Sopenharmony_ci	select CRYPTO_NULL
84862306a36Sopenharmony_ci	select CRYPTO_MANAGER
84962306a36Sopenharmony_ci	select CRYPTO_RNG_DEFAULT
85062306a36Sopenharmony_ci
85162306a36Sopenharmony_ciconfig CRYPTO_SEQIV
85262306a36Sopenharmony_ci	tristate "Sequence Number IV Generator"
85362306a36Sopenharmony_ci	select CRYPTO_GENIV
85462306a36Sopenharmony_ci	help
85562306a36Sopenharmony_ci	  Sequence Number IV generator
85662306a36Sopenharmony_ci
85762306a36Sopenharmony_ci	  This IV generator generates an IV based on a sequence number by
85862306a36Sopenharmony_ci	  xoring it with a salt.  This algorithm is mainly useful for CTR.
85962306a36Sopenharmony_ci
86062306a36Sopenharmony_ci	  This is required for IPsec ESP (XFRM_ESP).
86162306a36Sopenharmony_ci
86262306a36Sopenharmony_ciconfig CRYPTO_ECHAINIV
86362306a36Sopenharmony_ci	tristate "Encrypted Chain IV Generator"
86462306a36Sopenharmony_ci	select CRYPTO_GENIV
86562306a36Sopenharmony_ci	help
86662306a36Sopenharmony_ci	  Encrypted Chain IV generator
86762306a36Sopenharmony_ci
86862306a36Sopenharmony_ci	  This IV generator generates an IV based on the encryption of
86962306a36Sopenharmony_ci	  a sequence number xored with a salt.  This is the default
87062306a36Sopenharmony_ci	  algorithm for CBC.
87162306a36Sopenharmony_ci
87262306a36Sopenharmony_ciconfig CRYPTO_ESSIV
87362306a36Sopenharmony_ci	tristate "Encrypted Salt-Sector IV Generator"
87462306a36Sopenharmony_ci	select CRYPTO_AUTHENC
87562306a36Sopenharmony_ci	help
87662306a36Sopenharmony_ci	  Encrypted Salt-Sector IV generator
87762306a36Sopenharmony_ci
87862306a36Sopenharmony_ci	  This IV generator is used in some cases by fscrypt and/or
87962306a36Sopenharmony_ci	  dm-crypt. It uses the hash of the block encryption key as the
88062306a36Sopenharmony_ci	  symmetric key for a block encryption pass applied to the input
88162306a36Sopenharmony_ci	  IV, making low entropy IV sources more suitable for block
88262306a36Sopenharmony_ci	  encryption.
88362306a36Sopenharmony_ci
88462306a36Sopenharmony_ci	  This driver implements a crypto API template that can be
88562306a36Sopenharmony_ci	  instantiated either as an skcipher or as an AEAD (depending on the
88662306a36Sopenharmony_ci	  type of the first template argument), and which defers encryption
88762306a36Sopenharmony_ci	  and decryption requests to the encapsulated cipher after applying
88862306a36Sopenharmony_ci	  ESSIV to the input IV. Note that in the AEAD case, it is assumed
88962306a36Sopenharmony_ci	  that the keys are presented in the same format used by the authenc
89062306a36Sopenharmony_ci	  template, and that the IV appears at the end of the authenticated
89162306a36Sopenharmony_ci	  associated data (AAD) region (which is how dm-crypt uses it.)
89262306a36Sopenharmony_ci
89362306a36Sopenharmony_ci	  Note that the use of ESSIV is not recommended for new deployments,
89462306a36Sopenharmony_ci	  and so this only needs to be enabled when interoperability with
89562306a36Sopenharmony_ci	  existing encrypted volumes of filesystems is required, or when
89662306a36Sopenharmony_ci	  building for a particular system that requires it (e.g., when
89762306a36Sopenharmony_ci	  the SoC in question has accelerated CBC but not XTS, making CBC
89862306a36Sopenharmony_ci	  combined with ESSIV the only feasible mode for h/w accelerated
89962306a36Sopenharmony_ci	  block encryption)
90062306a36Sopenharmony_ci
90162306a36Sopenharmony_ciendmenu
90262306a36Sopenharmony_ci
90362306a36Sopenharmony_cimenu "Hashes, digests, and MACs"
90462306a36Sopenharmony_ci
90562306a36Sopenharmony_ciconfig CRYPTO_BLAKE2B
90662306a36Sopenharmony_ci	tristate "BLAKE2b"
90762306a36Sopenharmony_ci	select CRYPTO_HASH
90862306a36Sopenharmony_ci	help
90962306a36Sopenharmony_ci	  BLAKE2b cryptographic hash function (RFC 7693)
91062306a36Sopenharmony_ci
91162306a36Sopenharmony_ci	  BLAKE2b is optimized for 64-bit platforms and can produce digests
91262306a36Sopenharmony_ci	  of any size between 1 and 64 bytes. The keyed hash is also implemented.
91362306a36Sopenharmony_ci
91462306a36Sopenharmony_ci	  This module provides the following algorithms:
91562306a36Sopenharmony_ci	  - blake2b-160
91662306a36Sopenharmony_ci	  - blake2b-256
91762306a36Sopenharmony_ci	  - blake2b-384
91862306a36Sopenharmony_ci	  - blake2b-512
91962306a36Sopenharmony_ci
92062306a36Sopenharmony_ci	  Used by the btrfs filesystem.
92162306a36Sopenharmony_ci
92262306a36Sopenharmony_ci	  See https://blake2.net for further information.
92362306a36Sopenharmony_ci
92462306a36Sopenharmony_ciconfig CRYPTO_CMAC
92562306a36Sopenharmony_ci	tristate "CMAC (Cipher-based MAC)"
92662306a36Sopenharmony_ci	select CRYPTO_HASH
92762306a36Sopenharmony_ci	select CRYPTO_MANAGER
92862306a36Sopenharmony_ci	help
92962306a36Sopenharmony_ci	  CMAC (Cipher-based Message Authentication Code) authentication
93062306a36Sopenharmony_ci	  mode (NIST SP800-38B and IETF RFC4493)
93162306a36Sopenharmony_ci
93262306a36Sopenharmony_ciconfig CRYPTO_GHASH
93362306a36Sopenharmony_ci	tristate "GHASH"
93462306a36Sopenharmony_ci	select CRYPTO_HASH
93562306a36Sopenharmony_ci	select CRYPTO_LIB_GF128MUL
93662306a36Sopenharmony_ci	help
93762306a36Sopenharmony_ci	  GCM GHASH function (NIST SP800-38D)
93862306a36Sopenharmony_ci
93962306a36Sopenharmony_ciconfig CRYPTO_HMAC
94062306a36Sopenharmony_ci	tristate "HMAC (Keyed-Hash MAC)"
94162306a36Sopenharmony_ci	select CRYPTO_HASH
94262306a36Sopenharmony_ci	select CRYPTO_MANAGER
94362306a36Sopenharmony_ci	help
94462306a36Sopenharmony_ci	  HMAC (Keyed-Hash Message Authentication Code) (FIPS 198 and
94562306a36Sopenharmony_ci	  RFC2104)
94662306a36Sopenharmony_ci
94762306a36Sopenharmony_ci	  This is required for IPsec AH (XFRM_AH) and IPsec ESP (XFRM_ESP).
94862306a36Sopenharmony_ci
94962306a36Sopenharmony_ciconfig CRYPTO_MD4
95062306a36Sopenharmony_ci	tristate "MD4"
95162306a36Sopenharmony_ci	select CRYPTO_HASH
95262306a36Sopenharmony_ci	help
95362306a36Sopenharmony_ci	  MD4 message digest algorithm (RFC1320)
95462306a36Sopenharmony_ci
95562306a36Sopenharmony_ciconfig CRYPTO_MD5
95662306a36Sopenharmony_ci	tristate "MD5"
95762306a36Sopenharmony_ci	select CRYPTO_HASH
95862306a36Sopenharmony_ci	help
95962306a36Sopenharmony_ci	  MD5 message digest algorithm (RFC1321)
96062306a36Sopenharmony_ci
96162306a36Sopenharmony_ciconfig CRYPTO_MICHAEL_MIC
96262306a36Sopenharmony_ci	tristate "Michael MIC"
96362306a36Sopenharmony_ci	select CRYPTO_HASH
96462306a36Sopenharmony_ci	help
96562306a36Sopenharmony_ci	  Michael MIC (Message Integrity Code) (IEEE 802.11i)
96662306a36Sopenharmony_ci
96762306a36Sopenharmony_ci	  Defined by the IEEE 802.11i TKIP (Temporal Key Integrity Protocol),
96862306a36Sopenharmony_ci	  known as WPA (Wif-Fi Protected Access).
96962306a36Sopenharmony_ci
97062306a36Sopenharmony_ci	  This algorithm is required for TKIP, but it should not be used for
97162306a36Sopenharmony_ci	  other purposes because of the weakness of the algorithm.
97262306a36Sopenharmony_ci
97362306a36Sopenharmony_ciconfig CRYPTO_POLYVAL
97462306a36Sopenharmony_ci	tristate
97562306a36Sopenharmony_ci	select CRYPTO_HASH
97662306a36Sopenharmony_ci	select CRYPTO_LIB_GF128MUL
97762306a36Sopenharmony_ci	help
97862306a36Sopenharmony_ci	  POLYVAL hash function for HCTR2
97962306a36Sopenharmony_ci
98062306a36Sopenharmony_ci	  This is used in HCTR2.  It is not a general-purpose
98162306a36Sopenharmony_ci	  cryptographic hash function.
98262306a36Sopenharmony_ci
98362306a36Sopenharmony_ciconfig CRYPTO_POLY1305
98462306a36Sopenharmony_ci	tristate "Poly1305"
98562306a36Sopenharmony_ci	select CRYPTO_HASH
98662306a36Sopenharmony_ci	select CRYPTO_LIB_POLY1305_GENERIC
98762306a36Sopenharmony_ci	help
98862306a36Sopenharmony_ci	  Poly1305 authenticator algorithm (RFC7539)
98962306a36Sopenharmony_ci
99062306a36Sopenharmony_ci	  Poly1305 is an authenticator algorithm designed by Daniel J. Bernstein.
99162306a36Sopenharmony_ci	  It is used for the ChaCha20-Poly1305 AEAD, specified in RFC7539 for use
99262306a36Sopenharmony_ci	  in IETF protocols. This is the portable C implementation of Poly1305.
99362306a36Sopenharmony_ci
99462306a36Sopenharmony_ciconfig CRYPTO_RMD160
99562306a36Sopenharmony_ci	tristate "RIPEMD-160"
99662306a36Sopenharmony_ci	select CRYPTO_HASH
99762306a36Sopenharmony_ci	help
99862306a36Sopenharmony_ci	  RIPEMD-160 hash function (ISO/IEC 10118-3)
99962306a36Sopenharmony_ci
100062306a36Sopenharmony_ci	  RIPEMD-160 is a 160-bit cryptographic hash function. It is intended
100162306a36Sopenharmony_ci	  to be used as a secure replacement for the 128-bit hash functions
100262306a36Sopenharmony_ci	  MD4, MD5 and its predecessor RIPEMD
100362306a36Sopenharmony_ci	  (not to be confused with RIPEMD-128).
100462306a36Sopenharmony_ci
100562306a36Sopenharmony_ci	  Its speed is comparable to SHA-1 and there are no known attacks
100662306a36Sopenharmony_ci	  against RIPEMD-160.
100762306a36Sopenharmony_ci
100862306a36Sopenharmony_ci	  Developed by Hans Dobbertin, Antoon Bosselaers and Bart Preneel.
100962306a36Sopenharmony_ci	  See https://homes.esat.kuleuven.be/~bosselae/ripemd160.html
101062306a36Sopenharmony_ci	  for further information.
101162306a36Sopenharmony_ci
101262306a36Sopenharmony_ciconfig CRYPTO_SHA1
101362306a36Sopenharmony_ci	tristate "SHA-1"
101462306a36Sopenharmony_ci	select CRYPTO_HASH
101562306a36Sopenharmony_ci	select CRYPTO_LIB_SHA1
101662306a36Sopenharmony_ci	help
101762306a36Sopenharmony_ci	  SHA-1 secure hash algorithm (FIPS 180, ISO/IEC 10118-3)
101862306a36Sopenharmony_ci
101962306a36Sopenharmony_ciconfig CRYPTO_SHA256
102062306a36Sopenharmony_ci	tristate "SHA-224 and SHA-256"
102162306a36Sopenharmony_ci	select CRYPTO_HASH
102262306a36Sopenharmony_ci	select CRYPTO_LIB_SHA256
102362306a36Sopenharmony_ci	help
102462306a36Sopenharmony_ci	  SHA-224 and SHA-256 secure hash algorithms (FIPS 180, ISO/IEC 10118-3)
102562306a36Sopenharmony_ci
102662306a36Sopenharmony_ci	  This is required for IPsec AH (XFRM_AH) and IPsec ESP (XFRM_ESP).
102762306a36Sopenharmony_ci	  Used by the btrfs filesystem, Ceph, NFS, and SMB.
102862306a36Sopenharmony_ci
102962306a36Sopenharmony_ciconfig CRYPTO_SHA512
103062306a36Sopenharmony_ci	tristate "SHA-384 and SHA-512"
103162306a36Sopenharmony_ci	select CRYPTO_HASH
103262306a36Sopenharmony_ci	help
103362306a36Sopenharmony_ci	  SHA-384 and SHA-512 secure hash algorithms (FIPS 180, ISO/IEC 10118-3)
103462306a36Sopenharmony_ci
103562306a36Sopenharmony_ciconfig CRYPTO_SHA3
103662306a36Sopenharmony_ci	tristate "SHA-3"
103762306a36Sopenharmony_ci	select CRYPTO_HASH
103862306a36Sopenharmony_ci	help
103962306a36Sopenharmony_ci	  SHA-3 secure hash algorithms (FIPS 202, ISO/IEC 10118-3)
104062306a36Sopenharmony_ci
104162306a36Sopenharmony_ciconfig CRYPTO_SM3
104262306a36Sopenharmony_ci	tristate
104362306a36Sopenharmony_ci
104462306a36Sopenharmony_ciconfig CRYPTO_SM3_GENERIC
104562306a36Sopenharmony_ci	tristate "SM3 (ShangMi 3)"
104662306a36Sopenharmony_ci	select CRYPTO_HASH
104762306a36Sopenharmony_ci	select CRYPTO_SM3
104862306a36Sopenharmony_ci	help
104962306a36Sopenharmony_ci	  SM3 (ShangMi 3) secure hash function (OSCCA GM/T 0004-2012, ISO/IEC 10118-3)
105062306a36Sopenharmony_ci
105162306a36Sopenharmony_ci	  This is part of the Chinese Commercial Cryptography suite.
105262306a36Sopenharmony_ci
105362306a36Sopenharmony_ci	  References:
105462306a36Sopenharmony_ci	  http://www.oscca.gov.cn/UpFile/20101222141857786.pdf
105562306a36Sopenharmony_ci	  https://datatracker.ietf.org/doc/html/draft-shen-sm3-hash
105662306a36Sopenharmony_ci
105762306a36Sopenharmony_ciconfig CRYPTO_STREEBOG
105862306a36Sopenharmony_ci	tristate "Streebog"
105962306a36Sopenharmony_ci	select CRYPTO_HASH
106062306a36Sopenharmony_ci	help
106162306a36Sopenharmony_ci	  Streebog Hash Function (GOST R 34.11-2012, RFC 6986, ISO/IEC 10118-3)
106262306a36Sopenharmony_ci
106362306a36Sopenharmony_ci	  This is one of the Russian cryptographic standard algorithms (called
106462306a36Sopenharmony_ci	  GOST algorithms). This setting enables two hash algorithms with
106562306a36Sopenharmony_ci	  256 and 512 bits output.
106662306a36Sopenharmony_ci
106762306a36Sopenharmony_ci	  References:
106862306a36Sopenharmony_ci	  https://tc26.ru/upload/iblock/fed/feddbb4d26b685903faa2ba11aea43f6.pdf
106962306a36Sopenharmony_ci	  https://tools.ietf.org/html/rfc6986
107062306a36Sopenharmony_ci
107162306a36Sopenharmony_ciconfig CRYPTO_VMAC
107262306a36Sopenharmony_ci	tristate "VMAC"
107362306a36Sopenharmony_ci	select CRYPTO_HASH
107462306a36Sopenharmony_ci	select CRYPTO_MANAGER
107562306a36Sopenharmony_ci	help
107662306a36Sopenharmony_ci	  VMAC is a message authentication algorithm designed for
107762306a36Sopenharmony_ci	  very high speed on 64-bit architectures.
107862306a36Sopenharmony_ci
107962306a36Sopenharmony_ci	  See https://fastcrypto.org/vmac for further information.
108062306a36Sopenharmony_ci
108162306a36Sopenharmony_ciconfig CRYPTO_WP512
108262306a36Sopenharmony_ci	tristate "Whirlpool"
108362306a36Sopenharmony_ci	select CRYPTO_HASH
108462306a36Sopenharmony_ci	help
108562306a36Sopenharmony_ci	  Whirlpool hash function (ISO/IEC 10118-3)
108662306a36Sopenharmony_ci
108762306a36Sopenharmony_ci	  512, 384 and 256-bit hashes.
108862306a36Sopenharmony_ci
108962306a36Sopenharmony_ci	  Whirlpool-512 is part of the NESSIE cryptographic primitives.
109062306a36Sopenharmony_ci
109162306a36Sopenharmony_ci	  See https://web.archive.org/web/20171129084214/http://www.larc.usp.br/~pbarreto/WhirlpoolPage.html
109262306a36Sopenharmony_ci	  for further information.
109362306a36Sopenharmony_ci
109462306a36Sopenharmony_ciconfig CRYPTO_XCBC
109562306a36Sopenharmony_ci	tristate "XCBC-MAC (Extended Cipher Block Chaining MAC)"
109662306a36Sopenharmony_ci	select CRYPTO_HASH
109762306a36Sopenharmony_ci	select CRYPTO_MANAGER
109862306a36Sopenharmony_ci	help
109962306a36Sopenharmony_ci	  XCBC-MAC (Extended Cipher Block Chaining Message Authentication
110062306a36Sopenharmony_ci	  Code) (RFC3566)
110162306a36Sopenharmony_ci
110262306a36Sopenharmony_ciconfig CRYPTO_XXHASH
110362306a36Sopenharmony_ci	tristate "xxHash"
110462306a36Sopenharmony_ci	select CRYPTO_HASH
110562306a36Sopenharmony_ci	select XXHASH
110662306a36Sopenharmony_ci	help
110762306a36Sopenharmony_ci	  xxHash non-cryptographic hash algorithm
110862306a36Sopenharmony_ci
110962306a36Sopenharmony_ci	  Extremely fast, working at speeds close to RAM limits.
111062306a36Sopenharmony_ci
111162306a36Sopenharmony_ci	  Used by the btrfs filesystem.
111262306a36Sopenharmony_ci
111362306a36Sopenharmony_ciendmenu
111462306a36Sopenharmony_ci
111562306a36Sopenharmony_cimenu "CRCs (cyclic redundancy checks)"
111662306a36Sopenharmony_ci
111762306a36Sopenharmony_ciconfig CRYPTO_CRC32C
111862306a36Sopenharmony_ci	tristate "CRC32c"
111962306a36Sopenharmony_ci	select CRYPTO_HASH
112062306a36Sopenharmony_ci	select CRC32
112162306a36Sopenharmony_ci	help
112262306a36Sopenharmony_ci	  CRC32c CRC algorithm with the iSCSI polynomial (RFC 3385 and RFC 3720)
112362306a36Sopenharmony_ci
112462306a36Sopenharmony_ci	  A 32-bit CRC (cyclic redundancy check) with a polynomial defined
112562306a36Sopenharmony_ci	  by G. Castagnoli, S. Braeuer and M. Herrman in "Optimization of Cyclic
112662306a36Sopenharmony_ci	  Redundancy-Check Codes with 24 and 32 Parity Bits", IEEE Transactions
112762306a36Sopenharmony_ci	  on Communications, Vol. 41, No. 6, June 1993, selected for use with
112862306a36Sopenharmony_ci	  iSCSI.
112962306a36Sopenharmony_ci
113062306a36Sopenharmony_ci	  Used by btrfs, ext4, jbd2, NVMeoF/TCP, and iSCSI.
113162306a36Sopenharmony_ci
113262306a36Sopenharmony_ciconfig CRYPTO_CRC32
113362306a36Sopenharmony_ci	tristate "CRC32"
113462306a36Sopenharmony_ci	select CRYPTO_HASH
113562306a36Sopenharmony_ci	select CRC32
113662306a36Sopenharmony_ci	help
113762306a36Sopenharmony_ci	  CRC32 CRC algorithm (IEEE 802.3)
113862306a36Sopenharmony_ci
113962306a36Sopenharmony_ci	  Used by RoCEv2 and f2fs.
114062306a36Sopenharmony_ci
114162306a36Sopenharmony_ciconfig CRYPTO_CRCT10DIF
114262306a36Sopenharmony_ci	tristate "CRCT10DIF"
114362306a36Sopenharmony_ci	select CRYPTO_HASH
114462306a36Sopenharmony_ci	help
114562306a36Sopenharmony_ci	  CRC16 CRC algorithm used for the T10 (SCSI) Data Integrity Field (DIF)
114662306a36Sopenharmony_ci
114762306a36Sopenharmony_ci	  CRC algorithm used by the SCSI Block Commands standard.
114862306a36Sopenharmony_ci
114962306a36Sopenharmony_ciconfig CRYPTO_CRC64_ROCKSOFT
115062306a36Sopenharmony_ci	tristate "CRC64 based on Rocksoft Model algorithm"
115162306a36Sopenharmony_ci	depends on CRC64
115262306a36Sopenharmony_ci	select CRYPTO_HASH
115362306a36Sopenharmony_ci	help
115462306a36Sopenharmony_ci	  CRC64 CRC algorithm based on the Rocksoft Model CRC Algorithm
115562306a36Sopenharmony_ci
115662306a36Sopenharmony_ci	  Used by the NVMe implementation of T10 DIF (BLK_DEV_INTEGRITY)
115762306a36Sopenharmony_ci
115862306a36Sopenharmony_ci	  See https://zlib.net/crc_v3.txt
115962306a36Sopenharmony_ci
116062306a36Sopenharmony_ciendmenu
116162306a36Sopenharmony_ci
116262306a36Sopenharmony_cimenu "Compression"
116362306a36Sopenharmony_ci
116462306a36Sopenharmony_ciconfig CRYPTO_DEFLATE
116562306a36Sopenharmony_ci	tristate "Deflate"
116662306a36Sopenharmony_ci	select CRYPTO_ALGAPI
116762306a36Sopenharmony_ci	select CRYPTO_ACOMP2
116862306a36Sopenharmony_ci	select ZLIB_INFLATE
116962306a36Sopenharmony_ci	select ZLIB_DEFLATE
117062306a36Sopenharmony_ci	help
117162306a36Sopenharmony_ci	  Deflate compression algorithm (RFC1951)
117262306a36Sopenharmony_ci
117362306a36Sopenharmony_ci	  Used by IPSec with the IPCOMP protocol (RFC3173, RFC2394)
117462306a36Sopenharmony_ci
117562306a36Sopenharmony_ciconfig CRYPTO_LZO
117662306a36Sopenharmony_ci	tristate "LZO"
117762306a36Sopenharmony_ci	select CRYPTO_ALGAPI
117862306a36Sopenharmony_ci	select CRYPTO_ACOMP2
117962306a36Sopenharmony_ci	select LZO_COMPRESS
118062306a36Sopenharmony_ci	select LZO_DECOMPRESS
118162306a36Sopenharmony_ci	help
118262306a36Sopenharmony_ci	  LZO compression algorithm
118362306a36Sopenharmony_ci
118462306a36Sopenharmony_ci	  See https://www.oberhumer.com/opensource/lzo/ for further information.
118562306a36Sopenharmony_ci
118662306a36Sopenharmony_ciconfig CRYPTO_842
118762306a36Sopenharmony_ci	tristate "842"
118862306a36Sopenharmony_ci	select CRYPTO_ALGAPI
118962306a36Sopenharmony_ci	select CRYPTO_ACOMP2
119062306a36Sopenharmony_ci	select 842_COMPRESS
119162306a36Sopenharmony_ci	select 842_DECOMPRESS
119262306a36Sopenharmony_ci	help
119362306a36Sopenharmony_ci	  842 compression algorithm by IBM
119462306a36Sopenharmony_ci
119562306a36Sopenharmony_ci	  See https://github.com/plauth/lib842 for further information.
119662306a36Sopenharmony_ci
119762306a36Sopenharmony_ciconfig CRYPTO_LZ4
119862306a36Sopenharmony_ci	tristate "LZ4"
119962306a36Sopenharmony_ci	select CRYPTO_ALGAPI
120062306a36Sopenharmony_ci	select CRYPTO_ACOMP2
120162306a36Sopenharmony_ci	select LZ4_COMPRESS
120262306a36Sopenharmony_ci	select LZ4_DECOMPRESS
120362306a36Sopenharmony_ci	help
120462306a36Sopenharmony_ci	  LZ4 compression algorithm
120562306a36Sopenharmony_ci
120662306a36Sopenharmony_ci	  See https://github.com/lz4/lz4 for further information.
120762306a36Sopenharmony_ci
120862306a36Sopenharmony_ciconfig CRYPTO_LZ4HC
120962306a36Sopenharmony_ci	tristate "LZ4HC"
121062306a36Sopenharmony_ci	select CRYPTO_ALGAPI
121162306a36Sopenharmony_ci	select CRYPTO_ACOMP2
121262306a36Sopenharmony_ci	select LZ4HC_COMPRESS
121362306a36Sopenharmony_ci	select LZ4_DECOMPRESS
121462306a36Sopenharmony_ci	help
121562306a36Sopenharmony_ci	  LZ4 high compression mode algorithm
121662306a36Sopenharmony_ci
121762306a36Sopenharmony_ci	  See https://github.com/lz4/lz4 for further information.
121862306a36Sopenharmony_ci
121962306a36Sopenharmony_ciconfig CRYPTO_ZSTD
122062306a36Sopenharmony_ci	tristate "Zstd"
122162306a36Sopenharmony_ci	select CRYPTO_ALGAPI
122262306a36Sopenharmony_ci	select CRYPTO_ACOMP2
122362306a36Sopenharmony_ci	select ZSTD_COMPRESS
122462306a36Sopenharmony_ci	select ZSTD_DECOMPRESS
122562306a36Sopenharmony_ci	help
122662306a36Sopenharmony_ci	  zstd compression algorithm
122762306a36Sopenharmony_ci
122862306a36Sopenharmony_ci	  See https://github.com/facebook/zstd for further information.
122962306a36Sopenharmony_ci
123062306a36Sopenharmony_ciendmenu
123162306a36Sopenharmony_ci
123262306a36Sopenharmony_cimenu "Random number generation"
123362306a36Sopenharmony_ci
123462306a36Sopenharmony_ciconfig CRYPTO_ANSI_CPRNG
123562306a36Sopenharmony_ci	tristate "ANSI PRNG (Pseudo Random Number Generator)"
123662306a36Sopenharmony_ci	select CRYPTO_AES
123762306a36Sopenharmony_ci	select CRYPTO_RNG
123862306a36Sopenharmony_ci	help
123962306a36Sopenharmony_ci	  Pseudo RNG (random number generator) (ANSI X9.31 Appendix A.2.4)
124062306a36Sopenharmony_ci
124162306a36Sopenharmony_ci	  This uses the AES cipher algorithm.
124262306a36Sopenharmony_ci
124362306a36Sopenharmony_ci	  Note that this option must be enabled if CRYPTO_FIPS is selected
124462306a36Sopenharmony_ci
124562306a36Sopenharmony_cimenuconfig CRYPTO_DRBG_MENU
124662306a36Sopenharmony_ci	tristate "NIST SP800-90A DRBG (Deterministic Random Bit Generator)"
124762306a36Sopenharmony_ci	help
124862306a36Sopenharmony_ci	  DRBG (Deterministic Random Bit Generator) (NIST SP800-90A)
124962306a36Sopenharmony_ci
125062306a36Sopenharmony_ci	  In the following submenu, one or more of the DRBG types must be selected.
125162306a36Sopenharmony_ci
125262306a36Sopenharmony_ciif CRYPTO_DRBG_MENU
125362306a36Sopenharmony_ci
125462306a36Sopenharmony_ciconfig CRYPTO_DRBG_HMAC
125562306a36Sopenharmony_ci	bool
125662306a36Sopenharmony_ci	default y
125762306a36Sopenharmony_ci	select CRYPTO_HMAC
125862306a36Sopenharmony_ci	select CRYPTO_SHA512
125962306a36Sopenharmony_ci
126062306a36Sopenharmony_ciconfig CRYPTO_DRBG_HASH
126162306a36Sopenharmony_ci	bool "Hash_DRBG"
126262306a36Sopenharmony_ci	select CRYPTO_SHA256
126362306a36Sopenharmony_ci	help
126462306a36Sopenharmony_ci	  Hash_DRBG variant as defined in NIST SP800-90A.
126562306a36Sopenharmony_ci
126662306a36Sopenharmony_ci	  This uses the SHA-1, SHA-256, SHA-384, or SHA-512 hash algorithms.
126762306a36Sopenharmony_ci
126862306a36Sopenharmony_ciconfig CRYPTO_DRBG_CTR
126962306a36Sopenharmony_ci	bool "CTR_DRBG"
127062306a36Sopenharmony_ci	select CRYPTO_AES
127162306a36Sopenharmony_ci	select CRYPTO_CTR
127262306a36Sopenharmony_ci	help
127362306a36Sopenharmony_ci	  CTR_DRBG variant as defined in NIST SP800-90A.
127462306a36Sopenharmony_ci
127562306a36Sopenharmony_ci	  This uses the AES cipher algorithm with the counter block mode.
127662306a36Sopenharmony_ci
127762306a36Sopenharmony_ciconfig CRYPTO_DRBG
127862306a36Sopenharmony_ci	tristate
127962306a36Sopenharmony_ci	default CRYPTO_DRBG_MENU
128062306a36Sopenharmony_ci	select CRYPTO_RNG
128162306a36Sopenharmony_ci	select CRYPTO_JITTERENTROPY
128262306a36Sopenharmony_ci
128362306a36Sopenharmony_ciendif	# if CRYPTO_DRBG_MENU
128462306a36Sopenharmony_ci
128562306a36Sopenharmony_ciconfig CRYPTO_JITTERENTROPY
128662306a36Sopenharmony_ci	tristate "CPU Jitter Non-Deterministic RNG (Random Number Generator)"
128762306a36Sopenharmony_ci	select CRYPTO_RNG
128862306a36Sopenharmony_ci	select CRYPTO_SHA3
128962306a36Sopenharmony_ci	help
129062306a36Sopenharmony_ci	  CPU Jitter RNG (Random Number Generator) from the Jitterentropy library
129162306a36Sopenharmony_ci
129262306a36Sopenharmony_ci	  A non-physical non-deterministic ("true") RNG (e.g., an entropy source
129362306a36Sopenharmony_ci	  compliant with NIST SP800-90B) intended to provide a seed to a
129462306a36Sopenharmony_ci	  deterministic RNG (e.g., per NIST SP800-90C).
129562306a36Sopenharmony_ci	  This RNG does not perform any cryptographic whitening of the generated
129662306a36Sopenharmony_ci	  random numbers.
129762306a36Sopenharmony_ci
129862306a36Sopenharmony_ci	  See https://www.chronox.de/jent/
129962306a36Sopenharmony_ci
130062306a36Sopenharmony_ciconfig CRYPTO_JITTERENTROPY_TESTINTERFACE
130162306a36Sopenharmony_ci	bool "CPU Jitter RNG Test Interface"
130262306a36Sopenharmony_ci	depends on CRYPTO_JITTERENTROPY
130362306a36Sopenharmony_ci	help
130462306a36Sopenharmony_ci	  The test interface allows a privileged process to capture
130562306a36Sopenharmony_ci	  the raw unconditioned high resolution time stamp noise that
130662306a36Sopenharmony_ci	  is collected by the Jitter RNG for statistical analysis. As
130762306a36Sopenharmony_ci	  this data is used at the same time to generate random bits,
130862306a36Sopenharmony_ci	  the Jitter RNG operates in an insecure mode as long as the
130962306a36Sopenharmony_ci	  recording is enabled. This interface therefore is only
131062306a36Sopenharmony_ci	  intended for testing purposes and is not suitable for
131162306a36Sopenharmony_ci	  production systems.
131262306a36Sopenharmony_ci
131362306a36Sopenharmony_ci	  The raw noise data can be obtained using the jent_raw_hires
131462306a36Sopenharmony_ci	  debugfs file. Using the option
131562306a36Sopenharmony_ci	  jitterentropy_testing.boot_raw_hires_test=1 the raw noise of
131662306a36Sopenharmony_ci	  the first 1000 entropy events since boot can be sampled.
131762306a36Sopenharmony_ci
131862306a36Sopenharmony_ci	  If unsure, select N.
131962306a36Sopenharmony_ci
132062306a36Sopenharmony_ciconfig CRYPTO_KDF800108_CTR
132162306a36Sopenharmony_ci	tristate
132262306a36Sopenharmony_ci	select CRYPTO_HMAC
132362306a36Sopenharmony_ci	select CRYPTO_SHA256
132462306a36Sopenharmony_ci
132562306a36Sopenharmony_ciendmenu
132662306a36Sopenharmony_cimenu "Userspace interface"
132762306a36Sopenharmony_ci
132862306a36Sopenharmony_ciconfig CRYPTO_USER_API
132962306a36Sopenharmony_ci	tristate
133062306a36Sopenharmony_ci
133162306a36Sopenharmony_ciconfig CRYPTO_USER_API_HASH
133262306a36Sopenharmony_ci	tristate "Hash algorithms"
133362306a36Sopenharmony_ci	depends on NET
133462306a36Sopenharmony_ci	select CRYPTO_HASH
133562306a36Sopenharmony_ci	select CRYPTO_USER_API
133662306a36Sopenharmony_ci	help
133762306a36Sopenharmony_ci	  Enable the userspace interface for hash algorithms.
133862306a36Sopenharmony_ci
133962306a36Sopenharmony_ci	  See Documentation/crypto/userspace-if.rst and
134062306a36Sopenharmony_ci	  https://www.chronox.de/libkcapi/html/index.html
134162306a36Sopenharmony_ci
134262306a36Sopenharmony_ciconfig CRYPTO_USER_API_SKCIPHER
134362306a36Sopenharmony_ci	tristate "Symmetric key cipher algorithms"
134462306a36Sopenharmony_ci	depends on NET
134562306a36Sopenharmony_ci	select CRYPTO_SKCIPHER
134662306a36Sopenharmony_ci	select CRYPTO_USER_API
134762306a36Sopenharmony_ci	help
134862306a36Sopenharmony_ci	  Enable the userspace interface for symmetric key cipher algorithms.
134962306a36Sopenharmony_ci
135062306a36Sopenharmony_ci	  See Documentation/crypto/userspace-if.rst and
135162306a36Sopenharmony_ci	  https://www.chronox.de/libkcapi/html/index.html
135262306a36Sopenharmony_ci
135362306a36Sopenharmony_ciconfig CRYPTO_USER_API_RNG
135462306a36Sopenharmony_ci	tristate "RNG (random number generator) algorithms"
135562306a36Sopenharmony_ci	depends on NET
135662306a36Sopenharmony_ci	select CRYPTO_RNG
135762306a36Sopenharmony_ci	select CRYPTO_USER_API
135862306a36Sopenharmony_ci	help
135962306a36Sopenharmony_ci	  Enable the userspace interface for RNG (random number generator)
136062306a36Sopenharmony_ci	  algorithms.
136162306a36Sopenharmony_ci
136262306a36Sopenharmony_ci	  See Documentation/crypto/userspace-if.rst and
136362306a36Sopenharmony_ci	  https://www.chronox.de/libkcapi/html/index.html
136462306a36Sopenharmony_ci
136562306a36Sopenharmony_ciconfig CRYPTO_USER_API_RNG_CAVP
136662306a36Sopenharmony_ci	bool "Enable CAVP testing of DRBG"
136762306a36Sopenharmony_ci	depends on CRYPTO_USER_API_RNG && CRYPTO_DRBG
136862306a36Sopenharmony_ci	help
136962306a36Sopenharmony_ci	  Enable extra APIs in the userspace interface for NIST CAVP
137062306a36Sopenharmony_ci	  (Cryptographic Algorithm Validation Program) testing:
137162306a36Sopenharmony_ci	  - resetting DRBG entropy
137262306a36Sopenharmony_ci	  - providing Additional Data
137362306a36Sopenharmony_ci
137462306a36Sopenharmony_ci	  This should only be enabled for CAVP testing. You should say
137562306a36Sopenharmony_ci	  no unless you know what this is.
137662306a36Sopenharmony_ci
137762306a36Sopenharmony_ciconfig CRYPTO_USER_API_AEAD
137862306a36Sopenharmony_ci	tristate "AEAD cipher algorithms"
137962306a36Sopenharmony_ci	depends on NET
138062306a36Sopenharmony_ci	select CRYPTO_AEAD
138162306a36Sopenharmony_ci	select CRYPTO_SKCIPHER
138262306a36Sopenharmony_ci	select CRYPTO_NULL
138362306a36Sopenharmony_ci	select CRYPTO_USER_API
138462306a36Sopenharmony_ci	help
138562306a36Sopenharmony_ci	  Enable the userspace interface for AEAD cipher algorithms.
138662306a36Sopenharmony_ci
138762306a36Sopenharmony_ci	  See Documentation/crypto/userspace-if.rst and
138862306a36Sopenharmony_ci	  https://www.chronox.de/libkcapi/html/index.html
138962306a36Sopenharmony_ci
139062306a36Sopenharmony_ciconfig CRYPTO_USER_API_ENABLE_OBSOLETE
139162306a36Sopenharmony_ci	bool "Obsolete cryptographic algorithms"
139262306a36Sopenharmony_ci	depends on CRYPTO_USER_API
139362306a36Sopenharmony_ci	default y
139462306a36Sopenharmony_ci	help
139562306a36Sopenharmony_ci	  Allow obsolete cryptographic algorithms to be selected that have
139662306a36Sopenharmony_ci	  already been phased out from internal use by the kernel, and are
139762306a36Sopenharmony_ci	  only useful for userspace clients that still rely on them.
139862306a36Sopenharmony_ci
139962306a36Sopenharmony_ciconfig CRYPTO_STATS
140062306a36Sopenharmony_ci	bool "Crypto usage statistics"
140162306a36Sopenharmony_ci	depends on CRYPTO_USER
140262306a36Sopenharmony_ci	help
140362306a36Sopenharmony_ci	  Enable the gathering of crypto stats.
140462306a36Sopenharmony_ci
140562306a36Sopenharmony_ci	  Enabling this option reduces the performance of the crypto API.  It
140662306a36Sopenharmony_ci	  should only be enabled when there is actually a use case for it.
140762306a36Sopenharmony_ci
140862306a36Sopenharmony_ci	  This collects data sizes, numbers of requests, and numbers
140962306a36Sopenharmony_ci	  of errors processed by:
141062306a36Sopenharmony_ci	  - AEAD ciphers (encrypt, decrypt)
141162306a36Sopenharmony_ci	  - asymmetric key ciphers (encrypt, decrypt, verify, sign)
141262306a36Sopenharmony_ci	  - symmetric key ciphers (encrypt, decrypt)
141362306a36Sopenharmony_ci	  - compression algorithms (compress, decompress)
141462306a36Sopenharmony_ci	  - hash algorithms (hash)
141562306a36Sopenharmony_ci	  - key-agreement protocol primitives (setsecret, generate
141662306a36Sopenharmony_ci	    public key, compute shared secret)
141762306a36Sopenharmony_ci	  - RNG (generate, seed)
141862306a36Sopenharmony_ci
141962306a36Sopenharmony_ciendmenu
142062306a36Sopenharmony_ci
142162306a36Sopenharmony_ciconfig CRYPTO_HASH_INFO
142262306a36Sopenharmony_ci	bool
142362306a36Sopenharmony_ci
142462306a36Sopenharmony_ciif !KMSAN # avoid false positives from assembly
142562306a36Sopenharmony_ciif ARM
142662306a36Sopenharmony_cisource "arch/arm/crypto/Kconfig"
142762306a36Sopenharmony_ciendif
142862306a36Sopenharmony_ciif ARM64
142962306a36Sopenharmony_cisource "arch/arm64/crypto/Kconfig"
143062306a36Sopenharmony_ciendif
143162306a36Sopenharmony_ciif LOONGARCH
143262306a36Sopenharmony_cisource "arch/loongarch/crypto/Kconfig"
143362306a36Sopenharmony_ciendif
143462306a36Sopenharmony_ciif MIPS
143562306a36Sopenharmony_cisource "arch/mips/crypto/Kconfig"
143662306a36Sopenharmony_ciendif
143762306a36Sopenharmony_ciif PPC
143862306a36Sopenharmony_cisource "arch/powerpc/crypto/Kconfig"
143962306a36Sopenharmony_ciendif
144062306a36Sopenharmony_ciif S390
144162306a36Sopenharmony_cisource "arch/s390/crypto/Kconfig"
144262306a36Sopenharmony_ciendif
144362306a36Sopenharmony_ciif SPARC
144462306a36Sopenharmony_cisource "arch/sparc/crypto/Kconfig"
144562306a36Sopenharmony_ciendif
144662306a36Sopenharmony_ciif X86
144762306a36Sopenharmony_cisource "arch/x86/crypto/Kconfig"
144862306a36Sopenharmony_ciendif
144962306a36Sopenharmony_ciendif
145062306a36Sopenharmony_ci
145162306a36Sopenharmony_cisource "drivers/crypto/Kconfig"
145262306a36Sopenharmony_cisource "crypto/asymmetric_keys/Kconfig"
145362306a36Sopenharmony_cisource "certs/Kconfig"
145462306a36Sopenharmony_ci
145562306a36Sopenharmony_ciendif	# if CRYPTO
1456