diff --git a/src/Crypto/cpu.c b/src/Crypto/cpu.c index 90c97416..12e4be15 100644 --- a/src/Crypto/cpu.c +++ b/src/Crypto/cpu.c @@ -290,7 +290,10 @@ static int Detect_MS_HyperV_AES () #endif -#if defined(__SHA__) || defined(__INTEL_COMPILER) || CRYPTOPP_SHANI_AVAILABLE +/* TrySHA256 lives in Sha2Intel.c, which omits it for _UEFI and CRYPTOPP_DISABLE_ASM */ +#if !defined(_UEFI) && !defined(CRYPTOPP_DISABLE_ASM) && \ + (defined(__SHA__) || defined(__INTEL_COMPILER) || CRYPTOPP_SHANI_AVAILABLE) +#define TC_SHA256_PROBE_AVAILABLE extern int TrySHA256(); #endif @@ -366,7 +369,7 @@ void DetectX86Features() } #endif -#if defined(__SHA__) || defined(__INTEL_COMPILER) || CRYPTOPP_SHANI_AVAILABLE +#ifdef TC_SHA256_PROBE_AVAILABLE if (!g_hasSHA256) { g_hasSHA256 = TrySHA256(); diff --git a/src/Crypto/cpu.h b/src/Crypto/cpu.h index b8e02b3e..6ad182aa 100644 --- a/src/Crypto/cpu.h +++ b/src/Crypto/cpu.h @@ -236,7 +236,8 @@ extern "C" { #endif #define CRYPTOPP_CPUID_AVAILABLE -#if !defined(CRYPTOPP_DISABLE_AESNI) && !defined(WOLFCRYPT_BACKEND) +/* aes_hw_cpu_* come from the assembler module, which NOASM builds leave out */ +#if !defined(CRYPTOPP_DISABLE_AESNI) && !defined(WOLFCRYPT_BACKEND) && !defined(CRYPTOPP_DISABLE_ASM) #define TC_AES_HW_CPU #endif