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