crypto: lib - make the sha1 library optional
authorEric Biggers <ebiggers@google.com>
Sat, 9 Jul 2022 21:18:49 +0000 (14:18 -0700)
committerHerbert Xu <herbert@gondor.apana.org.au>
Fri, 15 Jul 2022 08:43:59 +0000 (16:43 +0800)
Since the Linux RNG no longer uses sha1_transform(), the SHA-1 library
is no longer needed unconditionally.  Make it possible to build the
Linux kernel without the SHA-1 library by putting it behind a kconfig
option, and selecting this new option from the kconfig options that gate
the remaining users: CRYPTO_SHA1 for crypto/sha1_generic.c, BPF for
kernel/bpf/core.c, and IPV6 for net/ipv6/addrconf.c.

Unfortunately, since BPF is selected by NET, for now this can only make
a difference for kernels built without networking support.

Signed-off-by: Eric Biggers <ebiggers@google.com>
Reviewed-by: Jason A. Donenfeld <Jason@zx2c4.com>
Acked-by: Jakub Kicinski <kuba@kernel.org>
Acked-by: Alexei Starovoitov <ast@kernel.org>
Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
crypto/Kconfig
init/Kconfig
lib/crypto/Kconfig
lib/crypto/Makefile
net/ipv6/Kconfig

index 54bdcf2..75c71d9 100644 (file)
@@ -901,6 +901,7 @@ config CRYPTO_RMD160
 config CRYPTO_SHA1
        tristate "SHA1 digest algorithm"
        select CRYPTO_HASH
+       select CRYPTO_LIB_SHA1
        help
          SHA-1 secure hash standard (FIPS 180-1/DFIPS 180-2).
 
index c984afc..d8d0b4b 100644 (file)
@@ -1472,6 +1472,7 @@ config HAVE_PCSPKR_PLATFORM
 # interpreter that classic socket filters depend on
 config BPF
        bool
+       select CRYPTO_LIB_SHA1
 
 menuconfig EXPERT
        bool "Configure standard kernel features (expert users)"
index 2082af4..9ff549f 100644 (file)
@@ -121,6 +121,9 @@ config CRYPTO_LIB_CHACHA20POLY1305
        select CRYPTO_LIB_POLY1305
        select CRYPTO_ALGAPI
 
+config CRYPTO_LIB_SHA1
+       tristate
+
 config CRYPTO_LIB_SHA256
        tristate
 
index d28111b..919cbb2 100644 (file)
@@ -34,7 +34,8 @@ libpoly1305-y                                 := poly1305-donna32.o
 libpoly1305-$(CONFIG_ARCH_SUPPORTS_INT128)     := poly1305-donna64.o
 libpoly1305-y                                  += poly1305.o
 
-obj-y                                          += sha1.o
+obj-$(CONFIG_CRYPTO_LIB_SHA1)                  += libsha1.o
+libsha1-y                                      := sha1.o
 
 obj-$(CONFIG_CRYPTO_LIB_SHA256)                        += libsha256.o
 libsha256-y                                    := sha256.o
index bf2e5e5..658bfed 100644 (file)
@@ -7,6 +7,7 @@
 menuconfig IPV6
        tristate "The IPv6 protocol"
        default y
+       select CRYPTO_LIB_SHA1
        help
          Support for IP version 6 (IPv6).