Skip to content

Commit 70cb6ca

Browse files
author
Eric Biggers
committed
lib/crypto: arm/sha1: Migrate optimized code into library
Instead of exposing the arm-optimized SHA-1 code via arm-specific crypto_shash algorithms, instead just implement the sha1_blocks() library function. This is much simpler, it makes the SHA-1 library functions be arm-optimized, and it fixes the longstanding issue where the arm-optimized SHA-1 code was disabled by default. SHA-1 still remains available through crypto_shash, but individual architectures no longer need to handle it. To match sha1_blocks(), change the type of the nblocks parameter of the assembly functions from int to size_t. The assembly functions actually already treated it as size_t. Reviewed-by: Ard Biesheuvel <ardb@kernel.org> Link: https://lore.kernel.org/r/20250712232329.818226-8-ebiggers@kernel.org Signed-off-by: Eric Biggers <ebiggers@kernel.org>
1 parent b10a74a commit 70cb6ca

16 files changed

Lines changed: 60 additions & 283 deletions

arch/arm/configs/exynos_defconfig

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -363,7 +363,6 @@ CONFIG_CRYPTO_USER_API_HASH=m
363363
CONFIG_CRYPTO_USER_API_SKCIPHER=m
364364
CONFIG_CRYPTO_USER_API_RNG=m
365365
CONFIG_CRYPTO_USER_API_AEAD=m
366-
CONFIG_CRYPTO_SHA1_ARM_NEON=m
367366
CONFIG_CRYPTO_AES_ARM_BS=m
368367
CONFIG_CRYPTO_CHACHA20_NEON=m
369368
CONFIG_CRYPTO_DEV_EXYNOS_RNG=y

arch/arm/configs/milbeaut_m10v_defconfig

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -98,8 +98,6 @@ CONFIG_CRYPTO_SELFTESTS=y
9898
CONFIG_CRYPTO_AES=y
9999
CONFIG_CRYPTO_SEQIV=m
100100
CONFIG_CRYPTO_GHASH_ARM_CE=m
101-
CONFIG_CRYPTO_SHA1_ARM_NEON=m
102-
CONFIG_CRYPTO_SHA1_ARM_CE=m
103101
CONFIG_CRYPTO_AES_ARM=m
104102
CONFIG_CRYPTO_AES_ARM_BS=m
105103
CONFIG_CRYPTO_AES_ARM_CE=m

arch/arm/configs/multi_v7_defconfig

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1280,8 +1280,6 @@ CONFIG_CRYPTO_USER_API_SKCIPHER=m
12801280
CONFIG_CRYPTO_USER_API_RNG=m
12811281
CONFIG_CRYPTO_USER_API_AEAD=m
12821282
CONFIG_CRYPTO_GHASH_ARM_CE=m
1283-
CONFIG_CRYPTO_SHA1_ARM_NEON=m
1284-
CONFIG_CRYPTO_SHA1_ARM_CE=m
12851283
CONFIG_CRYPTO_AES_ARM=m
12861284
CONFIG_CRYPTO_AES_ARM_BS=m
12871285
CONFIG_CRYPTO_AES_ARM_CE=m

arch/arm/configs/omap2plus_defconfig

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -704,7 +704,6 @@ CONFIG_NLS_ISO8859_1=y
704704
CONFIG_SECURITY=y
705705
CONFIG_CRYPTO_MICHAEL_MIC=y
706706
CONFIG_CRYPTO_GHASH_ARM_CE=m
707-
CONFIG_CRYPTO_SHA1_ARM_NEON=m
708707
CONFIG_CRYPTO_AES_ARM=m
709708
CONFIG_CRYPTO_AES_ARM_BS=m
710709
CONFIG_CRYPTO_CHACHA20_NEON=m

arch/arm/configs/pxa_defconfig

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -658,7 +658,6 @@ CONFIG_CRYPTO_ANUBIS=m
658658
CONFIG_CRYPTO_XCBC=m
659659
CONFIG_CRYPTO_DEFLATE=y
660660
CONFIG_CRYPTO_LZO=y
661-
CONFIG_CRYPTO_SHA1_ARM=m
662661
CONFIG_CRYPTO_AES_ARM=m
663662
CONFIG_FONTS=y
664663
CONFIG_FONT_8x8=y

arch/arm/crypto/Kconfig

Lines changed: 0 additions & 31 deletions
Original file line numberDiff line numberDiff line change
@@ -62,37 +62,6 @@ config CRYPTO_BLAKE2B_NEON
6262
much faster than the SHA-2 family and slightly faster than
6363
SHA-1.
6464

65-
config CRYPTO_SHA1_ARM
66-
tristate "Hash functions: SHA-1"
67-
select CRYPTO_SHA1
68-
select CRYPTO_HASH
69-
help
70-
SHA-1 secure hash algorithm (FIPS 180)
71-
72-
Architecture: arm
73-
74-
config CRYPTO_SHA1_ARM_NEON
75-
tristate "Hash functions: SHA-1 (NEON)"
76-
depends on KERNEL_MODE_NEON
77-
select CRYPTO_SHA1_ARM
78-
select CRYPTO_SHA1
79-
select CRYPTO_HASH
80-
help
81-
SHA-1 secure hash algorithm (FIPS 180)
82-
83-
Architecture: arm using
84-
- NEON (Advanced SIMD) extensions
85-
86-
config CRYPTO_SHA1_ARM_CE
87-
tristate "Hash functions: SHA-1 (ARMv8 Crypto Extensions)"
88-
depends on KERNEL_MODE_NEON
89-
select CRYPTO_SHA1_ARM
90-
select CRYPTO_HASH
91-
help
92-
SHA-1 secure hash algorithm (FIPS 180)
93-
94-
Architecture: arm using ARMv8 Crypto Extensions
95-
9665
config CRYPTO_AES_ARM
9766
tristate "Ciphers: AES"
9867
select CRYPTO_ALGAPI

arch/arm/crypto/Makefile

Lines changed: 0 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -5,22 +5,16 @@
55

66
obj-$(CONFIG_CRYPTO_AES_ARM) += aes-arm.o
77
obj-$(CONFIG_CRYPTO_AES_ARM_BS) += aes-arm-bs.o
8-
obj-$(CONFIG_CRYPTO_SHA1_ARM) += sha1-arm.o
9-
obj-$(CONFIG_CRYPTO_SHA1_ARM_NEON) += sha1-arm-neon.o
108
obj-$(CONFIG_CRYPTO_BLAKE2B_NEON) += blake2b-neon.o
119
obj-$(CONFIG_CRYPTO_NHPOLY1305_NEON) += nhpoly1305-neon.o
1210
obj-$(CONFIG_CRYPTO_CURVE25519_NEON) += curve25519-neon.o
1311

1412
obj-$(CONFIG_CRYPTO_AES_ARM_CE) += aes-arm-ce.o
15-
obj-$(CONFIG_CRYPTO_SHA1_ARM_CE) += sha1-arm-ce.o
1613
obj-$(CONFIG_CRYPTO_GHASH_ARM_CE) += ghash-arm-ce.o
1714

1815
aes-arm-y := aes-cipher-core.o aes-cipher-glue.o
1916
aes-arm-bs-y := aes-neonbs-core.o aes-neonbs-glue.o
20-
sha1-arm-y := sha1-armv4-large.o sha1_glue.o
21-
sha1-arm-neon-y := sha1-armv7-neon.o sha1_neon_glue.o
2217
blake2b-neon-y := blake2b-neon-core.o blake2b-neon-glue.o
23-
sha1-arm-ce-y := sha1-ce-core.o sha1-ce-glue.o
2418
aes-arm-ce-y := aes-ce-core.o aes-ce-glue.o
2519
ghash-arm-ce-y := ghash-ce-core.o ghash-ce-glue.o
2620
nhpoly1305-neon-y := nh-neon-core.o nhpoly1305-neon-glue.o

arch/arm/crypto/sha1-ce-glue.c

Lines changed: 0 additions & 72 deletions
This file was deleted.

arch/arm/crypto/sha1_glue.c

Lines changed: 0 additions & 75 deletions
This file was deleted.

arch/arm/crypto/sha1_neon_glue.c

Lines changed: 0 additions & 83 deletions
This file was deleted.

0 commit comments

Comments
 (0)