summaryrefslogtreecommitdiff
path: root/src/lib
diff options
context:
space:
mode:
authorjsing <>2026-01-17 16:18:32 +0000
committerjsing <>2026-01-17 16:18:32 +0000
commit03fc8f9b9ecbb65326348dd8eccc5d22344abefe (patch)
tree304533a0e18e53486c5458ff9c69099a939484be /src/lib
parentfdea186c25361674646de3b0a16b3ad37c8f0ec3 (diff)
downloadopenbsd-03fc8f9b9ecbb65326348dd8eccc5d22344abefe.tar.gz
openbsd-03fc8f9b9ecbb65326348dd8eccc5d22344abefe.tar.bz2
openbsd-03fc8f9b9ecbb65326348dd8eccc5d22344abefe.zip
Provide LIBRESSL_USE_.*_ASSEMBLY defines.
Make life easier for portable by providing LIBRESSL_USE_.*_ASSEMBLY defines, which enable/disable assembly for a specific algorithm. This means that selected platforms can include the assembly files and specify a define, rather than having to try to patch the crypto_arch.h headers. Discussed with tb@
Diffstat (limited to 'src/lib')
-rw-r--r--src/lib/libcrypto/arch/aarch64/Makefile.inc3
-rw-r--r--src/lib/libcrypto/arch/aarch64/crypto_arch.h4
-rw-r--r--src/lib/libcrypto/arch/alpha/Makefile.inc7
-rw-r--r--src/lib/libcrypto/arch/alpha/crypto_arch.h6
-rw-r--r--src/lib/libcrypto/arch/amd64/Makefile.inc9
-rw-r--r--src/lib/libcrypto/arch/amd64/crypto_arch.h15
-rw-r--r--src/lib/libcrypto/arch/hppa/Makefile.inc9
-rw-r--r--src/lib/libcrypto/arch/hppa/crypto_arch.h9
-rw-r--r--src/lib/libcrypto/arch/i386/Makefile.inc8
-rw-r--r--src/lib/libcrypto/arch/i386/crypto_arch.h15
-rw-r--r--src/lib/libcrypto/arch/mips64/Makefile.inc7
-rw-r--r--src/lib/libcrypto/arch/mips64/crypto_arch.h8
-rw-r--r--src/lib/libcrypto/arch/powerpc/Makefile.inc7
-rw-r--r--src/lib/libcrypto/arch/powerpc/crypto_arch.h5
-rw-r--r--src/lib/libcrypto/arch/powerpc64/Makefile.inc5
-rw-r--r--src/lib/libcrypto/arch/sparc64/Makefile.inc8
-rw-r--r--src/lib/libcrypto/arch/sparc64/crypto_arch.h10
17 files changed, 104 insertions, 31 deletions
diff --git a/src/lib/libcrypto/arch/aarch64/Makefile.inc b/src/lib/libcrypto/arch/aarch64/Makefile.inc
index d1f22d87cd..596e98fe69 100644
--- a/src/lib/libcrypto/arch/aarch64/Makefile.inc
+++ b/src/lib/libcrypto/arch/aarch64/Makefile.inc
@@ -1,9 +1,10 @@
1# $OpenBSD: Makefile.inc,v 1.17 2025/06/28 12:51:08 jsing Exp $ 1# $OpenBSD: Makefile.inc,v 1.18 2026/01/17 16:18:31 jsing Exp $
2 2
3# aarch64-specific libcrypto build rules 3# aarch64-specific libcrypto build rules
4 4
5SRCS += crypto_cpu_caps.c 5SRCS += crypto_cpu_caps.c
6 6
7CFLAGS+= -DLIBRESSL_USE_SHA_ASSEMBLY
7SRCS += sha1_aarch64.c 8SRCS += sha1_aarch64.c
8SRCS += sha1_aarch64_ce.S 9SRCS += sha1_aarch64_ce.S
9SRCS += sha256_aarch64.c 10SRCS += sha256_aarch64.c
diff --git a/src/lib/libcrypto/arch/aarch64/crypto_arch.h b/src/lib/libcrypto/arch/aarch64/crypto_arch.h
index 51c8d79e2d..8b5d83311e 100644
--- a/src/lib/libcrypto/arch/aarch64/crypto_arch.h
+++ b/src/lib/libcrypto/arch/aarch64/crypto_arch.h
@@ -1,4 +1,4 @@
1/* $OpenBSD: crypto_arch.h,v 1.5 2025/06/28 12:51:08 jsing Exp $ */ 1/* $OpenBSD: crypto_arch.h,v 1.6 2026/01/17 16:18:31 jsing Exp $ */
2/* 2/*
3 * Copyright (c) 2024 Joel Sing <jsing@openbsd.org> 3 * Copyright (c) 2024 Joel Sing <jsing@openbsd.org>
4 * 4 *
@@ -35,9 +35,11 @@ extern uint64_t crypto_cpu_caps_aarch64;
35 35
36#ifndef OPENSSL_NO_ASM 36#ifndef OPENSSL_NO_ASM
37 37
38#ifdef LIBRESSL_USE_SHA_ASSEMBLY
38#define HAVE_SHA1_BLOCK_DATA_ORDER 39#define HAVE_SHA1_BLOCK_DATA_ORDER
39#define HAVE_SHA256_BLOCK_DATA_ORDER 40#define HAVE_SHA256_BLOCK_DATA_ORDER
40#define HAVE_SHA512_BLOCK_DATA_ORDER 41#define HAVE_SHA512_BLOCK_DATA_ORDER
42#endif
41 43
42#endif 44#endif
43 45
diff --git a/src/lib/libcrypto/arch/alpha/Makefile.inc b/src/lib/libcrypto/arch/alpha/Makefile.inc
index d89f32dc9d..b2358a8494 100644
--- a/src/lib/libcrypto/arch/alpha/Makefile.inc
+++ b/src/lib/libcrypto/arch/alpha/Makefile.inc
@@ -1,13 +1,18 @@
1# $OpenBSD: Makefile.inc,v 1.16 2026/01/17 14:30:37 jsing Exp $ 1# $OpenBSD: Makefile.inc,v 1.17 2026/01/17 16:18:31 jsing Exp $
2 2
3# alpha-specific libcrypto build rules 3# alpha-specific libcrypto build rules
4 4
5# bn 5# bn
6CFLAGS+= -DLIBRESSL_USE_BN_ASSEMBLY
6SSLASM+= bn alpha-mont 7SSLASM+= bn alpha-mont
7CFLAGS+= -DOPENSSL_BN_ASM_MONT 8CFLAGS+= -DOPENSSL_BN_ASM_MONT
9
8# modes 10# modes
11CFLAGS+= -DLIBRESSL_USE_GCM_ASSEMBLY
9SSLASM+= modes ghash-alpha 12SSLASM+= modes ghash-alpha
13
10# sha 14# sha
15CFLAGS+= -DLIBRESSL_USE_SHA_ASSEMBLY
11SSLASM+= sha sha1-alpha 16SSLASM+= sha sha1-alpha
12 17
13.for dir f in ${SSLASM} 18.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 8fec3e2855..ba1803ddf8 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.3 2026/01/17 14:30:37 jsing Exp $ */ 1/* $OpenBSD: crypto_arch.h,v 1.4 2026/01/17 16:18:32 jsing Exp $ */
2/* 2/*
3 * Copyright (c) 2024 Joel Sing <jsing@openbsd.org> 3 * Copyright (c) 2024 Joel Sing <jsing@openbsd.org>
4 * 4 *
@@ -20,11 +20,15 @@
20 20
21#ifndef OPENSSL_NO_ASM 21#ifndef OPENSSL_NO_ASM
22 22
23#ifdef LIBRESSL_USE_GCM_ASSEMBLY
23#define HAVE_GCM_GHASH_4BIT 24#define HAVE_GCM_GHASH_4BIT
24#define HAVE_GCM_GMULT_4BIT 25#define HAVE_GCM_GMULT_4BIT
26#endif
25 27
28#ifdef LIBRESSL_USE_SHA_ASSEMBLY
26#define HAVE_SHA1_BLOCK_DATA_ORDER 29#define HAVE_SHA1_BLOCK_DATA_ORDER
27#define HAVE_SHA1_BLOCK_GENERIC 30#define HAVE_SHA1_BLOCK_GENERIC
31#endif
28 32
29#endif 33#endif
30 34
diff --git a/src/lib/libcrypto/arch/amd64/Makefile.inc b/src/lib/libcrypto/arch/amd64/Makefile.inc
index 8f1681322d..ea03944273 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.45 2026/01/17 14:53:09 jsing Exp $ 1# $OpenBSD: Makefile.inc,v 1.46 2026/01/17 16:18:32 jsing Exp $
2 2
3# amd64-specific libcrypto build rules 3# amd64-specific libcrypto build rules
4 4
@@ -8,6 +8,7 @@ EXTRA_PL = ${LCRYPTO_SRC}/perlasm/x86_64-xlate.pl
8SRCS += crypto_cpu_caps.c 8SRCS += crypto_cpu_caps.c
9 9
10# aes 10# aes
11CFLAGS+= -DLIBRESSL_USE_AES_ASSEMBLY
11SSLASM+= aes aes-x86_64 12SSLASM+= aes aes-x86_64
12SSLASM+= aes aesni-x86_64 13SSLASM+= aes aesni-x86_64
13SRCS += aes_amd64.c 14SRCS += aes_amd64.c
@@ -20,6 +21,7 @@ CFLAGS+= -DOPENSSL_BN_ASM_MONT5
20SSLASM+= bn x86_64-mont5 21SSLASM+= bn x86_64-mont5
21 22
22# bn s2n-bignum 23# bn s2n-bignum
24CFLAGS+= -DLIBRESSL_USE_BN_ASSEMBLY
23SRCS += bn_arch.c 25SRCS += bn_arch.c
24SRCS += bignum_add.S 26SRCS += bignum_add.S
25SRCS += bignum_cmadd.S 27SRCS += bignum_cmadd.S
@@ -44,17 +46,20 @@ SRCS += bignum_sub.S
44SRCS += word_clz.S 46SRCS += word_clz.S
45 47
46# md5 48# md5
49CFLAGS+= -DLIBRESSL_USE_MD5_ASSEMBLY
47SRCS+= md5_amd64_generic.S 50SRCS+= md5_amd64_generic.S
48 51
49# modes 52# modes
53CFLAGS+= -DLIBRESSL_USE_GCM_ASSEMBLY
50SSLASM+= modes ghash-x86_64 54SSLASM+= modes ghash-x86_64
51SRCS += gcm128_amd64.c 55SRCS += gcm128_amd64.c
52 56
53# rc4 57# rc4
58CFLAGS+= -DLIBRESSL_USE_RC4_ASSEMBLY
54SSLASM+= rc4 rc4-x86_64 59SSLASM+= rc4 rc4-x86_64
55 60
56# ripemd
57# sha 61# sha
62CFLAGS+= -DLIBRESSL_USE_SHA_ASSEMBLY
58SRCS+= sha1_amd64.c 63SRCS+= sha1_amd64.c
59SRCS+= sha1_amd64_generic.S 64SRCS+= sha1_amd64_generic.S
60SRCS+= sha1_amd64_shani.S 65SRCS+= sha1_amd64_shani.S
diff --git a/src/lib/libcrypto/arch/amd64/crypto_arch.h b/src/lib/libcrypto/arch/amd64/crypto_arch.h
index 411deb0e5d..09f771b6c6 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.17 2026/01/17 14:53:09 jsing Exp $ */ 1/* $OpenBSD: crypto_arch.h,v 1.18 2026/01/17 16:18:32 jsing Exp $ */
2/* 2/*
3 * Copyright (c) 2024 Joel Sing <jsing@openbsd.org> 3 * Copyright (c) 2024 Joel Sing <jsing@openbsd.org>
4 * 4 *
@@ -33,11 +33,11 @@ extern uint64_t crypto_cpu_caps_amd64;
33 33
34#ifndef OPENSSL_NO_ASM 34#ifndef OPENSSL_NO_ASM
35 35
36#ifdef LIBRESSL_USE_AES_ASSEMBLY
36#define HAVE_AES_SET_ENCRYPT_KEY_GENERIC 37#define HAVE_AES_SET_ENCRYPT_KEY_GENERIC
37#define HAVE_AES_SET_DECRYPT_KEY_GENERIC 38#define HAVE_AES_SET_DECRYPT_KEY_GENERIC
38#define HAVE_AES_ENCRYPT_GENERIC 39#define HAVE_AES_ENCRYPT_GENERIC
39#define HAVE_AES_DECRYPT_GENERIC 40#define HAVE_AES_DECRYPT_GENERIC
40
41#define HAVE_AES_SET_ENCRYPT_KEY_INTERNAL 41#define HAVE_AES_SET_ENCRYPT_KEY_INTERNAL
42#define HAVE_AES_SET_DECRYPT_KEY_INTERNAL 42#define HAVE_AES_SET_DECRYPT_KEY_INTERNAL
43#define HAVE_AES_ENCRYPT_INTERNAL 43#define HAVE_AES_ENCRYPT_INTERNAL
@@ -47,24 +47,31 @@ extern uint64_t crypto_cpu_caps_amd64;
47#define HAVE_AES_CTR32_ENCRYPT_INTERNAL 47#define HAVE_AES_CTR32_ENCRYPT_INTERNAL
48#define HAVE_AES_ECB_ENCRYPT_INTERNAL 48#define HAVE_AES_ECB_ENCRYPT_INTERNAL
49#define HAVE_AES_XTS_ENCRYPT_INTERNAL 49#define HAVE_AES_XTS_ENCRYPT_INTERNAL
50#endif
50 51
52#ifdef LIBRESSL_USE_GCM_ASSEMBLY
51#define HAVE_GCM128_INIT 53#define HAVE_GCM128_INIT
52#define HAVE_GCM_GHASH_4BIT 54#define HAVE_GCM_GHASH_4BIT
53#define HAVE_GCM_GMULT_4BIT 55#define HAVE_GCM_GMULT_4BIT
56#endif
54 57
58#ifdef LIBRESSL_USE_MD5_ASSEMBLY
55#define HAVE_MD5_BLOCK_DATA_ORDER 59#define HAVE_MD5_BLOCK_DATA_ORDER
60#endif
56 61
62#ifdef LIBRESSL_USE_RC4_ASSEMBLY
57#define HAVE_RC4_INTERNAL 63#define HAVE_RC4_INTERNAL
58#define HAVE_RC4_SET_KEY_INTERNAL 64#define HAVE_RC4_SET_KEY_INTERNAL
65#endif
59 66
67#ifdef LIBRESSL_USE_SHA_ASSEMBLY
60#define HAVE_SHA1_BLOCK_DATA_ORDER 68#define HAVE_SHA1_BLOCK_DATA_ORDER
61#define HAVE_SHA1_BLOCK_GENERIC 69#define HAVE_SHA1_BLOCK_GENERIC
62
63#define HAVE_SHA256_BLOCK_DATA_ORDER 70#define HAVE_SHA256_BLOCK_DATA_ORDER
64#define HAVE_SHA256_BLOCK_GENERIC 71#define HAVE_SHA256_BLOCK_GENERIC
65
66#define HAVE_SHA512_BLOCK_DATA_ORDER 72#define HAVE_SHA512_BLOCK_DATA_ORDER
67#define HAVE_SHA512_BLOCK_GENERIC 73#define HAVE_SHA512_BLOCK_GENERIC
74#endif
68 75
69#endif 76#endif
70 77
diff --git a/src/lib/libcrypto/arch/hppa/Makefile.inc b/src/lib/libcrypto/arch/hppa/Makefile.inc
index 4244c20fef..c18e68d21c 100644
--- a/src/lib/libcrypto/arch/hppa/Makefile.inc
+++ b/src/lib/libcrypto/arch/hppa/Makefile.inc
@@ -1,15 +1,22 @@
1# $OpenBSD: Makefile.inc,v 1.29 2026/01/17 14:30:37 jsing Exp $ 1# $OpenBSD: Makefile.inc,v 1.30 2026/01/17 16:18:32 jsing Exp $
2 2
3# hppa-specific libcrypto build rules 3# hppa-specific libcrypto build rules
4 4
5# aes 5# aes
6CFLAGS+= -DLIBRESSL_USE_AES_ASSEMBLY
6SSLASM+= aes aes-parisc aes-parisc 7SSLASM+= aes aes-parisc aes-parisc
8
7# bn 9# bn
10CFLAGS+= -DLIBRESSL_USE_BN_ASSEMBLY
8SSLASM+= bn parisc-mont parisc-mont 11SSLASM+= bn parisc-mont parisc-mont
9CFLAGS+= -DOPENSSL_BN_ASM_MONT 12CFLAGS+= -DOPENSSL_BN_ASM_MONT
13
10# modes 14# modes
15CFLAGS+= -DLIBRESSL_USE_GCM_ASSEMBLY
11SSLASM+= modes ghash-parisc ghash-parisc 16SSLASM+= modes ghash-parisc ghash-parisc
17
12# sha 18# sha
19CFLAGS+= -DLIBRESSL_USE_SHA_ASSEMBLY
13SSLASM+= sha sha1-parisc sha1-parisc 20SSLASM+= sha sha1-parisc sha1-parisc
14SSLASM+= sha sha512-parisc sha256-parisc 21SSLASM+= sha sha512-parisc sha256-parisc
15 22
diff --git a/src/lib/libcrypto/arch/hppa/crypto_arch.h b/src/lib/libcrypto/arch/hppa/crypto_arch.h
index 80260c93e7..f1e7d2dcbf 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.3 2026/01/17 14:30:37 jsing Exp $ */ 1/* $OpenBSD: crypto_arch.h,v 1.4 2026/01/17 16:18:32 jsing Exp $ */
2/* 2/*
3 * Copyright (c) 2024 Joel Sing <jsing@openbsd.org> 3 * Copyright (c) 2024 Joel Sing <jsing@openbsd.org>
4 * 4 *
@@ -20,17 +20,22 @@
20 20
21#ifndef OPENSSL_NO_ASM 21#ifndef OPENSSL_NO_ASM
22 22
23#ifdef LIBRESSL_USE_AES_ASSEMBLY
23#define HAVE_AES_ENCRYPT_INTERNAL 24#define HAVE_AES_ENCRYPT_INTERNAL
24#define HAVE_AES_DECRYPT_INTERNAL 25#define HAVE_AES_DECRYPT_INTERNAL
26#endif
25 27
28#ifdef LIBRESSL_USE_GCM_ASSEMBLY
26#define HAVE_GCM_GHASH_4BIT 29#define HAVE_GCM_GHASH_4BIT
27#define HAVE_GCM_GMULT_4BIT 30#define HAVE_GCM_GMULT_4BIT
31#endif
28 32
33#ifdef LIBRESSL_USE_SHA_ASSEMBLY
29#define HAVE_SHA1_BLOCK_DATA_ORDER 34#define HAVE_SHA1_BLOCK_DATA_ORDER
30#define HAVE_SHA1_BLOCK_GENERIC 35#define HAVE_SHA1_BLOCK_GENERIC
31
32#define HAVE_SHA256_BLOCK_DATA_ORDER 36#define HAVE_SHA256_BLOCK_DATA_ORDER
33#define HAVE_SHA256_BLOCK_GENERIC 37#define HAVE_SHA256_BLOCK_GENERIC
38#endif
34 39
35#endif 40#endif
36 41
diff --git a/src/lib/libcrypto/arch/i386/Makefile.inc b/src/lib/libcrypto/arch/i386/Makefile.inc
index 26c3bc4568..a81b18880d 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.34 2026/01/17 14:53:09 jsing Exp $ 1# $OpenBSD: Makefile.inc,v 1.35 2026/01/17 16:18:32 jsing Exp $
2 2
3# i386-specific libcrypto build rules 3# i386-specific libcrypto build rules
4 4
@@ -8,27 +8,33 @@ EXTRA_PL = ${LCRYPTO_SRC}/perlasm/x86gas.pl ${LCRYPTO_SRC}/perlasm/x86asm.pl
8SRCS += crypto_cpu_caps.c 8SRCS += crypto_cpu_caps.c
9 9
10# aes 10# aes
11CFLAGS+= -DLIBRESSL_USE_AES_ASSEMBLY
11SSLASM+= aes aes-586 12SSLASM+= aes aes-586
12SSLASM+= aes aesni-x86 13SSLASM+= aes aesni-x86
13SRCS += aes_i386.c 14SRCS += aes_i386.c
14 15
15# bn 16# bn
17CFLAGS+= -DLIBRESSL_USE_BN_ASSEMBLY
16SSLASM+= bn bn-586 18SSLASM+= bn bn-586
17SSLASM+= bn co-586 19SSLASM+= bn co-586
18CFLAGS+= -DOPENSSL_BN_ASM_MONT 20CFLAGS+= -DOPENSSL_BN_ASM_MONT
19SSLASM+= bn x86-mont 21SSLASM+= bn x86-mont
20 22
21# md5 23# md5
24CFLAGS+= -DLIBRESSL_USE_MD5_ASSEMBLY
22SSLASM+= md5 md5-586 25SSLASM+= md5 md5-586
23 26
24# modes 27# modes
28CFLAGS+= -DLIBRESSL_USE_GCM_ASSEMBLY
25SSLASM+= modes ghash-x86 29SSLASM+= modes ghash-x86
26SRCS += gcm128_i386.c 30SRCS += gcm128_i386.c
27 31
28# rc4 32# rc4
33CFLAGS+= -DLIBRESSL_USE_RC4_ASSEMBLY
29SSLASM+= rc4 rc4-586 34SSLASM+= rc4 rc4-586
30 35
31# sha 36# sha
37CFLAGS+= -DLIBRESSL_USE_SHA_ASSEMBLY
32SSLASM+= sha sha1-586 38SSLASM+= sha sha1-586
33SSLASM+= sha sha256-586 39SSLASM+= sha sha256-586
34SSLASM+= sha sha512-586 40SSLASM+= sha sha512-586
diff --git a/src/lib/libcrypto/arch/i386/crypto_arch.h b/src/lib/libcrypto/arch/i386/crypto_arch.h
index ff14881f36..dc3c591b0d 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.16 2026/01/17 14:53:09 jsing Exp $ */ 1/* $OpenBSD: crypto_arch.h,v 1.17 2026/01/17 16:18:32 jsing Exp $ */
2/* 2/*
3 * Copyright (c) 2024 Joel Sing <jsing@openbsd.org> 3 * Copyright (c) 2024 Joel Sing <jsing@openbsd.org>
4 * 4 *
@@ -33,11 +33,11 @@ extern uint64_t crypto_cpu_caps_i386;
33 33
34#ifndef OPENSSL_NO_ASM 34#ifndef OPENSSL_NO_ASM
35 35
36#ifdef LIBRESSL_USE_AES_ASSEMBLY
36#define HAVE_AES_SET_ENCRYPT_KEY_GENERIC 37#define HAVE_AES_SET_ENCRYPT_KEY_GENERIC
37#define HAVE_AES_SET_DECRYPT_KEY_GENERIC 38#define HAVE_AES_SET_DECRYPT_KEY_GENERIC
38#define HAVE_AES_ENCRYPT_GENERIC 39#define HAVE_AES_ENCRYPT_GENERIC
39#define HAVE_AES_DECRYPT_GENERIC 40#define HAVE_AES_DECRYPT_GENERIC
40
41#define HAVE_AES_SET_ENCRYPT_KEY_INTERNAL 41#define HAVE_AES_SET_ENCRYPT_KEY_INTERNAL
42#define HAVE_AES_SET_DECRYPT_KEY_INTERNAL 42#define HAVE_AES_SET_DECRYPT_KEY_INTERNAL
43#define HAVE_AES_ENCRYPT_INTERNAL 43#define HAVE_AES_ENCRYPT_INTERNAL
@@ -47,24 +47,31 @@ extern uint64_t crypto_cpu_caps_i386;
47#define HAVE_AES_CTR32_ENCRYPT_INTERNAL 47#define HAVE_AES_CTR32_ENCRYPT_INTERNAL
48#define HAVE_AES_ECB_ENCRYPT_INTERNAL 48#define HAVE_AES_ECB_ENCRYPT_INTERNAL
49#define HAVE_AES_XTS_ENCRYPT_INTERNAL 49#define HAVE_AES_XTS_ENCRYPT_INTERNAL
50#endif
50 51
52#ifdef LIBRESSL_USE_GCM_ASSEMBLY
51#define HAVE_GCM128_INIT 53#define HAVE_GCM128_INIT
52#define HAVE_GCM_GHASH_4BIT 54#define HAVE_GCM_GHASH_4BIT
53#define HAVE_GCM_GMULT_4BIT 55#define HAVE_GCM_GMULT_4BIT
56#endif
54 57
58#ifdef LIBRESSL_USE_MD5_ASSEMBLY
55#define HAVE_MD5_BLOCK_DATA_ORDER 59#define HAVE_MD5_BLOCK_DATA_ORDER
60#endif
56 61
62#ifdef LIBRESSL_USE_RC4_ASSEMBLY
57#define HAVE_RC4_INTERNAL 63#define HAVE_RC4_INTERNAL
58#define HAVE_RC4_SET_KEY_INTERNAL 64#define HAVE_RC4_SET_KEY_INTERNAL
65#endif
59 66
67#ifdef LIBRESSL_USE_SHA_ASSEMBLY
60#define HAVE_SHA1_BLOCK_DATA_ORDER 68#define HAVE_SHA1_BLOCK_DATA_ORDER
61#define HAVE_SHA1_BLOCK_GENERIC 69#define HAVE_SHA1_BLOCK_GENERIC
62
63#define HAVE_SHA256_BLOCK_DATA_ORDER 70#define HAVE_SHA256_BLOCK_DATA_ORDER
64#define HAVE_SHA256_BLOCK_GENERIC 71#define HAVE_SHA256_BLOCK_GENERIC
65
66#define HAVE_SHA512_BLOCK_DATA_ORDER 72#define HAVE_SHA512_BLOCK_DATA_ORDER
67#define HAVE_SHA512_BLOCK_GENERIC 73#define HAVE_SHA512_BLOCK_GENERIC
74#endif
68 75
69#endif 76#endif
70 77
diff --git a/src/lib/libcrypto/arch/mips64/Makefile.inc b/src/lib/libcrypto/arch/mips64/Makefile.inc
index 27de78bb50..f82d0dc59a 100644
--- a/src/lib/libcrypto/arch/mips64/Makefile.inc
+++ b/src/lib/libcrypto/arch/mips64/Makefile.inc
@@ -1,14 +1,19 @@
1# $OpenBSD: Makefile.inc,v 1.20 2026/01/17 13:55:30 jsing Exp $ 1# $OpenBSD: Makefile.inc,v 1.21 2026/01/17 16:18:32 jsing Exp $
2 2
3# mips64-specific libcrypto build rules 3# mips64-specific libcrypto build rules
4 4
5# aes 5# aes
6CFLAGS+= -DLIBRESSL_USE_AES_ASSEMBLY
6SSLASM+= aes aes-mips aes-mips 7SSLASM+= aes aes-mips aes-mips
8
7# bn 9# bn
10CFLAGS+= -DLIBRESSL_USE_BN_ASSEMBLY
8SSLASM+= bn mips bn-mips 11SSLASM+= bn mips bn-mips
9SSLASM+= bn mips-mont mips-mont 12SSLASM+= bn mips-mont mips-mont
10CFLAGS+= -DOPENSSL_BN_ASM_MONT 13CFLAGS+= -DOPENSSL_BN_ASM_MONT
14
11# sha 15# sha
16CFLAGS+= -DLIBRESSL_USE_SHA_ASSEMBLY
12SSLASM+= sha sha1-mips sha1-mips 17SSLASM+= sha sha1-mips sha1-mips
13SSLASM+= sha sha512-mips sha256-mips 18SSLASM+= sha sha512-mips sha256-mips
14SSLASM+= sha sha512-mips sha512-mips 19SSLASM+= sha sha512-mips sha512-mips
diff --git a/src/lib/libcrypto/arch/mips64/crypto_arch.h b/src/lib/libcrypto/arch/mips64/crypto_arch.h
index 07d7829fe3..156311837f 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.2 2025/02/14 12:01:58 jsing Exp $ */ 1/* $OpenBSD: crypto_arch.h,v 1.3 2026/01/17 16:18:32 jsing Exp $ */
2/* 2/*
3 * Copyright (c) 2024 Joel Sing <jsing@openbsd.org> 3 * Copyright (c) 2024 Joel Sing <jsing@openbsd.org>
4 * 4 *
@@ -20,19 +20,21 @@
20 20
21#ifndef OPENSSL_NO_ASM 21#ifndef OPENSSL_NO_ASM
22 22
23#ifdef LIBRESSL_USE_AES_ASSEMBLY
23#define HAVE_AES_SET_ENCRYPT_KEY_INTERNAL 24#define HAVE_AES_SET_ENCRYPT_KEY_INTERNAL
24#define HAVE_AES_SET_DECRYPT_KEY_INTERNAL 25#define HAVE_AES_SET_DECRYPT_KEY_INTERNAL
25#define HAVE_AES_ENCRYPT_INTERNAL 26#define HAVE_AES_ENCRYPT_INTERNAL
26#define HAVE_AES_DECRYPT_INTERNAL 27#define HAVE_AES_DECRYPT_INTERNAL
28#endif
27 29
30#ifdef LIBRESSL_USE_SHA_ASSEMBLY
28#define HAVE_SHA1_BLOCK_DATA_ORDER 31#define HAVE_SHA1_BLOCK_DATA_ORDER
29#define HAVE_SHA1_BLOCK_GENERIC 32#define HAVE_SHA1_BLOCK_GENERIC
30
31#define HAVE_SHA256_BLOCK_DATA_ORDER 33#define HAVE_SHA256_BLOCK_DATA_ORDER
32#define HAVE_SHA256_BLOCK_GENERIC 34#define HAVE_SHA256_BLOCK_GENERIC
33
34#define HAVE_SHA512_BLOCK_DATA_ORDER 35#define HAVE_SHA512_BLOCK_DATA_ORDER
35#define HAVE_SHA512_BLOCK_GENERIC 36#define HAVE_SHA512_BLOCK_GENERIC
37#endif
36 38
37#endif 39#endif
38 40
diff --git a/src/lib/libcrypto/arch/powerpc/Makefile.inc b/src/lib/libcrypto/arch/powerpc/Makefile.inc
index c37d88d779..c62c90f753 100644
--- a/src/lib/libcrypto/arch/powerpc/Makefile.inc
+++ b/src/lib/libcrypto/arch/powerpc/Makefile.inc
@@ -1,14 +1,19 @@
1# $OpenBSD: Makefile.inc,v 1.15 2026/01/17 13:55:31 jsing Exp $ 1# $OpenBSD: Makefile.inc,v 1.16 2026/01/17 16:18:32 jsing Exp $
2 2
3# powerpc-specific libcrypto build rules 3# powerpc-specific libcrypto build rules
4 4
5# aes
5# slower than C code 6# slower than C code
6#SSLASM+= aes aes-ppc aes-ppc 7#SSLASM+= aes aes-ppc aes-ppc
8
7# bn 9# bn
10CFLAGS+= -DLIBRESSL_USE_BN_ASSEMBLY
8SSLASM+= bn ppc bn-ppc 11SSLASM+= bn ppc bn-ppc
9SSLASM+= bn ppc-mont ppc-mont 12SSLASM+= bn ppc-mont ppc-mont
10CFLAGS+= -DOPENSSL_BN_ASM_MONT 13CFLAGS+= -DOPENSSL_BN_ASM_MONT
14
11# sha 15# sha
16CFLAGS+= -DLIBRESSL_USE_SHA_ASSEMBLY
12SSLASM+= sha sha1-ppc sha1-ppc 17SSLASM+= sha sha1-ppc sha1-ppc
13SSLASM+= sha sha512-ppc sha256-ppc 18SSLASM+= sha sha512-ppc sha256-ppc
14 19
diff --git a/src/lib/libcrypto/arch/powerpc/crypto_arch.h b/src/lib/libcrypto/arch/powerpc/crypto_arch.h
index d2730af0fb..63aa840ae8 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.2 2025/02/14 12:01:58 jsing Exp $ */ 1/* $OpenBSD: crypto_arch.h,v 1.3 2026/01/17 16:18:32 jsing Exp $ */
2/* 2/*
3 * Copyright (c) 2024 Joel Sing <jsing@openbsd.org> 3 * Copyright (c) 2024 Joel Sing <jsing@openbsd.org>
4 * 4 *
@@ -20,11 +20,12 @@
20 20
21#ifndef OPENSSL_NO_ASM 21#ifndef OPENSSL_NO_ASM
22 22
23#ifdef LIBRESSL_USE_SHA_ASSEMBLY
23#define HAVE_SHA1_BLOCK_DATA_ORDER 24#define HAVE_SHA1_BLOCK_DATA_ORDER
24#define HAVE_SHA1_BLOCK_GENERIC 25#define HAVE_SHA1_BLOCK_GENERIC
25
26#define HAVE_SHA256_BLOCK_DATA_ORDER 26#define HAVE_SHA256_BLOCK_DATA_ORDER
27#define HAVE_SHA256_BLOCK_GENERIC 27#define HAVE_SHA256_BLOCK_GENERIC
28#endif
28 29
29#endif 30#endif
30 31
diff --git a/src/lib/libcrypto/arch/powerpc64/Makefile.inc b/src/lib/libcrypto/arch/powerpc64/Makefile.inc
index a70a5b2057..4a72726eab 100644
--- a/src/lib/libcrypto/arch/powerpc64/Makefile.inc
+++ b/src/lib/libcrypto/arch/powerpc64/Makefile.inc
@@ -1,13 +1,16 @@
1# $OpenBSD: Makefile.inc,v 1.17 2026/01/17 13:55:31 jsing Exp $ 1# $OpenBSD: Makefile.inc,v 1.18 2026/01/17 16:18:32 jsing Exp $
2 2
3# powerpc-specific libcrypto build rules 3# powerpc-specific libcrypto build rules
4 4
5# aes
5# slower than C code 6# slower than C code
6#SSLASM+= aes aes-ppc aes-ppc 7#SSLASM+= aes aes-ppc aes-ppc
8
7# bn 9# bn
8#SSLASM+= bn ppc bn-ppc 10#SSLASM+= bn ppc bn-ppc
9#SSLASM+= bn ppc-mont ppc-mont 11#SSLASM+= bn ppc-mont ppc-mont
10#CFLAGS+= -DOPENSSL_BN_ASM_MONT 12#CFLAGS+= -DOPENSSL_BN_ASM_MONT
13
11# sha 14# sha
12#SSLASM+= sha sha1-ppc sha1-ppc 15#SSLASM+= sha sha1-ppc sha1-ppc
13#SSLASM+= sha sha512-ppc sha256-ppc 16#SSLASM+= sha sha512-ppc sha256-ppc
diff --git a/src/lib/libcrypto/arch/sparc64/Makefile.inc b/src/lib/libcrypto/arch/sparc64/Makefile.inc
index 2343b3b3e2..3a83ac6282 100644
--- a/src/lib/libcrypto/arch/sparc64/Makefile.inc
+++ b/src/lib/libcrypto/arch/sparc64/Makefile.inc
@@ -1,13 +1,17 @@
1# $OpenBSD: Makefile.inc,v 1.23 2026/01/17 14:30:37 jsing Exp $ 1# $OpenBSD: Makefile.inc,v 1.24 2026/01/17 16:18:32 jsing Exp $
2 2
3# sparc64-specific libcrypto build rules 3# sparc64-specific libcrypto build rules
4 4
5# aes 5# aes
6CFLAGS+= -DLIBRESSL_USE_AES_ASSEMBLY
6SSLASM+= aes aes-sparcv9 aes-sparcv9 7SSLASM+= aes aes-sparcv9 aes-sparcv9
7# bn 8
8# modes 9# modes
10CFLAGS+= -DLIBRESSL_USE_GCM_ASSEMBLY
9SSLASM+= modes ghash-sparcv9 ghash-sparcv9 11SSLASM+= modes ghash-sparcv9 ghash-sparcv9
12
10# sha 13# sha
14CFLAGS+= -DLIBRESSL_USE_SHA_ASSEMBLY
11SSLASM+= sha sha1-sparcv9 sha1-sparcv9 15SSLASM+= sha sha1-sparcv9 sha1-sparcv9
12SSLASM+= sha sha512-sparcv9 sha256-sparcv9 16SSLASM+= sha sha512-sparcv9 sha256-sparcv9
13SSLASM+= sha sha512-sparcv9 sha512-sparcv9 17SSLASM+= sha sha512-sparcv9 sha512-sparcv9
diff --git a/src/lib/libcrypto/arch/sparc64/crypto_arch.h b/src/lib/libcrypto/arch/sparc64/crypto_arch.h
index 405f1c3657..1f160b625c 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.3 2026/01/17 14:30:37 jsing Exp $ */ 1/* $OpenBSD: crypto_arch.h,v 1.4 2026/01/17 16:18:32 jsing Exp $ */
2/* 2/*
3 * Copyright (c) 2024 Joel Sing <jsing@openbsd.org> 3 * Copyright (c) 2024 Joel Sing <jsing@openbsd.org>
4 * 4 *
@@ -20,20 +20,24 @@
20 20
21#ifndef OPENSSL_NO_ASM 21#ifndef OPENSSL_NO_ASM
22 22
23#ifdef LIBRESSL_USE_AES_ASSEMBLY
23#define HAVE_AES_ENCRYPT_INTERNAL 24#define HAVE_AES_ENCRYPT_INTERNAL
24#define HAVE_AES_DECRYPT_INTERNAL 25#define HAVE_AES_DECRYPT_INTERNAL
26#endif
25 27
28#ifdef LIBRESSL_USE_GCM_ASSEMBLY
26#define HAVE_GCM_GHASH_4BIT 29#define HAVE_GCM_GHASH_4BIT
27#define HAVE_GCM_GMULT_4BIT 30#define HAVE_GCM_GMULT_4BIT
31#endif
28 32
33#ifdef LIBRESSL_USE_SHA_ASSEMBLY
29#define HAVE_SHA1_BLOCK_DATA_ORDER 34#define HAVE_SHA1_BLOCK_DATA_ORDER
30#define HAVE_SHA1_BLOCK_GENERIC 35#define HAVE_SHA1_BLOCK_GENERIC
31
32#define HAVE_SHA256_BLOCK_DATA_ORDER 36#define HAVE_SHA256_BLOCK_DATA_ORDER
33#define HAVE_SHA256_BLOCK_GENERIC 37#define HAVE_SHA256_BLOCK_GENERIC
34
35#define HAVE_SHA512_BLOCK_DATA_ORDER 38#define HAVE_SHA512_BLOCK_DATA_ORDER
36#define HAVE_SHA512_BLOCK_GENERIC 39#define HAVE_SHA512_BLOCK_GENERIC
40#endif
37 41
38#endif 42#endif
39 43