From ba9472c1c121b13e48f7c198d3fe9871a86e664c Mon Sep 17 00:00:00 2001 From: sdlyyxy Date: Sat, 15 Jul 2023 23:26:05 +0800 Subject: [PATCH] Update with `ARMV8_HAVE_SHA3_AND_WORTH_USING` Reviewed-by: Tom Cosgrove Reviewed-by: Paul Dale (Merged from https://github.com/openssl/openssl/pull/21398) --- crypto/arm_arch.h | 2 +- crypto/armcap.c | 4 ++-- providers/implementations/digests/sha3_prov.c | 8 ++------ 3 files changed, 5 insertions(+), 9 deletions(-) diff --git a/crypto/arm_arch.h b/crypto/arm_arch.h index e27838f5d6c..ffa619bf49c 100644 --- a/crypto/arm_arch.h +++ b/crypto/arm_arch.h @@ -85,7 +85,7 @@ extern unsigned int OPENSSL_armv8_rsa_neonized; # define ARMV8_UNROLL8_EOR3 (1<<12) # define ARMV8_SVE (1<<13) # define ARMV8_SVE2 (1<<14) -# define ARMV8_WORTH_USING_SHA3 (1<<15) +# define ARMV8_HAVE_SHA3_AND_WORTH_USING (1<<15) /* * MIDR_EL1 system register diff --git a/crypto/armcap.c b/crypto/armcap.c index 8443f8fcbd4..3b1447456d7 100644 --- a/crypto/armcap.c +++ b/crypto/armcap.c @@ -300,7 +300,7 @@ void OPENSSL_cpuid_setup(void) ((strncmp(uarch, "Apple M1", 8) == 0) || (strncmp(uarch, "Apple M2", 8) == 0))) { OPENSSL_armcap_P |= ARMV8_UNROLL8_EOR3; - OPENSSL_armcap_P |= ARMV8_WORTH_USING_SHA3; + OPENSSL_armcap_P |= ARMV8_HAVE_SHA3_AND_WORTH_USING; } } } @@ -433,7 +433,7 @@ void OPENSSL_cpuid_setup(void) MIDR_IS_CPU_MODEL(OPENSSL_arm_midr, ARM_CPU_IMP_APPLE, APPLE_CPU_PART_M2_AVALANCHE_MAX) || MIDR_IS_CPU_MODEL(OPENSSL_arm_midr, ARM_CPU_IMP_APPLE, APPLE_CPU_PART_M2_BLIZZARD_MAX)) && (OPENSSL_armcap_P & ARMV8_SHA3)) - OPENSSL_armcap_P |= ARMV8_WORTH_USING_SHA3; + OPENSSL_armcap_P |= ARMV8_HAVE_SHA3_AND_WORTH_USING; # endif } #endif /* _WIN32, __ARM_MAX_ARCH__ >= 7 */ diff --git a/providers/implementations/digests/sha3_prov.c b/providers/implementations/digests/sha3_prov.c index a03df0b7fc6..7bb0bff8519 100644 --- a/providers/implementations/digests/sha3_prov.c +++ b/providers/implementations/digests/sha3_prov.c @@ -271,18 +271,14 @@ static PROV_SHA3_METHOD sha3_ARMSHA3_md = armsha3_sha3_absorb, generic_sha3_final }; -/* Users can switch back to the generic code by clearing either of the bits */ -# define ARM_SHA3_CAPABLE \ - ((OPENSSL_armcap_P & ARMV8_SHA3) && \ - (OPENSSL_armcap_P & ARMV8_WORTH_USING_SHA3)) # define SHA3_SET_MD(uname, typ) \ - if (ARM_SHA3_CAPABLE) { \ + if (OPENSSL_armcap_P & ARMV8_HAVE_SHA3_AND_WORTH_USING) { \ ctx->meth = sha3_ARMSHA3_md; \ } else { \ ctx->meth = sha3_generic_md; \ } # define KMAC_SET_MD(bitlen) \ - if (ARM_SHA3_CAPABLE) { \ + if (OPENSSL_armcap_P & ARMV8_HAVE_SHA3_AND_WORTH_USING) { \ ctx->meth = sha3_ARMSHA3_md; \ } else { \ ctx->meth = sha3_generic_md; \ -- 2.47.2