lib/crypto: hash_info: Move hash_info.c into lib/crypto/
authorEric Biggers <ebiggers@kernel.org>
Mon, 30 Jun 2025 17:22:23 +0000 (10:22 -0700)
committerEric Biggers <ebiggers@kernel.org>
Tue, 8 Jul 2025 19:03:44 +0000 (12:03 -0700)
crypto/hash_info.c just contains a couple of arrays that map HASH_ALGO_*
algorithm IDs to properties of those algorithms.  It is compiled only
when CRYPTO_HASH_INFO=y, but currently CRYPTO_HASH_INFO depends on
CRYPTO.  Since this can be useful without the old-school crypto API,
move it into lib/crypto/ so that it no longer depends on CRYPTO.

This eliminates the need for FS_VERITY to select CRYPTO after it's been
converted to use lib/crypto/.

Acked-by: Ard Biesheuvel <ardb@kernel.org>
Link: https://lore.kernel.org/r/20250630172224.46909-2-ebiggers@kernel.org
Signed-off-by: Eric Biggers <ebiggers@kernel.org>
crypto/Kconfig
crypto/Makefile
crypto/hash_info.c [deleted file]
lib/crypto/Kconfig
lib/crypto/Makefile
lib/crypto/hash_info.c [new file with mode: 0644]

index 3ea1397214e02ac3fa382d738dc90acc47bece14..5d4cf022c57757d37c835d83788116c018571dbd 100644 (file)
@@ -1422,9 +1422,6 @@ config CRYPTO_USER_API_ENABLE_OBSOLETE
 
 endmenu
 
-config CRYPTO_HASH_INFO
-       bool
-
 if !KMSAN # avoid false positives from assembly
 if ARM
 source "arch/arm/crypto/Kconfig"
index 5098fa6d5f39c8516a1c8c50d912a22311c946f3..816607e0e78ce1f58331fdbe4c08eb4f12c1a5c2 100644 (file)
@@ -204,7 +204,6 @@ obj-$(CONFIG_CRYPTO_ECRDSA) += ecrdsa_generic.o
 obj-$(CONFIG_XOR_BLOCKS) += xor.o
 obj-$(CONFIG_ASYNC_CORE) += async_tx/
 obj-$(CONFIG_ASYMMETRIC_KEY_TYPE) += asymmetric_keys/
-obj-$(CONFIG_CRYPTO_HASH_INFO) += hash_info.o
 crypto_simd-y := simd.o
 obj-$(CONFIG_CRYPTO_SIMD) += crypto_simd.o
 
diff --git a/crypto/hash_info.c b/crypto/hash_info.c
deleted file mode 100644 (file)
index 9a46763..0000000
+++ /dev/null
@@ -1,63 +0,0 @@
-// SPDX-License-Identifier: GPL-2.0-or-later
-/*
- * Hash Info: Hash algorithms information
- *
- * Copyright (c) 2013 Dmitry Kasatkin <d.kasatkin@samsung.com>
- */
-
-#include <linux/export.h>
-#include <crypto/hash_info.h>
-
-const char *const hash_algo_name[HASH_ALGO__LAST] = {
-       [HASH_ALGO_MD4]         = "md4",
-       [HASH_ALGO_MD5]         = "md5",
-       [HASH_ALGO_SHA1]        = "sha1",
-       [HASH_ALGO_RIPE_MD_160] = "rmd160",
-       [HASH_ALGO_SHA256]      = "sha256",
-       [HASH_ALGO_SHA384]      = "sha384",
-       [HASH_ALGO_SHA512]      = "sha512",
-       [HASH_ALGO_SHA224]      = "sha224",
-       [HASH_ALGO_RIPE_MD_128] = "rmd128",
-       [HASH_ALGO_RIPE_MD_256] = "rmd256",
-       [HASH_ALGO_RIPE_MD_320] = "rmd320",
-       [HASH_ALGO_WP_256]      = "wp256",
-       [HASH_ALGO_WP_384]      = "wp384",
-       [HASH_ALGO_WP_512]      = "wp512",
-       [HASH_ALGO_TGR_128]     = "tgr128",
-       [HASH_ALGO_TGR_160]     = "tgr160",
-       [HASH_ALGO_TGR_192]     = "tgr192",
-       [HASH_ALGO_SM3_256]     = "sm3",
-       [HASH_ALGO_STREEBOG_256] = "streebog256",
-       [HASH_ALGO_STREEBOG_512] = "streebog512",
-       [HASH_ALGO_SHA3_256]    = "sha3-256",
-       [HASH_ALGO_SHA3_384]    = "sha3-384",
-       [HASH_ALGO_SHA3_512]    = "sha3-512",
-};
-EXPORT_SYMBOL_GPL(hash_algo_name);
-
-const int hash_digest_size[HASH_ALGO__LAST] = {
-       [HASH_ALGO_MD4]         = MD5_DIGEST_SIZE,
-       [HASH_ALGO_MD5]         = MD5_DIGEST_SIZE,
-       [HASH_ALGO_SHA1]        = SHA1_DIGEST_SIZE,
-       [HASH_ALGO_RIPE_MD_160] = RMD160_DIGEST_SIZE,
-       [HASH_ALGO_SHA256]      = SHA256_DIGEST_SIZE,
-       [HASH_ALGO_SHA384]      = SHA384_DIGEST_SIZE,
-       [HASH_ALGO_SHA512]      = SHA512_DIGEST_SIZE,
-       [HASH_ALGO_SHA224]      = SHA224_DIGEST_SIZE,
-       [HASH_ALGO_RIPE_MD_128] = RMD128_DIGEST_SIZE,
-       [HASH_ALGO_RIPE_MD_256] = RMD256_DIGEST_SIZE,
-       [HASH_ALGO_RIPE_MD_320] = RMD320_DIGEST_SIZE,
-       [HASH_ALGO_WP_256]      = WP256_DIGEST_SIZE,
-       [HASH_ALGO_WP_384]      = WP384_DIGEST_SIZE,
-       [HASH_ALGO_WP_512]      = WP512_DIGEST_SIZE,
-       [HASH_ALGO_TGR_128]     = TGR128_DIGEST_SIZE,
-       [HASH_ALGO_TGR_160]     = TGR160_DIGEST_SIZE,
-       [HASH_ALGO_TGR_192]     = TGR192_DIGEST_SIZE,
-       [HASH_ALGO_SM3_256]     = SM3256_DIGEST_SIZE,
-       [HASH_ALGO_STREEBOG_256] = STREEBOG256_DIGEST_SIZE,
-       [HASH_ALGO_STREEBOG_512] = STREEBOG512_DIGEST_SIZE,
-       [HASH_ALGO_SHA3_256]    = SHA3_256_DIGEST_SIZE,
-       [HASH_ALGO_SHA3_384]    = SHA3_384_DIGEST_SIZE,
-       [HASH_ALGO_SHA3_512]    = SHA3_512_DIGEST_SIZE,
-};
-EXPORT_SYMBOL_GPL(hash_digest_size);
index 3305c69085816f414efa4b10a83c41041a83bb07..ee7e1e27ea6a986a60063729b8182db4074a7fde 100644 (file)
@@ -2,6 +2,9 @@
 
 menu "Crypto library routines"
 
+config CRYPTO_HASH_INFO
+       bool
+
 config CRYPTO_LIB_UTILS
        tristate
 
index a887bf103bf055959ab508ad24efc23f892a60aa..533bb1533e19b271d2d363434731c30553d04004 100644 (file)
@@ -8,6 +8,8 @@ quiet_cmd_perlasm = PERLASM $@
 quiet_cmd_perlasm_with_args = PERLASM $@
       cmd_perlasm_with_args = $(PERL) $(<) void $(@)
 
+obj-$(CONFIG_CRYPTO_HASH_INFO)                 += hash_info.o
+
 obj-$(CONFIG_CRYPTO_LIB_UTILS)                 += libcryptoutils.o
 libcryptoutils-y                               := memneq.o utils.o
 
diff --git a/lib/crypto/hash_info.c b/lib/crypto/hash_info.c
new file mode 100644 (file)
index 0000000..9a46763
--- /dev/null
@@ -0,0 +1,63 @@
+// SPDX-License-Identifier: GPL-2.0-or-later
+/*
+ * Hash Info: Hash algorithms information
+ *
+ * Copyright (c) 2013 Dmitry Kasatkin <d.kasatkin@samsung.com>
+ */
+
+#include <linux/export.h>
+#include <crypto/hash_info.h>
+
+const char *const hash_algo_name[HASH_ALGO__LAST] = {
+       [HASH_ALGO_MD4]         = "md4",
+       [HASH_ALGO_MD5]         = "md5",
+       [HASH_ALGO_SHA1]        = "sha1",
+       [HASH_ALGO_RIPE_MD_160] = "rmd160",
+       [HASH_ALGO_SHA256]      = "sha256",
+       [HASH_ALGO_SHA384]      = "sha384",
+       [HASH_ALGO_SHA512]      = "sha512",
+       [HASH_ALGO_SHA224]      = "sha224",
+       [HASH_ALGO_RIPE_MD_128] = "rmd128",
+       [HASH_ALGO_RIPE_MD_256] = "rmd256",
+       [HASH_ALGO_RIPE_MD_320] = "rmd320",
+       [HASH_ALGO_WP_256]      = "wp256",
+       [HASH_ALGO_WP_384]      = "wp384",
+       [HASH_ALGO_WP_512]      = "wp512",
+       [HASH_ALGO_TGR_128]     = "tgr128",
+       [HASH_ALGO_TGR_160]     = "tgr160",
+       [HASH_ALGO_TGR_192]     = "tgr192",
+       [HASH_ALGO_SM3_256]     = "sm3",
+       [HASH_ALGO_STREEBOG_256] = "streebog256",
+       [HASH_ALGO_STREEBOG_512] = "streebog512",
+       [HASH_ALGO_SHA3_256]    = "sha3-256",
+       [HASH_ALGO_SHA3_384]    = "sha3-384",
+       [HASH_ALGO_SHA3_512]    = "sha3-512",
+};
+EXPORT_SYMBOL_GPL(hash_algo_name);
+
+const int hash_digest_size[HASH_ALGO__LAST] = {
+       [HASH_ALGO_MD4]         = MD5_DIGEST_SIZE,
+       [HASH_ALGO_MD5]         = MD5_DIGEST_SIZE,
+       [HASH_ALGO_SHA1]        = SHA1_DIGEST_SIZE,
+       [HASH_ALGO_RIPE_MD_160] = RMD160_DIGEST_SIZE,
+       [HASH_ALGO_SHA256]      = SHA256_DIGEST_SIZE,
+       [HASH_ALGO_SHA384]      = SHA384_DIGEST_SIZE,
+       [HASH_ALGO_SHA512]      = SHA512_DIGEST_SIZE,
+       [HASH_ALGO_SHA224]      = SHA224_DIGEST_SIZE,
+       [HASH_ALGO_RIPE_MD_128] = RMD128_DIGEST_SIZE,
+       [HASH_ALGO_RIPE_MD_256] = RMD256_DIGEST_SIZE,
+       [HASH_ALGO_RIPE_MD_320] = RMD320_DIGEST_SIZE,
+       [HASH_ALGO_WP_256]      = WP256_DIGEST_SIZE,
+       [HASH_ALGO_WP_384]      = WP384_DIGEST_SIZE,
+       [HASH_ALGO_WP_512]      = WP512_DIGEST_SIZE,
+       [HASH_ALGO_TGR_128]     = TGR128_DIGEST_SIZE,
+       [HASH_ALGO_TGR_160]     = TGR160_DIGEST_SIZE,
+       [HASH_ALGO_TGR_192]     = TGR192_DIGEST_SIZE,
+       [HASH_ALGO_SM3_256]     = SM3256_DIGEST_SIZE,
+       [HASH_ALGO_STREEBOG_256] = STREEBOG256_DIGEST_SIZE,
+       [HASH_ALGO_STREEBOG_512] = STREEBOG512_DIGEST_SIZE,
+       [HASH_ALGO_SHA3_256]    = SHA3_256_DIGEST_SIZE,
+       [HASH_ALGO_SHA3_384]    = SHA3_384_DIGEST_SIZE,
+       [HASH_ALGO_SHA3_512]    = SHA3_512_DIGEST_SIZE,
+};
+EXPORT_SYMBOL_GPL(hash_digest_size);