From 48723f4db60f6f8a8ad8424ffe5e0262d30f397c Mon Sep 17 00:00:00 2001 From: jsing <> Date: Sat, 28 Jun 2025 12:39:10 +0000 Subject: Rework gcm128 implementation selection for amd64/i386. Provide gcm128_amd64.c and gcm128_i386.c, which contain the appropriate gcm128 initialisation and CPU feature tests for the respective platform. This allows for all of the #define spagetti to be removed from gcm128.c and removes one of the two remaining consumers of crypto_cpu_caps_ia32(). ok tb@ --- src/lib/libcrypto/arch/amd64/Makefile.inc | 6 +++++- src/lib/libcrypto/arch/amd64/crypto_arch.h | 4 +++- src/lib/libcrypto/arch/i386/Makefile.inc | 7 ++++++- src/lib/libcrypto/arch/i386/crypto_arch.h | 4 +++- 4 files changed, 17 insertions(+), 4 deletions(-) (limited to 'src/lib/libcrypto/arch') diff --git a/src/lib/libcrypto/arch/amd64/Makefile.inc b/src/lib/libcrypto/arch/amd64/Makefile.inc index 5ecf8f1390..649c507189 100644 --- a/src/lib/libcrypto/arch/amd64/Makefile.inc +++ b/src/lib/libcrypto/arch/amd64/Makefile.inc @@ -1,4 +1,4 @@ -# $OpenBSD: Makefile.inc,v 1.40 2025/06/15 15:11:50 jsing Exp $ +# $OpenBSD: Makefile.inc,v 1.41 2025/06/28 12:39:10 jsing Exp $ # amd64-specific libcrypto build rules @@ -38,11 +38,15 @@ SRCS += word_clz.S # md5 CFLAGS+= -DMD5_ASM SRCS+= md5_amd64_generic.S + # modes CFLAGS+= -DGHASH_ASM SSLASM+= modes ghash-x86_64 +SRCS += gcm128_amd64.c + # rc4 SSLASM+= rc4 rc4-x86_64 + # ripemd # sha SRCS+= sha1_amd64.c diff --git a/src/lib/libcrypto/arch/amd64/crypto_arch.h b/src/lib/libcrypto/arch/amd64/crypto_arch.h index 213a5d903e..9f292cc530 100644 --- a/src/lib/libcrypto/arch/amd64/crypto_arch.h +++ b/src/lib/libcrypto/arch/amd64/crypto_arch.h @@ -1,4 +1,4 @@ -/* $OpenBSD: crypto_arch.h,v 1.8 2025/06/28 12:20:39 jsing Exp $ */ +/* $OpenBSD: crypto_arch.h,v 1.9 2025/06/28 12:39:10 jsing Exp $ */ /* * Copyright (c) 2024 Joel Sing * @@ -40,6 +40,8 @@ extern uint64_t crypto_cpu_caps_amd64; #define HAVE_AES_CBC_ENCRYPT_INTERNAL #define HAVE_AES_CTR32_ENCRYPT_INTERNAL +#define HAVE_GCM128_INIT + #define HAVE_RC4_INTERNAL #define HAVE_RC4_SET_KEY_INTERNAL diff --git a/src/lib/libcrypto/arch/i386/Makefile.inc b/src/lib/libcrypto/arch/i386/Makefile.inc index 8747d389ac..bfc701687e 100644 --- a/src/lib/libcrypto/arch/i386/Makefile.inc +++ b/src/lib/libcrypto/arch/i386/Makefile.inc @@ -1,4 +1,4 @@ -# $OpenBSD: Makefile.inc,v 1.30 2025/06/15 15:11:50 jsing Exp $ +# $OpenBSD: Makefile.inc,v 1.31 2025/06/28 12:39:10 jsing Exp $ # i386-specific libcrypto build rules @@ -18,14 +18,19 @@ SSLASM+= bn bn-586 SSLASM+= bn co-586 CFLAGS+= -DOPENSSL_BN_ASM_MONT SSLASM+= bn x86-mont + # md5 CFLAGS+= -DMD5_ASM SSLASM+= md5 md5-586 + # modes CFLAGS+= -DGHASH_ASM SSLASM+= modes ghash-x86 +SRCS += gcm128_i386.c + # rc4 SSLASM+= rc4 rc4-586 + # sha SSLASM+= sha sha1-586 SSLASM+= sha sha256-586 diff --git a/src/lib/libcrypto/arch/i386/crypto_arch.h b/src/lib/libcrypto/arch/i386/crypto_arch.h index 9a377e56a9..95d4cc468b 100644 --- a/src/lib/libcrypto/arch/i386/crypto_arch.h +++ b/src/lib/libcrypto/arch/i386/crypto_arch.h @@ -1,4 +1,4 @@ -/* $OpenBSD: crypto_arch.h,v 1.7 2025/06/28 12:21:46 jsing Exp $ */ +/* $OpenBSD: crypto_arch.h,v 1.8 2025/06/28 12:39:10 jsing Exp $ */ /* * Copyright (c) 2024 Joel Sing * @@ -40,6 +40,8 @@ extern uint64_t crypto_cpu_caps_i386; #define HAVE_AES_CBC_ENCRYPT_INTERNAL #define HAVE_AES_CTR32_ENCRYPT_INTERNAL +#define HAVE_GCM128_INIT + #define HAVE_RC4_INTERNAL #define HAVE_RC4_SET_KEY_INTERNAL -- cgit v1.2.3-55-g6feb