[PATCH 7/8] crypto: Kconfig - sort the digests

Robert Elliott
2022-08-15T20:37:12Z

Sort the entries in Digests by their displayed names.
In particular, keep the optimized CPU implementations next to the
generic implementations.

Signed-off-by: Robert Elliott <elliott@hpe.com>
---
crypto/Kconfig | 299 ++++++++++++++++++++++++-------------------------
1 file changed, 149 insertions(+), 150 deletions(-)

diff --git a/crypto/Kconfig b/crypto/Kconfig
index 0116729ea369..f5cfb73e2423 100644
--- a/crypto/Kconfig
+++ b/crypto/Kconfig
@@ -632,6 +632,58 @@ menu "Hash modes"

menu "Digests"

+config CRYPTO_BLAKE2B
+ tristate "BLAKE2b"
+ select CRYPTO_HASH
+ help
+ BLAKE2b cryptographic hash function (RFC 7693)
+
+ BLAKE2b is optimized for 64-bit platforms and can produce digests
+ of any size between 1 and 64 bytes. The keyed hash is also implemented.
+
+ This module provides the following algorithms:
+ - blake2b-160
+ - blake2b-256
+ - blake2b-384
+ - blake2b-512
+
+ See https://blake2.net for further information.
+
+ Used by the btrfs filesystem.
+
+config CRYPTO_BLAKE2S
+ tristate "BLAKE2s"
+ select CRYPTO_LIB_BLAKE2S_GENERIC
+ select CRYPTO_HASH
+ help
+ BLAKE2s cryptographic hash function (RFC 7693)
+
+ BLAKE2s is optimized for 8 to 32-bit platforms and can produce
+ digests of any size between 1 and 32 bytes. The keyed hash is
+ also implemented.
+
+ This module provides the following algorithms:
+ - blake2s-128
+ - blake2s-160
+ - blake2s-224
+ - blake2s-256
+
+ Used by Wireguard.
+
+ See https://blake2.net for further information.
+
+config CRYPTO_BLAKE2S_X86
+ tristate "BLAKE2s (x86_64 with SSSE3/AVX-512)"
+ depends on X86 && 64BIT
+ select CRYPTO_LIB_BLAKE2S_GENERIC
+ select CRYPTO_ARCH_HAVE_LIB_BLAKE2S
+ help
+ BLAKE2s cryptographic hash function (RFC 7693)
+
+ Architecture: x86_64 using:
+ * SSSE3 (Supplemental SSE3)
+ * AVX-512 (Advanced Vector Extensions-512)
+
config CRYPTO_CRC32C
tristate "CRC32c"
select CRYPTO_HASH
@@ -726,69 +778,6 @@ menu "Digests"

It is available with IBM z13 or later.

-config CRYPTO_XXHASH
- tristate "xxHash"
- select CRYPTO_HASH
- select XXHASH
- help
- xxHash non-cryptographic hash algorithm
-
- Extremely fast, working at speeds close to RAM limits.
-
- Used by the btrfs filesystem.
-
-config CRYPTO_BLAKE2B
- tristate "BLAKE2b"
- select CRYPTO_HASH
- help
- BLAKE2b cryptographic hash function (RFC 7693)
-
- BLAKE2b is optimized for 64-bit platforms and can produce digests
- of any size between 1 and 64 bytes. The keyed hash is also implemented.
-
- This module provides the following algorithms:
- - blake2b-160
- - blake2b-256
- - blake2b-384
- - blake2b-512
-
- See https://blake2.net for further information.
-
- Used by the btrfs filesystem.
-
-config CRYPTO_BLAKE2S
- tristate "BLAKE2s"
- select CRYPTO_LIB_BLAKE2S_GENERIC
- select CRYPTO_HASH
- help
- BLAKE2s cryptographic hash function (RFC 7693)
-
- BLAKE2s is optimized for 8 to 32-bit platforms and can produce
- digests of any size between 1 and 32 bytes. The keyed hash is
- also implemented.
-
- This module provides the following algorithms:
- - blake2s-128
- - blake2s-160
- - blake2s-224
- - blake2s-256
-
- Used by Wireguard.
-
- See https://blake2.net for further information.
-
-config CRYPTO_BLAKE2S_X86
- tristate "BLAKE2s (x86_64 with SSSE3/AVX-512)"
- depends on X86 && 64BIT
- select CRYPTO_LIB_BLAKE2S_GENERIC
- select CRYPTO_ARCH_HAVE_LIB_BLAKE2S
- help
- BLAKE2s cryptographic hash function (RFC 7693)
-
- Architecture: x86_64 using:
- * SSSE3 (Supplemental SSE3)
- * AVX-512 (Advanced Vector Extensions-512)
-
config CRYPTO_CRCT10DIF
tristate "CRCT10DIF"
select CRYPTO_HASH
@@ -819,6 +808,14 @@ menu "Digests"
Architecture: powerpc64 using AltiVec extensions
Enable on POWER8 and newer processors for improved performance.

+config CRYPTO_VPMSUM_TESTER
+ tristate "CRC32C and CRC32T10DIF vpmsum hardware acceleration tester (powerpc64)"
+ depends on CRYPTO_CRCT10DIF_VPMSUM && CRYPTO_CRC32C_VPMSUM
+ help
+ Stress test for CRC32c and CRCT10DIF algorithms implemented with
+ powerpc64 AltiVec extensions (POWER8 vpmsum instructions).
+ Unless you are testing these algorithms, you don't need this.
+
config CRYPTO_CRC64_ROCKSOFT
tristate "CRC64 based on the Rocksoft Model CRC Algorithm"
depends on CRC64
@@ -830,14 +827,6 @@ menu "Digests"

See https://zlib.net/crc_v3.txt

-config CRYPTO_VPMSUM_TESTER
- tristate "CRC32C and CRC32T10DIF vpmsum hardware acceleration tester (powerpc64)"
- depends on CRYPTO_CRCT10DIF_VPMSUM && CRYPTO_CRC32C_VPMSUM
- help
- Stress test for CRC32c and CRCT10DIF algorithms implemented with
- powerpc64 AltiVec extensions (POWER8 vpmsum instructions).
- Unless you are testing these algorithms, you don't need this.
-
config CRYPTO_GHASH
tristate "GHASH"
select CRYPTO_GF128MUL
@@ -845,37 +834,26 @@ menu "Digests"
help
GCM GHASH function (NIST SP800-38D)

-config CRYPTO_POLY1305
- tristate "Poly1305"
- select CRYPTO_HASH
- select CRYPTO_LIB_POLY1305_GENERIC
- help
- Poly1305 authenticator algorithm (RFC7539)
-
- Poly1305 is an authenticator algorithm designed by Daniel J. Bernstein.
- It is used for the ChaCha20-Poly1305 AEAD, specified in RFC7539 for use
- in IETF protocols. This is the portable C implementation of Poly1305.
-
-config CRYPTO_POLY1305_X86_64
- tristate "Poly1305 (x86_64 with SSE2/AVX2)"
+config CRYPTO_GHASH_CLMUL_NI_INTEL
+ tristate "GHASH (x86_64 with CLMUL-NI)"
depends on X86 && 64BIT
- select CRYPTO_LIB_POLY1305_GENERIC
- select CRYPTO_ARCH_HAVE_LIB_POLY1305
+ select CRYPTO_CRYPTD
help
- Poly1305 authenticator algorithm (RFC7539)
+ GCM GHASH hash function (NIST SP800-38D)

Architecture: x86_64 using:
- * SSE2 (Streaming SIMD Extensions 2)
- * AVX2 (Advanced Vector Extensions 2)
+ * CLMUL-NI (carry-less multiplication new instructions)

-config CRYPTO_POLY1305_MIPS
- tristate "Poly1305 (MIPS)"
- depends on MIPS
- select CRYPTO_ARCH_HAVE_LIB_POLY1305
+config CRYPTO_GHASH_S390
+ tristate "GHASH (s390)"
+ depends on S390
+ select CRYPTO_HASH
help
- Poly1305 authenticator algorithm (RFC7539)
+ GCM GHASH hash function (NIST SP800-38D)

- Architecture: mips
+ Architecture: s390
+
+ It is available as of z196.

config CRYPTO_MD4
tristate "MD4"
@@ -930,6 +908,38 @@ menu "Digests"
This algorithm is required for TKIP, but it should not be used for
other purposes because of the weakness of the algorithm.

+config CRYPTO_POLY1305
+ tristate "Poly1305"
+ select CRYPTO_HASH
+ select CRYPTO_LIB_POLY1305_GENERIC
+ help
+ Poly1305 authenticator algorithm (RFC7539)
+
+ Poly1305 is an authenticator algorithm designed by Daniel J. Bernstein.
+ It is used for the ChaCha20-Poly1305 AEAD, specified in RFC7539 for use
+ in IETF protocols. This is the portable C implementation of Poly1305.
+
+config CRYPTO_POLY1305_X86_64
+ tristate "Poly1305 (x86_64 with SSE2/AVX2)"
+ depends on X86 && 64BIT
+ select CRYPTO_LIB_POLY1305_GENERIC
+ select CRYPTO_ARCH_HAVE_LIB_POLY1305
+ help
+ Poly1305 authenticator algorithm
+
+ Architecture: x86_64 using:
+ * SSE2 (Streaming SIMD Extensions 2)
+ * AVX2 (Advanced Vector Extensions 2)
+
+config CRYPTO_POLY1305_MIPS
+ tristate "Poly1305 (MIPS)"
+ depends on MIPS
+ select CRYPTO_ARCH_HAVE_LIB_POLY1305
+ help
+ Poly1305 authenticator algorithm
+
+ Architecture: mips
+
config CRYPTO_RMD160
tristate "RIPEMD-160"
select CRYPTO_HASH
@@ -968,44 +978,6 @@ menu "Digests"
* AVX2 (Advanced Vector Extensions 2)
* SHA-NI (SHA Extensions New Instructions)

-config CRYPTO_SHA256_SSSE3
- tristate "SHA224 and SHA256 (x86_64 with SSSE3/AVX/AVX2/SHA-NI)"
- depends on X86 && 64BIT
- select CRYPTO_SHA256
- select CRYPTO_HASH
- help
- SHA-224 and SHA-256 secure hash algorithms (FIPS 180)
-
- Architecture: x86_64 using:
- * SSSE3 (Supplemental SSE3)
- * AVX (Advanced Vector Extensions)
- * AVX2 (Advanced Vector Extensions 2)
- * SHA-NI (SHA Extensions New Instructions)
-
-config CRYPTO_SHA512_SSSE3
- tristate "SHA384 and SHA512 (x86_64 with SSSE3/AVX/AVX2)"
- depends on X86 && 64BIT
- select CRYPTO_SHA512
- select CRYPTO_HASH
- help
- SHA-384 and SHA-512 secure hash algorithms (FIPS 180)
-
- Architecture: x86_64 using:
- * SSSE3 (Supplemental SSE3)
- * AVX (Advanced Vector Extensions)
- * AVX2 (Advanced Vector Extensions 2)
-
-config CRYPTO_SHA512_S390
- tristate "SHA384 and SHA512 (s390)"
- depends on S390
- select CRYPTO_HASH
- help
- SHA-384 and SHA-512 secure hash algorithms (FIPS 180)
-
- Architecture: s390
-
- It is available as of z10.
-
config CRYPTO_SHA1_OCTEON
tristate "SHA1 (OCTEON)"
depends on CPU_CAVIUM_OCTEON
@@ -1063,6 +1035,20 @@ menu "Digests"
This is required for IPsec AH (XFRM_AH) and IPsec ESP (XFRM_ESP).
Used by the btrfs filesystem, Ceph, NFS, and SMB.

+config CRYPTO_SHA256_SSSE3
+ tristate "SHA224 and SHA256 (x86_64 with SSSE3/AVX/AVX2/SHA-NI)"
+ depends on X86 && 64BIT
+ select CRYPTO_SHA256
+ select CRYPTO_HASH
+ help
+ SHA-224 and SHA-256 secure hash algorithms (FIPS 180)
+
+ Architecture: x86_64 using:
+ * SSSE3 (Supplemental SSE3)
+ * AVX (Advanced Vector Extensions)
+ * AVX2 (Advanced Vector Extensions 2)
+ * SHA-NI (SHA Extensions New Instructions)
+
config CRYPTO_SHA256_PPC_SPE
tristate "SHA224 and SHA256 (PPC SPE)"
depends on PPC && SPE
@@ -1110,6 +1096,30 @@ menu "Digests"
help
SHA-384 and SHA-512 secure hash algorithms (FIPS 180)

+config CRYPTO_SHA512_SSSE3
+ tristate "SHA384 and SHA512 (x86_64 with SSSE3/AVX/AVX2)"
+ depends on X86 && 64BIT
+ select CRYPTO_SHA512
+ select CRYPTO_HASH
+ help
+ SHA-384 and SHA-512 secure hash algorithms (FIPS 180)
+
+ Architecture: x86_64 using:
+ * SSSE3 (Supplemental SSE3)
+ * AVX (Advanced Vector Extensions)
+ * AVX2 (Advanced Vector Extensions 2)
+
+config CRYPTO_SHA512_S390
+ tristate "SHA384 and SHA512 (s390)"
+ depends on S390
+ select CRYPTO_HASH
+ help
+ SHA-384 and SHA-512 secure hash algorithms (FIPS 180)
+
+ Architecture: s390
+
+ It is available as of z10.
+
config CRYPTO_SHA512_OCTEON
tristate "SHA384 and SHA512 (OCTEON)"
depends on CPU_CAVIUM_OCTEON
@@ -1213,27 +1223,16 @@ menu "Digests"
See https://web.archive.org/web/20171129084214/http://www.larc.usp.br/~pbarreto/WhirlpoolPage.html
for further information.

-config CRYPTO_GHASH_CLMUL_NI_INTEL
- tristate "GHASH (x86_64 with CLMUL-NI)"
- depends on X86 && 64BIT
- select CRYPTO_CRYPTD
- help
- GCM GHASH hash function (NIST SP800-38D)
-
- Architecture: x86_64 using:
- * CLMUL-NI (carry-less multiplication new instructions)
-
-config CRYPTO_GHASH_S390
- tristate "GHASH (s390)"
- depends on S390
+config CRYPTO_XXHASH
+ tristate "xxHash"
select CRYPTO_HASH
+ select XXHASH
help
- GCM GHASH hash function (NIST SP800-38D)
-
- Architecture: s390
+ xxHash non-cryptographic hash algorithm

- It is available as of z196.
+ Extremely fast, working at speeds close to RAM limits.

+ Used by the btrfs filesystem.
endmenu

menu "Ciphers"
--
2.37.1