# SPDX-License-Identifier: GPL-2.0## Generic algorithms support#config XOR_BLOCKS tristate ## async_tx api: hardware offloaded memory transfer/transform support#source "crypto/async_tx/Kconfig" ## Cryptographic API Configuration#menuconfig CRYPTO tristate "Cryptographic API" help This option provides the core Cryptographic API. if CRYPTO comment "Crypto core or helper" config CRYPTO_FIPS bool "FIPS 200 compliance" depends on (CRYPTO_ANSI_CPRNG || CRYPTO_DRBG) && !CRYPTO_MANAGER_DISABLE_TESTS depends on (MODULE_SIG || !MODULES) help This option enables the fips boot option which is required if you want the system to operate in a FIPS 200 certification. You should say no unless you know what this is. config CRYPTO_ALGAPI tristate select CRYPTO_ALGAPI2 help This option provides the API for cryptographic algorithms. config CRYPTO_ALGAPI2 tristate config CRYPTO_AEAD tristate select CRYPTO_AEAD2 select CRYPTO_ALGAPI config CRYPTO_AEAD2 tristate select CRYPTO_ALGAPI2 select CRYPTO_NULL2 select CRYPTO_RNG2 config CRYPTO_SKCIPHER tristate select CRYPTO_SKCIPHER2 select CRYPTO_ALGAPI config CRYPTO_SKCIPHER2 tristate select CRYPTO_ALGAPI2 select CRYPTO_RNG2 config CRYPTO_HASH tristate select CRYPTO_HASH2 select CRYPTO_ALGAPI config CRYPTO_HASH2 tristate select CRYPTO_ALGAPI2 config CRYPTO_RNG tristate select CRYPTO_RNG2 select CRYPTO_ALGAPI config CRYPTO_RNG2 tristate select CRYPTO_ALGAPI2 config CRYPTO_RNG_DEFAULT tristate select CRYPTO_DRBG_MENU config CRYPTO_AKCIPHER2 tristate select CRYPTO_ALGAPI2 config CRYPTO_AKCIPHER tristate select CRYPTO_AKCIPHER2 select CRYPTO_ALGAPI config CRYPTO_KPP2 tristate select CRYPTO_ALGAPI2 config CRYPTO_KPP tristate select CRYPTO_ALGAPI select CRYPTO_KPP2 config CRYPTO_ACOMP2 tristate select CRYPTO_ALGAPI2 select SGL_ALLOC config CRYPTO_ACOMP tristate select CRYPTO_ALGAPI select CRYPTO_ACOMP2 config CRYPTO_MANAGER tristate "Cryptographic algorithm manager" select CRYPTO_MANAGER2 help Create default cryptographic template instantiations such as cbc(aes). config CRYPTO_MANAGER2 def_tristate CRYPTO_MANAGER || (CRYPTO_MANAGER!=n && CRYPTO_ALGAPI=y) select CRYPTO_AEAD2 select CRYPTO_HASH2 select CRYPTO_SKCIPHER2 select CRYPTO_AKCIPHER2 select CRYPTO_KPP2 select CRYPTO_ACOMP2 config CRYPTO_USER tristate "Userspace cryptographic algorithm configuration" depends on NET select CRYPTO_MANAGER help Userspace configuration for cryptographic instantiations such as cbc(aes). config CRYPTO_MANAGER_DISABLE_TESTS bool "Disable run-time self tests" default y help Disable run-time self tests that normally take place at algorithm registration. config CRYPTO_MANAGER_EXTRA_TESTS bool "Enable extra run-time crypto self tests" depends on DEBUG_KERNEL && !CRYPTO_MANAGER_DISABLE_TESTS help Enable extra run-time self tests of registered crypto algorithms, including randomized fuzz tests. This is intended for developer use only, as these tests take much longer to run than the normal self tests. config CRYPTO_GF128MUL tristate config CRYPTO_NULL tristate "Null algorithms" select CRYPTO_NULL2 help These are 'Null' algorithms, used by IPsec, which do nothing. config CRYPTO_NULL2 tristate select CRYPTO_ALGAPI2 select CRYPTO_SKCIPHER2 select CRYPTO_HASH2 config CRYPTO_PCRYPT tristate "Parallel crypto engine" depends on SMP select PADATA select CRYPTO_MANAGER select CRYPTO_AEAD help This converts an arbitrary crypto algorithm into a parallel algorithm that executes in kernel threads. config CRYPTO_CRYPTD tristate "Software async crypto daemon" select CRYPTO_SKCIPHER select CRYPTO_HASH select CRYPTO_MANAGER help This is a generic software asynchronous crypto daemon that converts an arbitrary synchronous software crypto algorithm into an asynchronous algorithm that executes in a kernel thread. config CRYPTO_AUTHENC tristate "Authenc support" select CRYPTO_AEAD select CRYPTO_SKCIPHER select CRYPTO_MANAGER select CRYPTO_HASH select CRYPTO_NULL help Authenc: Combined mode wrapper for IPsec. This is required for IPSec. config CRYPTO_TEST tristate "Testing module" depends on m select CRYPTO_MANAGER help Quick & dirty crypto test module. config CRYPTO_SIMD tristate select CRYPTO_CRYPTD config CRYPTO_GLUE_HELPER_X86 tristate depends on X86 select CRYPTO_SKCIPHER config CRYPTO_ENGINE tristate comment "Public-key cryptography" config CRYPTO_RSA tristate "RSA algorithm" select CRYPTO_AKCIPHER select CRYPTO_MANAGER select MPILIB select ASN1 help Generic implementation of the RSA public key algorithm. config CRYPTO_DH tristate "Diffie-Hellman algorithm" select CRYPTO_KPP select MPILIB help Generic implementation of the Diffie-Hellman algorithm. config CRYPTO_ECC tristate config CRYPTO_ECDH tristate "ECDH algorithm" select CRYPTO_ECC select CRYPTO_KPP select CRYPTO_RNG_DEFAULT help Generic implementation of the ECDH algorithm config CRYPTO_ECRDSA tristate "EC-RDSA (GOST 34.10) algorithm" select CRYPTO_ECC select CRYPTO_AKCIPHER select CRYPTO_STREEBOG select OID_REGISTRY select ASN1 help Elliptic Curve Russian Digital Signature Algorithm (GOST R 34.10-2012, RFC 7091, ISO/IEC 14888-3:2018) is one of the Russian cryptographic standard algorithms (called GOST algorithms). Only signature verification is implemented. config CRYPTO_CURVE25519 tristate "Curve25519 algorithm" select CRYPTO_KPP select CRYPTO_LIB_CURVE25519_GENERIC config CRYPTO_CURVE25519_X86 tristate "x86_64 accelerated Curve25519 scalar multiplication library" depends on X86 && 64BIT select CRYPTO_LIB_CURVE25519_GENERIC select CRYPTO_ARCH_HAVE_LIB_CURVE25519 comment "Authenticated Encryption with Associated Data" config CRYPTO_CCM tristate "CCM support" select CRYPTO_CTR select CRYPTO_HASH select CRYPTO_AEAD select CRYPTO_MANAGER help Support for Counter with CBC MAC. Required for IPsec. config CRYPTO_GCM tristate "GCM/GMAC support" select CRYPTO_CTR select CRYPTO_AEAD select CRYPTO_GHASH select CRYPTO_NULL select CRYPTO_MANAGER help Support for Galois/Counter Mode (GCM) and Galois Message Authentication Code (GMAC). Required for IPSec. config CRYPTO_CHACHA20POLY1305 tristate "ChaCha20-Poly1305 AEAD support" select CRYPTO_CHACHA20 select CRYPTO_POLY1305 select CRYPTO_AEAD select CRYPTO_MANAGER help ChaCha20-Poly1305 AEAD support, RFC7539. Support for the AEAD wrapper using the ChaCha20 stream cipher combined with the Poly1305 authenticator. It is defined in RFC7539 for use in IETF protocols. config CRYPTO_AEGIS128 tristate "AEGIS-128 AEAD algorithm" select CRYPTO_AEAD select CRYPTO_AES # for AES S-box tables help Support for the AEGIS-128 dedicated AEAD algorithm. config CRYPTO_AEGIS128_SIMD bool "Support SIMD acceleration for AEGIS-128" depends on CRYPTO_AEGIS128 && ((ARM || ARM64) && KERNEL_MODE_NEON) default y config CRYPTO_AEGIS128_AESNI_SSE2 tristate "AEGIS-128 AEAD algorithm (x86_64 AESNI+SSE2 implementation)" depends on X86 && 64BIT select CRYPTO_AEAD select CRYPTO_SIMD help AESNI+SSE2 implementation of the AEGIS-128 dedicated AEAD algorithm. config CRYPTO_SEQIV tristate "Sequence Number IV Generator" select CRYPTO_AEAD select CRYPTO_SKCIPHER select CRYPTO_NULL select CRYPTO_RNG_DEFAULT select CRYPTO_MANAGER help This IV generator generates an IV based on a sequence number by xoring it with a salt. This algorithm is mainly useful for CTR config CRYPTO_ECHAINIV tristate "Encrypted Chain IV Generator" select CRYPTO_AEAD select CRYPTO_NULL select CRYPTO_RNG_DEFAULT select CRYPTO_MANAGER help This IV generator generates an IV based on the encryption of a sequence number xored with a salt. This is the default algorithm for CBC. comment "Block modes" config CRYPTO_CBC tristate "CBC support" select CRYPTO_SKCIPHER select CRYPTO_MANAGER help CBC: Cipher Block Chaining mode This block cipher algorithm is required for IPSec. config CRYPTO_CFB tristate "CFB support" select CRYPTO_SKCIPHER select CRYPTO_MANAGER help CFB: Cipher FeedBack mode This block cipher algorithm is required for TPM2 Cryptography. config CRYPTO_CTR tristate "CTR support" select CRYPTO_SKCIPHER select CRYPTO_MANAGER help CTR: Counter mode This block cipher algorithm is required for IPSec. config CRYPTO_CTS tristate "CTS support" select CRYPTO_SKCIPHER select CRYPTO_MANAGER help CTS: Cipher Text Stealing This is the Cipher Text Stealing mode as described by Section 8 of rfc2040 and referenced by rfc3962 (rfc3962 includes errata information in its Appendix A) or CBC-CS3 as defined by NIST in Sp800-38A addendum from Oct 2010. This mode is required for Kerberos gss mechanism support for AES encryption. See: https://csrc.nist.gov/publications/detail/sp/800-38a/addendum/final config CRYPTO_ECB tristate "ECB support" select CRYPTO_SKCIPHER select CRYPTO_MANAGER help ECB: Electronic CodeBook mode This is the simplest block cipher algorithm. It simply encrypts the input block by block. config CRYPTO_LRW tristate "LRW support" select CRYPTO_SKCIPHER select CRYPTO_MANAGER select CRYPTO_GF128MUL help LRW: Liskov Rivest Wagner, a tweakable, non malleable, non movable narrow block cipher mode for dm-crypt. Use it with cipher specification string aes-lrw-benbi, the key must be 256, 320 or 384. The first 128, 192 or 256 bits in the key are used for AES and the rest is used to tie each cipher block to its logical position. config CRYPTO_OFB tristate "OFB support" select CRYPTO_SKCIPHER select CRYPTO_MANAGER help OFB: the Output Feedback mode makes a block cipher into a synchronous stream cipher. It generates keystream blocks, which are then XORed with the plaintext blocks to get the ciphertext. Flipping a bit in the ciphertext produces a flipped bit in the plaintext at the same location. This property allows many error correcting codes to function normally even when applied before encryption. config CRYPTO_PCBC tristate "PCBC support" select CRYPTO_SKCIPHER select CRYPTO_MANAGER help PCBC: Propagating Cipher Block Chaining mode This block cipher algorithm is required for RxRPC. config CRYPTO_XTS tristate "XTS support" select CRYPTO_SKCIPHER select CRYPTO_MANAGER select CRYPTO_ECB help XTS: IEEE1619/D16 narrow block cipher use with aes-xts-plain, key size 256, 384 or 512 bits. This implementation currently can't handle a sectorsize which is not a multiple of 16 bytes. config CRYPTO_KEYWRAP tristate "Key wrapping support" select CRYPTO_SKCIPHER select CRYPTO_MANAGER help Support for key wrapping (NIST SP800-38F / RFC3394) without padding. config CRYPTO_NHPOLY1305 tristate select CRYPTO_HASH select CRYPTO_LIB_POLY1305_GENERIC config CRYPTO_NHPOLY1305_SSE2 tristate "NHPoly1305 hash function (x86_64 SSE2 implementation)" depends on X86 && 64BIT select CRYPTO_NHPOLY1305 help SSE2 optimized implementation of the hash function used by the Adiantum encryption mode. config CRYPTO_NHPOLY1305_AVX2 tristate "NHPoly1305 hash function (x86_64 AVX2 implementation)" depends on X86 && 64BIT select CRYPTO_NHPOLY1305 help AVX2 optimized implementation of the hash function used by the Adiantum encryption mode. config CRYPTO_ADIANTUM tristate "Adiantum support" select CRYPTO_CHACHA20 select CRYPTO_LIB_POLY1305_GENERIC select CRYPTO_NHPOLY1305 select CRYPTO_MANAGER help Adiantum is a tweakable, length-preserving encryption mode designed for fast and secure disk encryption, especially on CPUs without dedicated crypto instructions. It encrypts each sector using the XChaCha12 stream cipher, two passes of an ε-almost-∆-universal hash function, and an invocation of the AES-256 block cipher on a single 16-byte block. On CPUs without AES instructions, Adiantum is much faster than AES-XTS. Adiantum's security is provably reducible to that of its underlying stream and block ciphers, subject to a security bound. Unlike XTS, Adiantum is a true wide-block encryption mode, so it actually provides an even stronger notion of security than XTS, subject to the security bound. If unsure, say N. config CRYPTO_ESSIV tristate "ESSIV support for block encryption" select CRYPTO_AUTHENC help Encrypted salt-sector initialization vector (ESSIV) is an IVLines 1–500 of 1904. Load more
# SPDX-License-Identifier: GPL-2.0 # # Generic algorithms support # config XOR_BLOCKS tristate # # async_tx api: hardware offloaded memory transfer/transform support # source "crypto/async_tx/Kconfig" # # Cryptographic API Configuration # menuconfig CRYPTO tristate "Cryptographic API" help This option provides the core Cryptographic API. if CRYPTO comment "Crypto core or helper" config CRYPTO_FIPS bool "FIPS 200 compliance" depends on (CRYPTO_ANSI_CPRNG || CRYPTO_DRBG) && !CRYPTO_MANAGER_DISABLE_TESTS depends on (MODULE_SIG || !MODULES) help This option enables the fips boot option which is required if you want the system to operate in a FIPS 200 certification. You should say no unless you know what this is. config CRYPTO_ALGAPI tristate select CRYPTO_ALGAPI2 help This option provides the API for cryptographic algorithms. config CRYPTO_ALGAPI2 tristate config CRYPTO_AEAD tristate select CRYPTO_AEAD2 select CRYPTO_ALGAPI config CRYPTO_AEAD2 tristate select CRYPTO_ALGAPI2 select CRYPTO_NULL2 select CRYPTO_RNG2 config CRYPTO_SKCIPHER tristate select CRYPTO_SKCIPHER2 select CRYPTO_ALGAPI config CRYPTO_SKCIPHER2 tristate select CRYPTO_ALGAPI2 select CRYPTO_RNG2 config CRYPTO_HASH tristate select CRYPTO_HASH2 select CRYPTO_ALGAPI config CRYPTO_HASH2 tristate select CRYPTO_ALGAPI2 config CRYPTO_RNG tristate select CRYPTO_RNG2 select CRYPTO_ALGAPI config CRYPTO_RNG2 tristate select CRYPTO_ALGAPI2 config CRYPTO_RNG_DEFAULT tristate select CRYPTO_DRBG_MENU config CRYPTO_AKCIPHER2 tristate select CRYPTO_ALGAPI2 config CRYPTO_AKCIPHER tristate select CRYPTO_AKCIPHER2 select CRYPTO_ALGAPI config CRYPTO_KPP2 tristate select CRYPTO_ALGAPI2 config CRYPTO_KPP tristate select CRYPTO_ALGAPI select CRYPTO_KPP2 config CRYPTO_ACOMP2 tristate select CRYPTO_ALGAPI2 select SGL_ALLOC config CRYPTO_ACOMP tristate select CRYPTO_ALGAPI select CRYPTO_ACOMP2 config CRYPTO_MANAGER tristate "Cryptographic algorithm manager" select CRYPTO_MANAGER2 help Create default cryptographic template instantiations such as cbc(aes). config CRYPTO_MANAGER2 def_tristate CRYPTO_MANAGER || (CRYPTO_MANAGER!=n && CRYPTO_ALGAPI=y) select CRYPTO_AEAD2 select CRYPTO_HASH2 select CRYPTO_SKCIPHER2 select CRYPTO_AKCIPHER2 select CRYPTO_KPP2 select CRYPTO_ACOMP2 config CRYPTO_USER tristate "Userspace cryptographic algorithm configuration" depends on NET select CRYPTO_MANAGER help Userspace configuration for cryptographic instantiations such as cbc(aes). config CRYPTO_MANAGER_DISABLE_TESTS bool "Disable run-time self tests" default y help Disable run-time self tests that normally take place at algorithm registration. config CRYPTO_MANAGER_EXTRA_TESTS bool "Enable extra run-time crypto self tests" depends on DEBUG_KERNEL && !CRYPTO_MANAGER_DISABLE_TESTS help Enable extra run-time self tests of registered crypto algorithms, including randomized fuzz tests. This is intended for developer use only, as these tests take much longer to run than the normal self tests. config CRYPTO_GF128MUL tristate config CRYPTO_NULL tristate "Null algorithms" select CRYPTO_NULL2 help These are 'Null' algorithms, used by IPsec, which do nothing. config CRYPTO_NULL2 tristate select CRYPTO_ALGAPI2 select CRYPTO_SKCIPHER2 select CRYPTO_HASH2 config CRYPTO_PCRYPT tristate "Parallel crypto engine" depends on SMP select PADATA select CRYPTO_MANAGER select CRYPTO_AEAD help This converts an arbitrary crypto algorithm into a parallel algorithm that executes in kernel threads. config CRYPTO_CRYPTD tristate "Software async crypto daemon" select CRYPTO_SKCIPHER select CRYPTO_HASH select CRYPTO_MANAGER help This is a generic software asynchronous crypto daemon that converts an arbitrary synchronous software crypto algorithm into an asynchronous algorithm that executes in a kernel thread. config CRYPTO_AUTHENC tristate "Authenc support" select CRYPTO_AEAD select CRYPTO_SKCIPHER select CRYPTO_MANAGER select CRYPTO_HASH select CRYPTO_NULL help Authenc: Combined mode wrapper for IPsec. This is required for IPSec. config CRYPTO_TEST tristate "Testing module" depends on m select CRYPTO_MANAGER help Quick & dirty crypto test module. config CRYPTO_SIMD tristate select CRYPTO_CRYPTD config CRYPTO_GLUE_HELPER_X86 tristate depends on X86 select CRYPTO_SKCIPHER config CRYPTO_ENGINE tristate comment "Public-key cryptography" config CRYPTO_RSA tristate "RSA algorithm" select CRYPTO_AKCIPHER select CRYPTO_MANAGER select MPILIB select ASN1 help Generic implementation of the RSA public key algorithm. config CRYPTO_DH tristate "Diffie-Hellman algorithm" select CRYPTO_KPP select MPILIB help Generic implementation of the Diffie-Hellman algorithm. config CRYPTO_ECC tristate config CRYPTO_ECDH tristate "ECDH algorithm" select CRYPTO_ECC select CRYPTO_KPP select CRYPTO_RNG_DEFAULT help Generic implementation of the ECDH algorithm config CRYPTO_ECRDSA tristate "EC-RDSA (GOST 34.10) algorithm" select CRYPTO_ECC select CRYPTO_AKCIPHER select CRYPTO_STREEBOG select OID_REGISTRY select ASN1 help Elliptic Curve Russian Digital Signature Algorithm (GOST R 34.10-2012, RFC 7091, ISO/IEC 14888-3:2018) is one of the Russian cryptographic standard algorithms (called GOST algorithms). Only signature verification is implemented. config CRYPTO_CURVE25519 tristate "Curve25519 algorithm" select CRYPTO_KPP select CRYPTO_LIB_CURVE25519_GENERIC config CRYPTO_CURVE25519_X86 tristate "x86_64 accelerated Curve25519 scalar multiplication library" depends on X86 && 64BIT select CRYPTO_LIB_CURVE25519_GENERIC select CRYPTO_ARCH_HAVE_LIB_CURVE25519 comment "Authenticated Encryption with Associated Data" config CRYPTO_CCM tristate "CCM support" select CRYPTO_CTR select CRYPTO_HASH select CRYPTO_AEAD select CRYPTO_MANAGER help Support for Counter with CBC MAC. Required for IPsec. config CRYPTO_GCM tristate "GCM/GMAC support" select CRYPTO_CTR select CRYPTO_AEAD select CRYPTO_GHASH select CRYPTO_NULL select CRYPTO_MANAGER help Support for Galois/Counter Mode (GCM) and Galois Message Authentication Code (GMAC). Required for IPSec. config CRYPTO_CHACHA20POLY1305 tristate "ChaCha20-Poly1305 AEAD support" select CRYPTO_CHACHA20 select CRYPTO_POLY1305 select CRYPTO_AEAD select CRYPTO_MANAGER help ChaCha20-Poly1305 AEAD support, RFC7539. Support for the AEAD wrapper using the ChaCha20 stream cipher combined with the Poly1305 authenticator. It is defined in RFC7539 for use in IETF protocols. config CRYPTO_AEGIS128 tristate "AEGIS-128 AEAD algorithm" select CRYPTO_AEAD select CRYPTO_AES # for AES S-box tables help Support for the AEGIS-128 dedicated AEAD algorithm. config CRYPTO_AEGIS128_SIMD bool "Support SIMD acceleration for AEGIS-128" depends on CRYPTO_AEGIS128 && ((ARM || ARM64) && KERNEL_MODE_NEON) default y config CRYPTO_AEGIS128_AESNI_SSE2 tristate "AEGIS-128 AEAD algorithm (x86_64 AESNI+SSE2 implementation)" depends on X86 && 64BIT select CRYPTO_AEAD select CRYPTO_SIMD help AESNI+SSE2 implementation of the AEGIS-128 dedicated AEAD algorithm. config CRYPTO_SEQIV tristate "Sequence Number IV Generator" select CRYPTO_AEAD select CRYPTO_SKCIPHER select CRYPTO_NULL select CRYPTO_RNG_DEFAULT select CRYPTO_MANAGER help This IV generator generates an IV based on a sequence number by xoring it with a salt. This algorithm is mainly useful for CTR config CRYPTO_ECHAINIV tristate "Encrypted Chain IV Generator" select CRYPTO_AEAD select CRYPTO_NULL select CRYPTO_RNG_DEFAULT select CRYPTO_MANAGER help This IV generator generates an IV based on the encryption of a sequence number xored with a salt. This is the default algorithm for CBC. comment "Block modes" config CRYPTO_CBC tristate "CBC support" select CRYPTO_SKCIPHER select CRYPTO_MANAGER help CBC: Cipher Block Chaining mode This block cipher algorithm is required for IPSec. config CRYPTO_CFB tristate "CFB support" select CRYPTO_SKCIPHER select CRYPTO_MANAGER help CFB: Cipher FeedBack mode This block cipher algorithm is required for TPM2 Cryptography. config CRYPTO_CTR tristate "CTR support" select CRYPTO_SKCIPHER select CRYPTO_MANAGER help CTR: Counter mode This block cipher algorithm is required for IPSec. config CRYPTO_CTS tristate "CTS support" select CRYPTO_SKCIPHER select CRYPTO_MANAGER help CTS: Cipher Text Stealing This is the Cipher Text Stealing mode as described by Section 8 of rfc2040 and referenced by rfc3962 (rfc3962 includes errata information in its Appendix A) or CBC-CS3 as defined by NIST in Sp800-38A addendum from Oct 2010. This mode is required for Kerberos gss mechanism support for AES encryption. See: https://csrc.nist.gov/publications/detail/sp/800-38a/addendum/final config CRYPTO_ECB tristate "ECB support" select CRYPTO_SKCIPHER select CRYPTO_MANAGER help ECB: Electronic CodeBook mode This is the simplest block cipher algorithm. It simply encrypts the input block by block. config CRYPTO_LRW tristate "LRW support" select CRYPTO_SKCIPHER select CRYPTO_MANAGER select CRYPTO_GF128MUL help LRW: Liskov Rivest Wagner, a tweakable, non malleable, non movable narrow block cipher mode for dm-crypt. Use it with cipher specification string aes-lrw-benbi, the key must be 256, 320 or 384. The first 128, 192 or 256 bits in the key are used for AES and the rest is used to tie each cipher block to its logical position. config CRYPTO_OFB tristate "OFB support" select CRYPTO_SKCIPHER select CRYPTO_MANAGER help OFB: the Output Feedback mode makes a block cipher into a synchronous stream cipher. It generates keystream blocks, which are then XORed with the plaintext blocks to get the ciphertext. Flipping a bit in the ciphertext produces a flipped bit in the plaintext at the same location. This property allows many error correcting codes to function normally even when applied before encryption. config CRYPTO_PCBC tristate "PCBC support" select CRYPTO_SKCIPHER select CRYPTO_MANAGER help PCBC: Propagating Cipher Block Chaining mode This block cipher algorithm is required for RxRPC. config CRYPTO_XTS tristate "XTS support" select CRYPTO_SKCIPHER select CRYPTO_MANAGER select CRYPTO_ECB help XTS: IEEE1619/D16 narrow block cipher use with aes-xts-plain, key size 256, 384 or 512 bits. This implementation currently can't handle a sectorsize which is not a multiple of 16 bytes. config CRYPTO_KEYWRAP tristate "Key wrapping support" select CRYPTO_SKCIPHER select CRYPTO_MANAGER help Support for key wrapping (NIST SP800-38F / RFC3394) without padding. config CRYPTO_NHPOLY1305 tristate select CRYPTO_HASH select CRYPTO_LIB_POLY1305_GENERIC config CRYPTO_NHPOLY1305_SSE2 tristate "NHPoly1305 hash function (x86_64 SSE2 implementation)" depends on X86 && 64BIT select CRYPTO_NHPOLY1305 help SSE2 optimized implementation of the hash function used by the Adiantum encryption mode. config CRYPTO_NHPOLY1305_AVX2 tristate "NHPoly1305 hash function (x86_64 AVX2 implementation)" depends on X86 && 64BIT select CRYPTO_NHPOLY1305 help AVX2 optimized implementation of the hash function used by the Adiantum encryption mode. config CRYPTO_ADIANTUM tristate "Adiantum support" select CRYPTO_CHACHA20 select CRYPTO_LIB_POLY1305_GENERIC select CRYPTO_NHPOLY1305 select CRYPTO_MANAGER help Adiantum is a tweakable, length-preserving encryption mode designed for fast and secure disk encryption, especially on CPUs without dedicated crypto instructions. It encrypts each sector using the XChaCha12 stream cipher, two passes of an ε-almost-∆-universal hash function, and an invocation of the AES-256 block cipher on a single 16-byte block. On CPUs without AES instructions, Adiantum is much faster than AES-XTS. Adiantum's security is provably reducible to that of its underlying stream and block ciphers, subject to a security bound. Unlike XTS, Adiantum is a true wide-block encryption mode, so it actually provides an even stronger notion of security than XTS, subject to the security bound. If unsure, say N. config CRYPTO_ESSIV tristate "ESSIV support for block encryption" select CRYPTO_AUTHENC help Encrypted salt-sector initialization vector (ESSIV) is an IV