From: Tomas Mraz Date: Thu, 28 Jul 2022 14:23:51 +0000 (+0200) Subject: Fix regression from GCM mode refactoring X-Git-Tag: openssl-3.2.0-alpha1~2319 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=186be8ed26f5561faf91d6da3ed14cd9cb6617dd;p=thirdparty%2Fopenssl.git Fix regression from GCM mode refactoring Fixes #18896 Reviewed-by: Todd Short Reviewed-by: Paul Dale (Merged from https://github.com/openssl/openssl/pull/18903) --- diff --git a/crypto/modes/gcm128.c b/crypto/modes/gcm128.c index 22ce8500b61..84cc6fb08a2 100644 --- a/crypto/modes/gcm128.c +++ b/crypto/modes/gcm128.c @@ -459,7 +459,9 @@ static void gcm_get_funcs(struct gcm_funcs_st *ctx) return; # endif #elif defined(GHASH_ASM_ARM) - /* ARM */ + /* ARM defaults */ + ctx->gmult = gcm_gmult_4bit; + ctx->ghash = gcm_ghash_4bit; # ifdef PMULL_CAPABLE if (PMULL_CAPABLE) { ctx->ginit = (gcm_init_fn)gcm_init_v8; @@ -475,7 +477,9 @@ static void gcm_get_funcs(struct gcm_funcs_st *ctx) # endif return; #elif defined(GHASH_ASM_SPARC) - /* SPARC */ + /* SPARC defaults */ + ctx->gmult = gcm_gmult_4bit; + ctx->ghash = gcm_ghash_4bit; if (OPENSSL_sparcv9cap_P[0] & SPARCV9_VIS3) { ctx->ginit = gcm_init_vis3; ctx->gmult = gcm_gmult_vis3; @@ -483,7 +487,7 @@ static void gcm_get_funcs(struct gcm_funcs_st *ctx) } return; #elif defined(GHASH_ASM_PPC) - /* PowerPC */ + /* PowerPC does not define GHASH_ASM; defaults set above */ if (OPENSSL_ppccap_P & PPC_CRYPTO207) { ctx->ginit = gcm_init_p8; ctx->gmult = gcm_gmult_p8; @@ -491,15 +495,15 @@ static void gcm_get_funcs(struct gcm_funcs_st *ctx) } return; #elif defined(GHASH_ASM_RISCV) && __riscv_xlen == 64 - /* RISCV */ + /* RISCV defaults; gmult already set above */ ctx->ghash = NULL; if (RISCV_HAS_ZBB() && RISCV_HAS_ZBC()) { ctx->ginit = gcm_init_clmul_rv64i_zbb_zbc; ctx->gmult = gcm_gmult_clmul_rv64i_zbb_zbc; } return; -#endif -#if defined(__s390__) || defined(__s390x__) +#elif defined(GHASH_ASM) + /* all other architectures use the generic names */ ctx->gmult = gcm_gmult_4bit; ctx->ghash = gcm_ghash_4bit; return;