diff options
| author | jsing <> | 2025-02-14 12:01:58 +0000 |
|---|---|---|
| committer | jsing <> | 2025-02-14 12:01:58 +0000 |
| commit | 55a1827d4b1706532809a68f02c30336000e01a9 (patch) | |
| tree | 606af9a8caef4eada19e055b0a35e755d199b0d1 /src | |
| parent | aee4d44b17e8fc57dfaadf57efabb128712c9f72 (diff) | |
| download | openbsd-55a1827d4b1706532809a68f02c30336000e01a9.tar.gz openbsd-55a1827d4b1706532809a68f02c30336000e01a9.tar.bz2 openbsd-55a1827d4b1706532809a68f02c30336000e01a9.zip | |
Replace Makefile based SHA*_ASM defines with HAVE_SHA_* defines.
Currently, SHA{1,256,512}_ASM defines are used to remove the C
implementation of sha{1,256,512}_block_data_order() when it is provided
by assembly. However, this prevents the C implementation from being used
as a fallback.
Rename the C sha*_block_data_order() to sha*_block_generic() and provide
a sha*_block_data_order() that calls sha*_block_generic(). Replace the
Makefile based SHA*_ASM defines with two HAVE_SHA_* defines that allow
these functions to be compiled in or removed, such that machine specific
verisons can be provided. This should effectively be a no-op on any
platform that defined SHA{1,256,512}_ASM.
ok tb@
Diffstat (limited to 'src')
20 files changed, 120 insertions, 58 deletions
diff --git a/src/lib/libcrypto/arch/alpha/Makefile.inc b/src/lib/libcrypto/arch/alpha/Makefile.inc index 3e42c42f5e..1073ac3c1e 100644 --- a/src/lib/libcrypto/arch/alpha/Makefile.inc +++ b/src/lib/libcrypto/arch/alpha/Makefile.inc | |||
| @@ -1,4 +1,4 @@ | |||
| 1 | # $OpenBSD: Makefile.inc,v 1.14 2024/03/29 07:24:09 jsing Exp $ | 1 | # $OpenBSD: Makefile.inc,v 1.15 2025/02/14 12:01:58 jsing Exp $ |
| 2 | 2 | ||
| 3 | # alpha-specific libcrypto build rules | 3 | # alpha-specific libcrypto build rules |
| 4 | 4 | ||
| @@ -9,7 +9,6 @@ CFLAGS+= -DOPENSSL_BN_ASM_MONT | |||
| 9 | CFLAGS+= -DGHASH_ASM | 9 | CFLAGS+= -DGHASH_ASM |
| 10 | SSLASM+= modes ghash-alpha | 10 | SSLASM+= modes ghash-alpha |
| 11 | # sha | 11 | # sha |
| 12 | CFLAGS+= -DSHA1_ASM | ||
| 13 | SSLASM+= sha sha1-alpha | 12 | SSLASM+= sha sha1-alpha |
| 14 | 13 | ||
| 15 | .for dir f in ${SSLASM} | 14 | .for dir f in ${SSLASM} |
diff --git a/src/lib/libcrypto/arch/alpha/crypto_arch.h b/src/lib/libcrypto/arch/alpha/crypto_arch.h index a3dd98d0ce..1d553b7e07 100644 --- a/src/lib/libcrypto/arch/alpha/crypto_arch.h +++ b/src/lib/libcrypto/arch/alpha/crypto_arch.h | |||
| @@ -1,4 +1,4 @@ | |||
| 1 | /* $OpenBSD: crypto_arch.h,v 1.1 2024/08/11 13:02:39 jsing Exp $ */ | 1 | /* $OpenBSD: crypto_arch.h,v 1.2 2025/02/14 12:01:58 jsing Exp $ */ |
| 2 | /* | 2 | /* |
| 3 | * Copyright (c) 2024 Joel Sing <jsing@openbsd.org> | 3 | * Copyright (c) 2024 Joel Sing <jsing@openbsd.org> |
| 4 | * | 4 | * |
| @@ -18,4 +18,7 @@ | |||
| 18 | #ifndef HEADER_CRYPTO_ARCH_H | 18 | #ifndef HEADER_CRYPTO_ARCH_H |
| 19 | #define HEADER_CRYPTO_ARCH_H | 19 | #define HEADER_CRYPTO_ARCH_H |
| 20 | 20 | ||
| 21 | #define HAVE_SHA1_BLOCK_DATA_ORDER | ||
| 22 | #define HAVE_SHA1_BLOCK_GENERIC | ||
| 23 | |||
| 21 | #endif | 24 | #endif |
diff --git a/src/lib/libcrypto/arch/amd64/Makefile.inc b/src/lib/libcrypto/arch/amd64/Makefile.inc index f4410e8059..b1a6563931 100644 --- a/src/lib/libcrypto/arch/amd64/Makefile.inc +++ b/src/lib/libcrypto/arch/amd64/Makefile.inc | |||
| @@ -1,4 +1,4 @@ | |||
| 1 | # $OpenBSD: Makefile.inc,v 1.36 2025/01/24 13:35:04 jsing Exp $ | 1 | # $OpenBSD: Makefile.inc,v 1.37 2025/02/14 12:01:58 jsing Exp $ |
| 2 | 2 | ||
| 3 | # amd64-specific libcrypto build rules | 3 | # amd64-specific libcrypto build rules |
| 4 | 4 | ||
| @@ -48,15 +48,12 @@ SSLASM+= modes ghash-x86_64 | |||
| 48 | SSLASM+= rc4 rc4-x86_64 | 48 | SSLASM+= rc4 rc4-x86_64 |
| 49 | # ripemd | 49 | # ripemd |
| 50 | # sha | 50 | # sha |
| 51 | CFLAGS+= -DSHA1_ASM | ||
| 52 | SRCS+= sha1_amd64.c | 51 | SRCS+= sha1_amd64.c |
| 53 | SRCS+= sha1_amd64_generic.S | 52 | SRCS+= sha1_amd64_generic.S |
| 54 | SRCS+= sha1_amd64_shani.S | 53 | SRCS+= sha1_amd64_shani.S |
| 55 | CFLAGS+= -DSHA256_ASM | ||
| 56 | SRCS+= sha256_amd64.c | 54 | SRCS+= sha256_amd64.c |
| 57 | SRCS+= sha256_amd64_generic.S | 55 | SRCS+= sha256_amd64_generic.S |
| 58 | SRCS+= sha256_amd64_shani.S | 56 | SRCS+= sha256_amd64_shani.S |
| 59 | CFLAGS+= -DSHA512_ASM | ||
| 60 | SRCS+= sha512_amd64.c | 57 | SRCS+= sha512_amd64.c |
| 61 | SRCS+= sha512_amd64_generic.S | 58 | SRCS+= sha512_amd64_generic.S |
| 62 | 59 | ||
diff --git a/src/lib/libcrypto/arch/amd64/crypto_arch.h b/src/lib/libcrypto/arch/amd64/crypto_arch.h index 7546fb0dfd..951374250d 100644 --- a/src/lib/libcrypto/arch/amd64/crypto_arch.h +++ b/src/lib/libcrypto/arch/amd64/crypto_arch.h | |||
| @@ -1,4 +1,4 @@ | |||
| 1 | /* $OpenBSD: crypto_arch.h,v 1.4 2024/11/16 13:05:35 jsing Exp $ */ | 1 | /* $OpenBSD: crypto_arch.h,v 1.5 2025/02/14 12:01:58 jsing Exp $ */ |
| 2 | /* | 2 | /* |
| 3 | * Copyright (c) 2024 Joel Sing <jsing@openbsd.org> | 3 | * Copyright (c) 2024 Joel Sing <jsing@openbsd.org> |
| 4 | * | 4 | * |
| @@ -40,6 +40,15 @@ extern uint64_t crypto_cpu_caps_amd64; | |||
| 40 | #define HAVE_RC4_INTERNAL | 40 | #define HAVE_RC4_INTERNAL |
| 41 | #define HAVE_RC4_SET_KEY_INTERNAL | 41 | #define HAVE_RC4_SET_KEY_INTERNAL |
| 42 | 42 | ||
| 43 | #define HAVE_SHA1_BLOCK_DATA_ORDER | ||
| 44 | #define HAVE_SHA1_BLOCK_GENERIC | ||
| 45 | |||
| 46 | #define HAVE_SHA256_BLOCK_DATA_ORDER | ||
| 47 | #define HAVE_SHA256_BLOCK_GENERIC | ||
| 48 | |||
| 49 | #define HAVE_SHA512_BLOCK_DATA_ORDER | ||
| 50 | #define HAVE_SHA512_BLOCK_GENERIC | ||
| 51 | |||
| 43 | #endif | 52 | #endif |
| 44 | 53 | ||
| 45 | #endif | 54 | #endif |
diff --git a/src/lib/libcrypto/arch/arm/Makefile.inc b/src/lib/libcrypto/arch/arm/Makefile.inc index b09b54a564..e078c51d98 100644 --- a/src/lib/libcrypto/arch/arm/Makefile.inc +++ b/src/lib/libcrypto/arch/arm/Makefile.inc | |||
| @@ -12,11 +12,8 @@ SSLASM+= bn armv4-mont | |||
| 12 | CFLAGS+= -DGHASH_ASM | 12 | CFLAGS+= -DGHASH_ASM |
| 13 | SSLASM+= modes ghash-armv4 | 13 | SSLASM+= modes ghash-armv4 |
| 14 | # sha | 14 | # sha |
| 15 | CFLAGS+= -DSHA1_ASM | ||
| 16 | SSLASM+= sha sha1-armv4-large | 15 | SSLASM+= sha sha1-armv4-large |
| 17 | CFLAGS+= -DSHA256_ASM | ||
| 18 | SSLASM+= sha sha256-armv4 | 16 | SSLASM+= sha sha256-armv4 |
| 19 | CFLAGS+= -DSHA512_ASM | ||
| 20 | SSLASM+= sha sha512-armv4 | 17 | SSLASM+= sha sha512-armv4 |
| 21 | 18 | ||
| 22 | .for dir f in ${SSLASM} | 19 | .for dir f in ${SSLASM} |
diff --git a/src/lib/libcrypto/arch/arm/crypto_arch.h b/src/lib/libcrypto/arch/arm/crypto_arch.h index 4276dc31ea..07d7829fe3 100644 --- a/src/lib/libcrypto/arch/arm/crypto_arch.h +++ b/src/lib/libcrypto/arch/arm/crypto_arch.h | |||
| @@ -1,4 +1,4 @@ | |||
| 1 | /* $OpenBSD: crypto_arch.h,v 1.1 2024/08/11 13:02:39 jsing Exp $ */ | 1 | /* $OpenBSD: crypto_arch.h,v 1.2 2025/02/14 12:01:58 jsing Exp $ */ |
| 2 | /* | 2 | /* |
| 3 | * Copyright (c) 2024 Joel Sing <jsing@openbsd.org> | 3 | * Copyright (c) 2024 Joel Sing <jsing@openbsd.org> |
| 4 | * | 4 | * |
| @@ -25,6 +25,15 @@ | |||
| 25 | #define HAVE_AES_ENCRYPT_INTERNAL | 25 | #define HAVE_AES_ENCRYPT_INTERNAL |
| 26 | #define HAVE_AES_DECRYPT_INTERNAL | 26 | #define HAVE_AES_DECRYPT_INTERNAL |
| 27 | 27 | ||
| 28 | #define HAVE_SHA1_BLOCK_DATA_ORDER | ||
| 29 | #define HAVE_SHA1_BLOCK_GENERIC | ||
| 30 | |||
| 31 | #define HAVE_SHA256_BLOCK_DATA_ORDER | ||
| 32 | #define HAVE_SHA256_BLOCK_GENERIC | ||
| 33 | |||
| 34 | #define HAVE_SHA512_BLOCK_DATA_ORDER | ||
| 35 | #define HAVE_SHA512_BLOCK_GENERIC | ||
| 36 | |||
| 28 | #endif | 37 | #endif |
| 29 | 38 | ||
| 30 | #endif | 39 | #endif |
diff --git a/src/lib/libcrypto/arch/hppa/Makefile.inc b/src/lib/libcrypto/arch/hppa/Makefile.inc index 4e2675a600..11bfa4a5d3 100644 --- a/src/lib/libcrypto/arch/hppa/Makefile.inc +++ b/src/lib/libcrypto/arch/hppa/Makefile.inc | |||
| @@ -1,4 +1,4 @@ | |||
| 1 | # $OpenBSD: Makefile.inc,v 1.25 2024/08/11 13:02:39 jsing Exp $ | 1 | # $OpenBSD: Makefile.inc,v 1.26 2025/02/14 12:01:58 jsing Exp $ |
| 2 | 2 | ||
| 3 | # hppa-specific libcrypto build rules | 3 | # hppa-specific libcrypto build rules |
| 4 | 4 | ||
| @@ -12,9 +12,7 @@ CFLAGS+= -DOPENSSL_BN_ASM_MONT -DBN_DIV2W | |||
| 12 | CFLAGS+= -DGHASH_ASM | 12 | CFLAGS+= -DGHASH_ASM |
| 13 | SSLASM+= modes ghash-parisc ghash-parisc | 13 | SSLASM+= modes ghash-parisc ghash-parisc |
| 14 | # sha | 14 | # sha |
| 15 | CFLAGS+= -DSHA1_ASM | ||
| 16 | SSLASM+= sha sha1-parisc sha1-parisc | 15 | SSLASM+= sha sha1-parisc sha1-parisc |
| 17 | CFLAGS+= -DSHA256_ASM | ||
| 18 | SSLASM+= sha sha512-parisc sha256-parisc | 16 | SSLASM+= sha sha512-parisc sha256-parisc |
| 19 | 17 | ||
| 20 | .for dir src dst in ${SSLASM} | 18 | .for dir src dst in ${SSLASM} |
diff --git a/src/lib/libcrypto/arch/hppa/crypto_arch.h b/src/lib/libcrypto/arch/hppa/crypto_arch.h index 7f1fc36cac..08fcaca045 100644 --- a/src/lib/libcrypto/arch/hppa/crypto_arch.h +++ b/src/lib/libcrypto/arch/hppa/crypto_arch.h | |||
| @@ -1,4 +1,4 @@ | |||
| 1 | /* $OpenBSD: crypto_arch.h,v 1.1 2024/08/11 13:02:39 jsing Exp $ */ | 1 | /* $OpenBSD: crypto_arch.h,v 1.2 2025/02/14 12:01:58 jsing Exp $ */ |
| 2 | /* | 2 | /* |
| 3 | * Copyright (c) 2024 Joel Sing <jsing@openbsd.org> | 3 | * Copyright (c) 2024 Joel Sing <jsing@openbsd.org> |
| 4 | * | 4 | * |
| @@ -23,6 +23,12 @@ | |||
| 23 | #define HAVE_AES_ENCRYPT_INTERNAL | 23 | #define HAVE_AES_ENCRYPT_INTERNAL |
| 24 | #define HAVE_AES_DECRYPT_INTERNAL | 24 | #define HAVE_AES_DECRYPT_INTERNAL |
| 25 | 25 | ||
| 26 | #define HAVE_SHA1_BLOCK_DATA_ORDER | ||
| 27 | #define HAVE_SHA1_BLOCK_GENERIC | ||
| 28 | |||
| 29 | #define HAVE_SHA256_BLOCK_DATA_ORDER | ||
| 30 | #define HAVE_SHA256_BLOCK_GENERIC | ||
| 31 | |||
| 26 | #endif | 32 | #endif |
| 27 | 33 | ||
| 28 | #endif | 34 | #endif |
diff --git a/src/lib/libcrypto/arch/i386/Makefile.inc b/src/lib/libcrypto/arch/i386/Makefile.inc index 2101304703..6989b35686 100644 --- a/src/lib/libcrypto/arch/i386/Makefile.inc +++ b/src/lib/libcrypto/arch/i386/Makefile.inc | |||
| @@ -1,4 +1,4 @@ | |||
| 1 | # $OpenBSD: Makefile.inc,v 1.26 2024/10/18 14:44:02 jsing Exp $ | 1 | # $OpenBSD: Makefile.inc,v 1.27 2025/02/14 12:01:58 jsing Exp $ |
| 2 | 2 | ||
| 3 | # i386-specific libcrypto build rules | 3 | # i386-specific libcrypto build rules |
| 4 | 4 | ||
| @@ -28,11 +28,8 @@ SSLASM+= modes ghash-x86 | |||
| 28 | # rc4 | 28 | # rc4 |
| 29 | SSLASM+= rc4 rc4-586 | 29 | SSLASM+= rc4 rc4-586 |
| 30 | # sha | 30 | # sha |
| 31 | CFLAGS+= -DSHA1_ASM | ||
| 32 | SSLASM+= sha sha1-586 | 31 | SSLASM+= sha sha1-586 |
| 33 | CFLAGS+= -DSHA256_ASM | ||
| 34 | SSLASM+= sha sha256-586 | 32 | SSLASM+= sha sha256-586 |
| 35 | CFLAGS+= -DSHA512_ASM | ||
| 36 | SSLASM+= sha sha512-586 | 33 | SSLASM+= sha sha512-586 |
| 37 | 34 | ||
| 38 | .for dir f in ${SSLASM} | 35 | .for dir f in ${SSLASM} |
diff --git a/src/lib/libcrypto/arch/i386/crypto_arch.h b/src/lib/libcrypto/arch/i386/crypto_arch.h index 64b2da587b..3df3963d0b 100644 --- a/src/lib/libcrypto/arch/i386/crypto_arch.h +++ b/src/lib/libcrypto/arch/i386/crypto_arch.h | |||
| @@ -1,4 +1,4 @@ | |||
| 1 | /* $OpenBSD: crypto_arch.h,v 1.3 2024/10/19 13:06:11 jsing Exp $ */ | 1 | /* $OpenBSD: crypto_arch.h,v 1.4 2025/02/14 12:01:58 jsing Exp $ */ |
| 2 | /* | 2 | /* |
| 3 | * Copyright (c) 2024 Joel Sing <jsing@openbsd.org> | 3 | * Copyright (c) 2024 Joel Sing <jsing@openbsd.org> |
| 4 | * | 4 | * |
| @@ -32,6 +32,15 @@ | |||
| 32 | #define HAVE_RC4_INTERNAL | 32 | #define HAVE_RC4_INTERNAL |
| 33 | #define HAVE_RC4_SET_KEY_INTERNAL | 33 | #define HAVE_RC4_SET_KEY_INTERNAL |
| 34 | 34 | ||
| 35 | #define HAVE_SHA1_BLOCK_DATA_ORDER | ||
| 36 | #define HAVE_SHA1_BLOCK_GENERIC | ||
| 37 | |||
| 38 | #define HAVE_SHA256_BLOCK_DATA_ORDER | ||
| 39 | #define HAVE_SHA256_BLOCK_GENERIC | ||
| 40 | |||
| 41 | #define HAVE_SHA512_BLOCK_DATA_ORDER | ||
| 42 | #define HAVE_SHA512_BLOCK_GENERIC | ||
| 43 | |||
| 35 | #endif | 44 | #endif |
| 36 | 45 | ||
| 37 | #endif | 46 | #endif |
diff --git a/src/lib/libcrypto/arch/mips64/Makefile.inc b/src/lib/libcrypto/arch/mips64/Makefile.inc index 9e08b442ac..64e806289d 100644 --- a/src/lib/libcrypto/arch/mips64/Makefile.inc +++ b/src/lib/libcrypto/arch/mips64/Makefile.inc | |||
| @@ -1,4 +1,4 @@ | |||
| 1 | # $OpenBSD: Makefile.inc,v 1.18 2024/08/11 13:02:39 jsing Exp $ | 1 | # $OpenBSD: Makefile.inc,v 1.19 2025/02/14 12:01:58 jsing Exp $ |
| 2 | 2 | ||
| 3 | # mips64-specific libcrypto build rules | 3 | # mips64-specific libcrypto build rules |
| 4 | 4 | ||
| @@ -11,11 +11,8 @@ SSLASM+= bn mips-mont mips-mont | |||
| 11 | CFLAGS+= -DOPENSSL_BN_ASM_MONT | 11 | CFLAGS+= -DOPENSSL_BN_ASM_MONT |
| 12 | # sha | 12 | # sha |
| 13 | SSLASM+= sha sha1-mips sha1-mips | 13 | SSLASM+= sha sha1-mips sha1-mips |
| 14 | CFLAGS+= -DSHA1_ASM | ||
| 15 | SSLASM+= sha sha512-mips sha256-mips | 14 | SSLASM+= sha sha512-mips sha256-mips |
| 16 | CFLAGS+= -DSHA256_ASM | ||
| 17 | SSLASM+= sha sha512-mips sha512-mips | 15 | SSLASM+= sha sha512-mips sha512-mips |
| 18 | CFLAGS+= -DSHA512_ASM | ||
| 19 | 16 | ||
| 20 | .for dir src dst in ${SSLASM} | 17 | .for dir src dst in ${SSLASM} |
| 21 | SRCS+= ${dst}.S | 18 | SRCS+= ${dst}.S |
diff --git a/src/lib/libcrypto/arch/mips64/crypto_arch.h b/src/lib/libcrypto/arch/mips64/crypto_arch.h index 4276dc31ea..07d7829fe3 100644 --- a/src/lib/libcrypto/arch/mips64/crypto_arch.h +++ b/src/lib/libcrypto/arch/mips64/crypto_arch.h | |||
| @@ -1,4 +1,4 @@ | |||
| 1 | /* $OpenBSD: crypto_arch.h,v 1.1 2024/08/11 13:02:39 jsing Exp $ */ | 1 | /* $OpenBSD: crypto_arch.h,v 1.2 2025/02/14 12:01:58 jsing Exp $ */ |
| 2 | /* | 2 | /* |
| 3 | * Copyright (c) 2024 Joel Sing <jsing@openbsd.org> | 3 | * Copyright (c) 2024 Joel Sing <jsing@openbsd.org> |
| 4 | * | 4 | * |
| @@ -25,6 +25,15 @@ | |||
| 25 | #define HAVE_AES_ENCRYPT_INTERNAL | 25 | #define HAVE_AES_ENCRYPT_INTERNAL |
| 26 | #define HAVE_AES_DECRYPT_INTERNAL | 26 | #define HAVE_AES_DECRYPT_INTERNAL |
| 27 | 27 | ||
| 28 | #define HAVE_SHA1_BLOCK_DATA_ORDER | ||
| 29 | #define HAVE_SHA1_BLOCK_GENERIC | ||
| 30 | |||
| 31 | #define HAVE_SHA256_BLOCK_DATA_ORDER | ||
| 32 | #define HAVE_SHA256_BLOCK_GENERIC | ||
| 33 | |||
| 34 | #define HAVE_SHA512_BLOCK_DATA_ORDER | ||
| 35 | #define HAVE_SHA512_BLOCK_GENERIC | ||
| 36 | |||
| 28 | #endif | 37 | #endif |
| 29 | 38 | ||
| 30 | #endif | 39 | #endif |
diff --git a/src/lib/libcrypto/arch/powerpc/Makefile.inc b/src/lib/libcrypto/arch/powerpc/Makefile.inc index 6957abddaf..c5218e53f4 100644 --- a/src/lib/libcrypto/arch/powerpc/Makefile.inc +++ b/src/lib/libcrypto/arch/powerpc/Makefile.inc | |||
| @@ -1,4 +1,4 @@ | |||
| 1 | # $OpenBSD: Makefile.inc,v 1.13 2024/11/01 12:56:38 jsing Exp $ | 1 | # $OpenBSD: Makefile.inc,v 1.14 2025/02/14 12:01:58 jsing Exp $ |
| 2 | 2 | ||
| 3 | # powerpc-specific libcrypto build rules | 3 | # powerpc-specific libcrypto build rules |
| 4 | 4 | ||
| @@ -10,9 +10,7 @@ SSLASM+= bn ppc bn-ppc | |||
| 10 | SSLASM+= bn ppc-mont ppc-mont | 10 | SSLASM+= bn ppc-mont ppc-mont |
| 11 | CFLAGS+= -DOPENSSL_BN_ASM_MONT | 11 | CFLAGS+= -DOPENSSL_BN_ASM_MONT |
| 12 | # sha | 12 | # sha |
| 13 | CFLAGS+= -DSHA1_ASM | ||
| 14 | SSLASM+= sha sha1-ppc sha1-ppc | 13 | SSLASM+= sha sha1-ppc sha1-ppc |
| 15 | CFLAGS+= -DSHA256_ASM | ||
| 16 | SSLASM+= sha sha512-ppc sha256-ppc | 14 | SSLASM+= sha sha512-ppc sha256-ppc |
| 17 | 15 | ||
| 18 | .for dir src dst in ${SSLASM} | 16 | .for dir src dst in ${SSLASM} |
diff --git a/src/lib/libcrypto/arch/powerpc/crypto_arch.h b/src/lib/libcrypto/arch/powerpc/crypto_arch.h index a3dd98d0ce..d2730af0fb 100644 --- a/src/lib/libcrypto/arch/powerpc/crypto_arch.h +++ b/src/lib/libcrypto/arch/powerpc/crypto_arch.h | |||
| @@ -1,4 +1,4 @@ | |||
| 1 | /* $OpenBSD: crypto_arch.h,v 1.1 2024/08/11 13:02:39 jsing Exp $ */ | 1 | /* $OpenBSD: crypto_arch.h,v 1.2 2025/02/14 12:01:58 jsing Exp $ */ |
| 2 | /* | 2 | /* |
| 3 | * Copyright (c) 2024 Joel Sing <jsing@openbsd.org> | 3 | * Copyright (c) 2024 Joel Sing <jsing@openbsd.org> |
| 4 | * | 4 | * |
| @@ -18,4 +18,14 @@ | |||
| 18 | #ifndef HEADER_CRYPTO_ARCH_H | 18 | #ifndef HEADER_CRYPTO_ARCH_H |
| 19 | #define HEADER_CRYPTO_ARCH_H | 19 | #define HEADER_CRYPTO_ARCH_H |
| 20 | 20 | ||
| 21 | #ifndef OPENSSL_NO_ASM | ||
| 22 | |||
| 23 | #define HAVE_SHA1_BLOCK_DATA_ORDER | ||
| 24 | #define HAVE_SHA1_BLOCK_GENERIC | ||
| 25 | |||
| 26 | #define HAVE_SHA256_BLOCK_DATA_ORDER | ||
| 27 | #define HAVE_SHA256_BLOCK_GENERIC | ||
| 28 | |||
| 29 | #endif | ||
| 30 | |||
| 21 | #endif | 31 | #endif |
diff --git a/src/lib/libcrypto/arch/powerpc64/Makefile.inc b/src/lib/libcrypto/arch/powerpc64/Makefile.inc index da81a63cdf..c309ab8b40 100644 --- a/src/lib/libcrypto/arch/powerpc64/Makefile.inc +++ b/src/lib/libcrypto/arch/powerpc64/Makefile.inc | |||
| @@ -1,4 +1,4 @@ | |||
| 1 | # $OpenBSD: Makefile.inc,v 1.15 2024/11/01 12:56:38 jsing Exp $ | 1 | # $OpenBSD: Makefile.inc,v 1.16 2025/02/14 12:01:58 jsing Exp $ |
| 2 | 2 | ||
| 3 | # powerpc-specific libcrypto build rules | 3 | # powerpc-specific libcrypto build rules |
| 4 | 4 | ||
| @@ -10,9 +10,7 @@ | |||
| 10 | #SSLASM+= bn ppc-mont ppc-mont | 10 | #SSLASM+= bn ppc-mont ppc-mont |
| 11 | #CFLAGS+= -DOPENSSL_BN_ASM_MONT | 11 | #CFLAGS+= -DOPENSSL_BN_ASM_MONT |
| 12 | # sha | 12 | # sha |
| 13 | #CFLAGS+= -DSHA1_ASM | ||
| 14 | #SSLASM+= sha sha1-ppc sha1-ppc | 13 | #SSLASM+= sha sha1-ppc sha1-ppc |
| 15 | #CFLAGS+= -DSHA256_ASM | ||
| 16 | #SSLASM+= sha sha512-ppc sha256-ppc | 14 | #SSLASM+= sha sha512-ppc sha256-ppc |
| 17 | 15 | ||
| 18 | .for dir src dst in ${SSLASM} | 16 | .for dir src dst in ${SSLASM} |
diff --git a/src/lib/libcrypto/arch/sparc64/Makefile.inc b/src/lib/libcrypto/arch/sparc64/Makefile.inc index 43b4b199cd..cbf63e033e 100644 --- a/src/lib/libcrypto/arch/sparc64/Makefile.inc +++ b/src/lib/libcrypto/arch/sparc64/Makefile.inc | |||
| @@ -1,4 +1,4 @@ | |||
| 1 | # $OpenBSD: Makefile.inc,v 1.20 2024/10/19 11:55:32 jsing Exp $ | 1 | # $OpenBSD: Makefile.inc,v 1.21 2025/02/14 12:01:58 jsing Exp $ |
| 2 | 2 | ||
| 3 | # sparc64-specific libcrypto build rules | 3 | # sparc64-specific libcrypto build rules |
| 4 | 4 | ||
| @@ -11,11 +11,8 @@ CFLAGS+= -DGHASH_ASM | |||
| 11 | SSLASM+= modes ghash-sparcv9 ghash-sparcv9 | 11 | SSLASM+= modes ghash-sparcv9 ghash-sparcv9 |
| 12 | # sha | 12 | # sha |
| 13 | SSLASM+= sha sha1-sparcv9 sha1-sparcv9 | 13 | SSLASM+= sha sha1-sparcv9 sha1-sparcv9 |
| 14 | CFLAGS+= -DSHA1_ASM | ||
| 15 | SSLASM+= sha sha512-sparcv9 sha256-sparcv9 | 14 | SSLASM+= sha sha512-sparcv9 sha256-sparcv9 |
| 16 | CFLAGS+= -DSHA256_ASM | ||
| 17 | SSLASM+= sha sha512-sparcv9 sha512-sparcv9 | 15 | SSLASM+= sha sha512-sparcv9 sha512-sparcv9 |
| 18 | CFLAGS+= -DSHA512_ASM | ||
| 19 | 16 | ||
| 20 | .for dir src dst in ${SSLASM} | 17 | .for dir src dst in ${SSLASM} |
| 21 | SRCS+= ${dst}.S | 18 | SRCS+= ${dst}.S |
diff --git a/src/lib/libcrypto/arch/sparc64/crypto_arch.h b/src/lib/libcrypto/arch/sparc64/crypto_arch.h index 7f1fc36cac..251957a5bc 100644 --- a/src/lib/libcrypto/arch/sparc64/crypto_arch.h +++ b/src/lib/libcrypto/arch/sparc64/crypto_arch.h | |||
| @@ -1,4 +1,4 @@ | |||
| 1 | /* $OpenBSD: crypto_arch.h,v 1.1 2024/08/11 13:02:39 jsing Exp $ */ | 1 | /* $OpenBSD: crypto_arch.h,v 1.2 2025/02/14 12:01:58 jsing Exp $ */ |
| 2 | /* | 2 | /* |
| 3 | * Copyright (c) 2024 Joel Sing <jsing@openbsd.org> | 3 | * Copyright (c) 2024 Joel Sing <jsing@openbsd.org> |
| 4 | * | 4 | * |
| @@ -23,6 +23,15 @@ | |||
| 23 | #define HAVE_AES_ENCRYPT_INTERNAL | 23 | #define HAVE_AES_ENCRYPT_INTERNAL |
| 24 | #define HAVE_AES_DECRYPT_INTERNAL | 24 | #define HAVE_AES_DECRYPT_INTERNAL |
| 25 | 25 | ||
| 26 | #define HAVE_SHA1_BLOCK_DATA_ORDER | ||
| 27 | #define HAVE_SHA1_BLOCK_GENERIC | ||
| 28 | |||
| 29 | #define HAVE_SHA256_BLOCK_DATA_ORDER | ||
| 30 | #define HAVE_SHA256_BLOCK_GENERIC | ||
| 31 | |||
| 32 | #define HAVE_SHA512_BLOCK_DATA_ORDER | ||
| 33 | #define HAVE_SHA512_BLOCK_GENERIC | ||
| 34 | |||
| 26 | #endif | 35 | #endif |
| 27 | 36 | ||
| 28 | #endif | 37 | #endif |
diff --git a/src/lib/libcrypto/sha/sha1.c b/src/lib/libcrypto/sha/sha1.c index 52338812db..ab05709818 100644 --- a/src/lib/libcrypto/sha/sha1.c +++ b/src/lib/libcrypto/sha/sha1.c | |||
| @@ -1,4 +1,4 @@ | |||
| 1 | /* $OpenBSD: sha1.c,v 1.15 2024/06/01 07:36:16 tb Exp $ */ | 1 | /* $OpenBSD: sha1.c,v 1.16 2025/02/14 12:01:58 jsing Exp $ */ |
| 2 | /* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com) | 2 | /* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com) |
| 3 | * All rights reserved. | 3 | * All rights reserved. |
| 4 | * | 4 | * |
| @@ -71,11 +71,10 @@ | |||
| 71 | /* Ensure that SHA_LONG and uint32_t are equivalent sizes. */ | 71 | /* Ensure that SHA_LONG and uint32_t are equivalent sizes. */ |
| 72 | CTASSERT(sizeof(SHA_LONG) == sizeof(uint32_t)); | 72 | CTASSERT(sizeof(SHA_LONG) == sizeof(uint32_t)); |
| 73 | 73 | ||
| 74 | #ifdef SHA1_ASM | ||
| 75 | void sha1_block_data_order(SHA_CTX *ctx, const void *p, size_t num); | 74 | void sha1_block_data_order(SHA_CTX *ctx, const void *p, size_t num); |
| 76 | #endif | 75 | void sha1_block_generic(SHA_CTX *ctx, const void *p, size_t num); |
| 77 | 76 | ||
| 78 | #ifndef SHA1_ASM | 77 | #ifndef HAVE_SHA1_BLOCK_GENERIC |
| 79 | static inline SHA_LONG | 78 | static inline SHA_LONG |
| 80 | Ch(SHA_LONG x, SHA_LONG y, SHA_LONG z) | 79 | Ch(SHA_LONG x, SHA_LONG y, SHA_LONG z) |
| 81 | { | 80 | { |
| @@ -164,8 +163,8 @@ sha1_round4(SHA_LONG *a, SHA_LONG *b, SHA_LONG *c, SHA_LONG *d, SHA_LONG *e, | |||
| 164 | *a = T; | 163 | *a = T; |
| 165 | } | 164 | } |
| 166 | 165 | ||
| 167 | static void | 166 | void |
| 168 | sha1_block_data_order(SHA_CTX *ctx, const void *_in, size_t num) | 167 | sha1_block_generic(SHA_CTX *ctx, const void *_in, size_t num) |
| 169 | { | 168 | { |
| 170 | const uint8_t *in = _in; | 169 | const uint8_t *in = _in; |
| 171 | const SHA_LONG *in32; | 170 | const SHA_LONG *in32; |
| @@ -382,6 +381,14 @@ sha1_block_data_order(SHA_CTX *ctx, const void *_in, size_t num) | |||
| 382 | } | 381 | } |
| 383 | #endif | 382 | #endif |
| 384 | 383 | ||
| 384 | #ifndef HAVE_SHA1_BLOCK_DATA_ORDER | ||
| 385 | void | ||
| 386 | sha1_block_data_order(SHA_CTX *ctx, const void *_in, size_t num) | ||
| 387 | { | ||
| 388 | sha1_block_generic(ctx, _in, num); | ||
| 389 | } | ||
| 390 | #endif | ||
| 391 | |||
| 385 | int | 392 | int |
| 386 | SHA1_Init(SHA_CTX *c) | 393 | SHA1_Init(SHA_CTX *c) |
| 387 | { | 394 | { |
diff --git a/src/lib/libcrypto/sha/sha256.c b/src/lib/libcrypto/sha/sha256.c index ab00c17878..5d002ca62c 100644 --- a/src/lib/libcrypto/sha/sha256.c +++ b/src/lib/libcrypto/sha/sha256.c | |||
| @@ -1,4 +1,4 @@ | |||
| 1 | /* $OpenBSD: sha256.c,v 1.32 2024/06/01 07:36:16 tb Exp $ */ | 1 | /* $OpenBSD: sha256.c,v 1.33 2025/02/14 12:01:58 jsing Exp $ */ |
| 2 | /* ==================================================================== | 2 | /* ==================================================================== |
| 3 | * Copyright (c) 1998-2011 The OpenSSL Project. All rights reserved. | 3 | * Copyright (c) 1998-2011 The OpenSSL Project. All rights reserved. |
| 4 | * | 4 | * |
| @@ -68,11 +68,10 @@ | |||
| 68 | /* Ensure that SHA_LONG and uint32_t are equivalent. */ | 68 | /* Ensure that SHA_LONG and uint32_t are equivalent. */ |
| 69 | CTASSERT(sizeof(SHA_LONG) == sizeof(uint32_t)); | 69 | CTASSERT(sizeof(SHA_LONG) == sizeof(uint32_t)); |
| 70 | 70 | ||
| 71 | #ifdef SHA256_ASM | ||
| 72 | void sha256_block_data_order(SHA256_CTX *ctx, const void *_in, size_t num); | 71 | void sha256_block_data_order(SHA256_CTX *ctx, const void *_in, size_t num); |
| 73 | #endif | 72 | void sha256_block_generic(SHA256_CTX *ctx, const void *_in, size_t num); |
| 74 | 73 | ||
| 75 | #ifndef SHA256_ASM | 74 | #ifndef HAVE_SHA256_BLOCK_GENERIC |
| 76 | static const SHA_LONG K256[64] = { | 75 | static const SHA_LONG K256[64] = { |
| 77 | 0x428a2f98UL, 0x71374491UL, 0xb5c0fbcfUL, 0xe9b5dba5UL, | 76 | 0x428a2f98UL, 0x71374491UL, 0xb5c0fbcfUL, 0xe9b5dba5UL, |
| 78 | 0x3956c25bUL, 0x59f111f1UL, 0x923f82a4UL, 0xab1c5ed5UL, | 77 | 0x3956c25bUL, 0x59f111f1UL, 0x923f82a4UL, 0xab1c5ed5UL, |
| @@ -155,8 +154,8 @@ sha256_round(SHA_LONG *a, SHA_LONG *b, SHA_LONG *c, SHA_LONG *d, SHA_LONG *e, | |||
| 155 | *a = T1 + T2; | 154 | *a = T1 + T2; |
| 156 | } | 155 | } |
| 157 | 156 | ||
| 158 | static void | 157 | void |
| 159 | sha256_block_data_order(SHA256_CTX *ctx, const void *_in, size_t num) | 158 | sha256_block_generic(SHA256_CTX *ctx, const void *_in, size_t num) |
| 160 | { | 159 | { |
| 161 | const uint8_t *in = _in; | 160 | const uint8_t *in = _in; |
| 162 | const SHA_LONG *in32; | 161 | const SHA_LONG *in32; |
| @@ -277,7 +276,15 @@ sha256_block_data_order(SHA256_CTX *ctx, const void *_in, size_t num) | |||
| 277 | ctx->h[7] += h; | 276 | ctx->h[7] += h; |
| 278 | } | 277 | } |
| 279 | } | 278 | } |
| 280 | #endif /* SHA256_ASM */ | 279 | #endif |
| 280 | |||
| 281 | #ifndef HAVE_SHA256_BLOCK_DATA_ORDER | ||
| 282 | void | ||
| 283 | sha256_block_data_order(SHA256_CTX *ctx, const void *_in, size_t num) | ||
| 284 | { | ||
| 285 | sha256_block_generic(ctx, _in, num); | ||
| 286 | } | ||
| 287 | #endif | ||
| 281 | 288 | ||
| 282 | int | 289 | int |
| 283 | SHA224_Init(SHA256_CTX *c) | 290 | SHA224_Init(SHA256_CTX *c) |
diff --git a/src/lib/libcrypto/sha/sha512.c b/src/lib/libcrypto/sha/sha512.c index 7a2a40d3df..43d25eb119 100644 --- a/src/lib/libcrypto/sha/sha512.c +++ b/src/lib/libcrypto/sha/sha512.c | |||
| @@ -1,4 +1,4 @@ | |||
| 1 | /* $OpenBSD: sha512.c,v 1.42 2024/06/01 07:36:16 tb Exp $ */ | 1 | /* $OpenBSD: sha512.c,v 1.43 2025/02/14 12:01:58 jsing Exp $ */ |
| 2 | /* ==================================================================== | 2 | /* ==================================================================== |
| 3 | * Copyright (c) 1998-2011 The OpenSSL Project. All rights reserved. | 3 | * Copyright (c) 1998-2011 The OpenSSL Project. All rights reserved. |
| 4 | * | 4 | * |
| @@ -69,11 +69,10 @@ | |||
| 69 | /* Ensure that SHA_LONG64 and uint64_t are equivalent. */ | 69 | /* Ensure that SHA_LONG64 and uint64_t are equivalent. */ |
| 70 | CTASSERT(sizeof(SHA_LONG64) == sizeof(uint64_t)); | 70 | CTASSERT(sizeof(SHA_LONG64) == sizeof(uint64_t)); |
| 71 | 71 | ||
| 72 | #ifdef SHA512_ASM | ||
| 73 | void sha512_block_data_order(SHA512_CTX *ctx, const void *in, size_t num); | 72 | void sha512_block_data_order(SHA512_CTX *ctx, const void *in, size_t num); |
| 74 | #endif | 73 | void sha512_block_generic(SHA512_CTX *ctx, const void *in, size_t num); |
| 75 | 74 | ||
| 76 | #ifndef SHA512_ASM | 75 | #ifndef HAVE_SHA512_BLOCK_GENERIC |
| 77 | static const SHA_LONG64 K512[80] = { | 76 | static const SHA_LONG64 K512[80] = { |
| 78 | U64(0x428a2f98d728ae22), U64(0x7137449123ef65cd), | 77 | U64(0x428a2f98d728ae22), U64(0x7137449123ef65cd), |
| 79 | U64(0xb5c0fbcfec4d3b2f), U64(0xe9b5dba58189dbbc), | 78 | U64(0xb5c0fbcfec4d3b2f), U64(0xe9b5dba58189dbbc), |
| @@ -182,8 +181,8 @@ sha512_round(SHA_LONG64 *a, SHA_LONG64 *b, SHA_LONG64 *c, SHA_LONG64 *d, | |||
| 182 | *a = T1 + T2; | 181 | *a = T1 + T2; |
| 183 | } | 182 | } |
| 184 | 183 | ||
| 185 | static void | 184 | void |
| 186 | sha512_block_data_order(SHA512_CTX *ctx, const void *_in, size_t num) | 185 | sha512_block_generic(SHA512_CTX *ctx, const void *_in, size_t num) |
| 187 | { | 186 | { |
| 188 | const uint8_t *in = _in; | 187 | const uint8_t *in = _in; |
| 189 | const SHA_LONG64 *in64; | 188 | const SHA_LONG64 *in64; |
| @@ -304,8 +303,15 @@ sha512_block_data_order(SHA512_CTX *ctx, const void *_in, size_t num) | |||
| 304 | ctx->h[7] += h; | 303 | ctx->h[7] += h; |
| 305 | } | 304 | } |
| 306 | } | 305 | } |
| 306 | #endif | ||
| 307 | 307 | ||
| 308 | #endif /* SHA512_ASM */ | 308 | #ifndef HAVE_SHA512_BLOCK_DATA_ORDER |
| 309 | void | ||
| 310 | sha512_block_data_order(SHA512_CTX *ctx, const void *_in, size_t num) | ||
| 311 | { | ||
| 312 | sha512_block_generic(ctx, _in, num); | ||
| 313 | } | ||
| 314 | #endif | ||
| 309 | 315 | ||
| 310 | int | 316 | int |
| 311 | SHA384_Init(SHA512_CTX *c) | 317 | SHA384_Init(SHA512_CTX *c) |
