summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorjsing <>2024-08-11 13:02:39 +0000
committerjsing <>2024-08-11 13:02:39 +0000
commitb0dd926baf4bcb43c9b178d7c252489f4434c5a8 (patch)
tree8b15d049ee9ab57d9d0970062ec6f18bd01c002c
parent04ef9499c2bc221c90eb7bd81841524c46ffde33 (diff)
downloadopenbsd-b0dd926baf4bcb43c9b178d7c252489f4434c5a8.tar.gz
openbsd-b0dd926baf4bcb43c9b178d7c252489f4434c5a8.tar.bz2
openbsd-b0dd926baf4bcb43c9b178d7c252489f4434c5a8.zip
Provide and use crypto_arch.h.
Provide a per architecture crypto_arch.h - this will be used in a similar manner to bn_arch.h and will allow for architecture specific #defines and static inline functions. Move the HAVE_AES_* and HAVE_RC4_* defines here. ok tb@
-rw-r--r--src/lib/libcrypto/aes/aes.c4
-rw-r--r--src/lib/libcrypto/aes/aes_core.c3
-rw-r--r--src/lib/libcrypto/arch/aarch64/crypto_arch.h21
-rw-r--r--src/lib/libcrypto/arch/alpha/crypto_arch.h21
-rw-r--r--src/lib/libcrypto/arch/amd64/Makefile.inc9
-rw-r--r--src/lib/libcrypto/arch/amd64/crypto_arch.h34
-rw-r--r--src/lib/libcrypto/arch/arm/Makefile.inc4
-rw-r--r--src/lib/libcrypto/arch/arm/crypto_arch.h30
-rw-r--r--src/lib/libcrypto/arch/hppa/Makefile.inc4
-rw-r--r--src/lib/libcrypto/arch/hppa/crypto_arch.h28
-rw-r--r--src/lib/libcrypto/arch/i386/Makefile.inc9
-rw-r--r--src/lib/libcrypto/arch/i386/crypto_arch.h34
-rw-r--r--src/lib/libcrypto/arch/m88k/crypto_arch.h21
-rw-r--r--src/lib/libcrypto/arch/mips64/Makefile.inc6
-rw-r--r--src/lib/libcrypto/arch/mips64/crypto_arch.h30
-rw-r--r--src/lib/libcrypto/arch/powerpc/crypto_arch.h21
-rw-r--r--src/lib/libcrypto/arch/powerpc64/crypto_arch.h21
-rw-r--r--src/lib/libcrypto/arch/riscv64/crypto_arch.h21
-rw-r--r--src/lib/libcrypto/arch/sh/crypto_arch.h21
-rw-r--r--src/lib/libcrypto/arch/sparc64/Makefile.inc4
-rw-r--r--src/lib/libcrypto/arch/sparc64/crypto_arch.h28
-rw-r--r--src/lib/libcrypto/crypto_internal.h4
-rw-r--r--src/lib/libcrypto/rc4/rc4.c4
23 files changed, 347 insertions, 35 deletions
diff --git a/src/lib/libcrypto/aes/aes.c b/src/lib/libcrypto/aes/aes.c
index 4d040ea5f7..d36a006360 100644
--- a/src/lib/libcrypto/aes/aes.c
+++ b/src/lib/libcrypto/aes/aes.c
@@ -1,4 +1,4 @@
1/* $OpenBSD: aes.c,v 1.3 2024/03/30 05:14:12 joshua Exp $ */ 1/* $OpenBSD: aes.c,v 1.4 2024/08/11 13:02:39 jsing Exp $ */
2/* ==================================================================== 2/* ====================================================================
3 * Copyright (c) 2002-2006 The OpenSSL Project. All rights reserved. 3 * Copyright (c) 2002-2006 The OpenSSL Project. All rights reserved.
4 * 4 *
@@ -55,6 +55,8 @@
55#include <openssl/bio.h> 55#include <openssl/bio.h>
56#include <openssl/modes.h> 56#include <openssl/modes.h>
57 57
58#include "crypto_arch.h"
59
58static const unsigned char aes_wrap_default_iv[] = { 60static const unsigned char aes_wrap_default_iv[] = {
59 0xA6, 0xA6, 0xA6, 0xA6, 0xA6, 0xA6, 0xA6, 0xA6, 61 0xA6, 0xA6, 0xA6, 0xA6, 0xA6, 0xA6, 0xA6, 0xA6,
60}; 62};
diff --git a/src/lib/libcrypto/aes/aes_core.c b/src/lib/libcrypto/aes/aes_core.c
index 335b1dba54..0472d5f4e2 100644
--- a/src/lib/libcrypto/aes/aes_core.c
+++ b/src/lib/libcrypto/aes/aes_core.c
@@ -1,4 +1,4 @@
1/* $OpenBSD: aes_core.c,v 1.23 2024/03/30 05:14:12 joshua Exp $ */ 1/* $OpenBSD: aes_core.c,v 1.24 2024/08/11 13:02:39 jsing Exp $ */
2/** 2/**
3 * rijndael-alg-fst.c 3 * rijndael-alg-fst.c
4 * 4 *
@@ -35,6 +35,7 @@
35#include <openssl/aes.h> 35#include <openssl/aes.h>
36 36
37#include "aes_local.h" 37#include "aes_local.h"
38#include "crypto_arch.h"
38#include "crypto_internal.h" 39#include "crypto_internal.h"
39 40
40/* 41/*
diff --git a/src/lib/libcrypto/arch/aarch64/crypto_arch.h b/src/lib/libcrypto/arch/aarch64/crypto_arch.h
new file mode 100644
index 0000000000..a3dd98d0ce
--- /dev/null
+++ b/src/lib/libcrypto/arch/aarch64/crypto_arch.h
@@ -0,0 +1,21 @@
1/* $OpenBSD: crypto_arch.h,v 1.1 2024/08/11 13:02:39 jsing Exp $ */
2/*
3 * Copyright (c) 2024 Joel Sing <jsing@openbsd.org>
4 *
5 * Permission to use, copy, modify, and distribute this software for any
6 * purpose with or without fee is hereby granted, provided that the above
7 * copyright notice and this permission notice appear in all copies.
8 *
9 * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
10 * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
11 * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
12 * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
13 * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
14 * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
15 * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
16 */
17
18#ifndef HEADER_CRYPTO_ARCH_H
19#define HEADER_CRYPTO_ARCH_H
20
21#endif
diff --git a/src/lib/libcrypto/arch/alpha/crypto_arch.h b/src/lib/libcrypto/arch/alpha/crypto_arch.h
new file mode 100644
index 0000000000..a3dd98d0ce
--- /dev/null
+++ b/src/lib/libcrypto/arch/alpha/crypto_arch.h
@@ -0,0 +1,21 @@
1/* $OpenBSD: crypto_arch.h,v 1.1 2024/08/11 13:02:39 jsing Exp $ */
2/*
3 * Copyright (c) 2024 Joel Sing <jsing@openbsd.org>
4 *
5 * Permission to use, copy, modify, and distribute this software for any
6 * purpose with or without fee is hereby granted, provided that the above
7 * copyright notice and this permission notice appear in all copies.
8 *
9 * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
10 * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
11 * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
12 * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
13 * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
14 * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
15 * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
16 */
17
18#ifndef HEADER_CRYPTO_ARCH_H
19#define HEADER_CRYPTO_ARCH_H
20
21#endif
diff --git a/src/lib/libcrypto/arch/amd64/Makefile.inc b/src/lib/libcrypto/arch/amd64/Makefile.inc
index 0cf212b186..dd136f76a7 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.28 2024/06/04 15:14:45 deraadt Exp $ 1# $OpenBSD: Makefile.inc,v 1.29 2024/08/11 13:02:39 jsing Exp $
2 2
3# amd64-specific libcrypto build rules 3# amd64-specific libcrypto build rules
4 4
@@ -13,11 +13,6 @@ SSLASM+= aes bsaes-x86_64
13CFLAGS+= -DVPAES_ASM 13CFLAGS+= -DVPAES_ASM
14SSLASM+= aes vpaes-x86_64 14SSLASM+= aes vpaes-x86_64
15SSLASM+= aes aesni-x86_64 15SSLASM+= aes aesni-x86_64
16CFLAGS+= -DHAVE_AES_CBC_ENCRYPT_INTERNAL
17CFLAGS+= -DHAVE_AES_SET_ENCRYPT_KEY_INTERNAL
18CFLAGS+= -DHAVE_AES_SET_DECRYPT_KEY_INTERNAL
19CFLAGS+= -DHAVE_AES_ENCRYPT_INTERNAL
20CFLAGS+= -DHAVE_AES_DECRYPT_INTERNAL
21# bn 16# bn
22CFLAGS+= -DOPENSSL_IA32_SSE2 17CFLAGS+= -DOPENSSL_IA32_SSE2
23CFLAGS+= -DRSA_ASM 18CFLAGS+= -DRSA_ASM
@@ -48,8 +43,6 @@ SSLASM+= md5 md5-x86_64
48CFLAGS+= -DGHASH_ASM 43CFLAGS+= -DGHASH_ASM
49SSLASM+= modes ghash-x86_64 44SSLASM+= modes ghash-x86_64
50# rc4 45# rc4
51CFLAGS+= -DHAVE_RC4_INTERNAL
52CFLAGS+= -DHAVE_RC4_SET_KEY_INTERNAL
53SSLASM+= rc4 rc4-x86_64 46SSLASM+= rc4 rc4-x86_64
54# ripemd 47# ripemd
55# sha 48# sha
diff --git a/src/lib/libcrypto/arch/amd64/crypto_arch.h b/src/lib/libcrypto/arch/amd64/crypto_arch.h
new file mode 100644
index 0000000000..8e91c25529
--- /dev/null
+++ b/src/lib/libcrypto/arch/amd64/crypto_arch.h
@@ -0,0 +1,34 @@
1/* $OpenBSD: crypto_arch.h,v 1.1 2024/08/11 13:02:39 jsing Exp $ */
2/*
3 * Copyright (c) 2024 Joel Sing <jsing@openbsd.org>
4 *
5 * Permission to use, copy, modify, and distribute this software for any
6 * purpose with or without fee is hereby granted, provided that the above
7 * copyright notice and this permission notice appear in all copies.
8 *
9 * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
10 * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
11 * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
12 * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
13 * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
14 * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
15 * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
16 */
17
18#ifndef HEADER_CRYPTO_ARCH_H
19#define HEADER_CRYPTO_ARCH_H
20
21#ifndef OPENSSL_NO_ASM
22
23#define HAVE_AES_CBC_ENCRYPT_INTERNAL
24#define HAVE_AES_SET_ENCRYPT_KEY_INTERNAL
25#define HAVE_AES_SET_DECRYPT_KEY_INTERNAL
26#define HAVE_AES_ENCRYPT_INTERNAL
27#define HAVE_AES_DECRYPT_INTERNAL
28
29#define HAVE_RC4_INTERNAL
30#define HAVE_RC4_SET_KEY_INTERNAL
31
32#endif
33
34#endif
diff --git a/src/lib/libcrypto/arch/arm/Makefile.inc b/src/lib/libcrypto/arch/arm/Makefile.inc
index 43c0589eb6..b09b54a564 100644
--- a/src/lib/libcrypto/arch/arm/Makefile.inc
+++ b/src/lib/libcrypto/arch/arm/Makefile.inc
@@ -5,10 +5,6 @@
5# aes 5# aes
6CFLAGS+= -DAES_ASM 6CFLAGS+= -DAES_ASM
7SSLASM+= aes aes-armv4 7SSLASM+= aes aes-armv4
8CFLAGS+= -DHAVE_AES_SET_ENCRYPT_KEY_INTERNAL
9CFLAGS+= -DHAVE_AES_SET_DECRYPT_KEY_INTERNAL
10CFLAGS+= -DHAVE_AES_ENCRYPT_INTERNAL
11CFLAGS+= -DHAVE_AES_DECRYPT_INTERNAL
12# bn 8# bn
13CFLAGS+= -DOPENSSL_BN_ASM_MONT 9CFLAGS+= -DOPENSSL_BN_ASM_MONT
14SSLASM+= bn armv4-mont 10SSLASM+= bn armv4-mont
diff --git a/src/lib/libcrypto/arch/arm/crypto_arch.h b/src/lib/libcrypto/arch/arm/crypto_arch.h
new file mode 100644
index 0000000000..4276dc31ea
--- /dev/null
+++ b/src/lib/libcrypto/arch/arm/crypto_arch.h
@@ -0,0 +1,30 @@
1/* $OpenBSD: crypto_arch.h,v 1.1 2024/08/11 13:02:39 jsing Exp $ */
2/*
3 * Copyright (c) 2024 Joel Sing <jsing@openbsd.org>
4 *
5 * Permission to use, copy, modify, and distribute this software for any
6 * purpose with or without fee is hereby granted, provided that the above
7 * copyright notice and this permission notice appear in all copies.
8 *
9 * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
10 * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
11 * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
12 * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
13 * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
14 * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
15 * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
16 */
17
18#ifndef HEADER_CRYPTO_ARCH_H
19#define HEADER_CRYPTO_ARCH_H
20
21#ifndef OPENSSL_NO_ASM
22
23#define HAVE_AES_SET_ENCRYPT_KEY_INTERNAL
24#define HAVE_AES_SET_DECRYPT_KEY_INTERNAL
25#define HAVE_AES_ENCRYPT_INTERNAL
26#define HAVE_AES_DECRYPT_INTERNAL
27
28#endif
29
30#endif
diff --git a/src/lib/libcrypto/arch/hppa/Makefile.inc b/src/lib/libcrypto/arch/hppa/Makefile.inc
index 9796d3a860..4e2675a600 100644
--- a/src/lib/libcrypto/arch/hppa/Makefile.inc
+++ b/src/lib/libcrypto/arch/hppa/Makefile.inc
@@ -1,12 +1,10 @@
1# $OpenBSD: Makefile.inc,v 1.24 2024/03/29 11:00:57 jsing Exp $ 1# $OpenBSD: Makefile.inc,v 1.25 2024/08/11 13:02:39 jsing Exp $
2 2
3# hppa-specific libcrypto build rules 3# hppa-specific libcrypto build rules
4 4
5# aes 5# aes
6CFLAGS+= -DAES_ASM 6CFLAGS+= -DAES_ASM
7SSLASM+= aes aes-parisc aes-parisc 7SSLASM+= aes aes-parisc aes-parisc
8CFLAGS+= -DHAVE_AES_ENCRYPT_INTERNAL
9CFLAGS+= -DHAVE_AES_DECRYPT_INTERNAL
10# bn 8# bn
11SSLASM+= bn parisc-mont parisc-mont 9SSLASM+= bn parisc-mont parisc-mont
12CFLAGS+= -DOPENSSL_BN_ASM_MONT -DBN_DIV2W 10CFLAGS+= -DOPENSSL_BN_ASM_MONT -DBN_DIV2W
diff --git a/src/lib/libcrypto/arch/hppa/crypto_arch.h b/src/lib/libcrypto/arch/hppa/crypto_arch.h
new file mode 100644
index 0000000000..7f1fc36cac
--- /dev/null
+++ b/src/lib/libcrypto/arch/hppa/crypto_arch.h
@@ -0,0 +1,28 @@
1/* $OpenBSD: crypto_arch.h,v 1.1 2024/08/11 13:02:39 jsing Exp $ */
2/*
3 * Copyright (c) 2024 Joel Sing <jsing@openbsd.org>
4 *
5 * Permission to use, copy, modify, and distribute this software for any
6 * purpose with or without fee is hereby granted, provided that the above
7 * copyright notice and this permission notice appear in all copies.
8 *
9 * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
10 * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
11 * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
12 * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
13 * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
14 * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
15 * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
16 */
17
18#ifndef HEADER_CRYPTO_ARCH_H
19#define HEADER_CRYPTO_ARCH_H
20
21#ifndef OPENSSL_NO_ASM
22
23#define HAVE_AES_ENCRYPT_INTERNAL
24#define HAVE_AES_DECRYPT_INTERNAL
25
26#endif
27
28#endif
diff --git a/src/lib/libcrypto/arch/i386/Makefile.inc b/src/lib/libcrypto/arch/i386/Makefile.inc
index 37f6ba32b9..eeaed44f84 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.24 2024/03/29 11:00:57 jsing Exp $ 1# $OpenBSD: Makefile.inc,v 1.25 2024/08/11 13:02:39 jsing Exp $
2 2
3# i386-specific libcrypto build rules 3# i386-specific libcrypto build rules
4 4
@@ -11,11 +11,6 @@ SSLASM+= aes aes-586
11CFLAGS+= -DVPAES_ASM 11CFLAGS+= -DVPAES_ASM
12SSLASM+= aes vpaes-x86 12SSLASM+= aes vpaes-x86
13SSLASM+= aes aesni-x86 13SSLASM+= aes aesni-x86
14CFLAGS+= -DHAVE_AES_CBC_ENCRYPT_INTERNAL
15CFLAGS+= -DHAVE_AES_SET_ENCRYPT_KEY_INTERNAL
16CFLAGS+= -DHAVE_AES_SET_DECRYPT_KEY_INTERNAL
17CFLAGS+= -DHAVE_AES_ENCRYPT_INTERNAL
18CFLAGS+= -DHAVE_AES_DECRYPT_INTERNAL
19# bn 14# bn
20CFLAGS+= -DOPENSSL_IA32_SSE2 15CFLAGS+= -DOPENSSL_IA32_SSE2
21SSLASM+= bn bn-586 16SSLASM+= bn bn-586
@@ -29,8 +24,6 @@ SSLASM+= md5 md5-586
29CFLAGS+= -DGHASH_ASM 24CFLAGS+= -DGHASH_ASM
30SSLASM+= modes ghash-x86 25SSLASM+= modes ghash-x86
31# rc4 26# rc4
32CFLAGS+= -DHAVE_RC4_INTERNAL
33CFLAGS+= -DHAVE_RC4_SET_KEY_INTERNAL
34SSLASM+= rc4 rc4-586 27SSLASM+= rc4 rc4-586
35# sha 28# sha
36CFLAGS+= -DSHA1_ASM 29CFLAGS+= -DSHA1_ASM
diff --git a/src/lib/libcrypto/arch/i386/crypto_arch.h b/src/lib/libcrypto/arch/i386/crypto_arch.h
new file mode 100644
index 0000000000..8e91c25529
--- /dev/null
+++ b/src/lib/libcrypto/arch/i386/crypto_arch.h
@@ -0,0 +1,34 @@
1/* $OpenBSD: crypto_arch.h,v 1.1 2024/08/11 13:02:39 jsing Exp $ */
2/*
3 * Copyright (c) 2024 Joel Sing <jsing@openbsd.org>
4 *
5 * Permission to use, copy, modify, and distribute this software for any
6 * purpose with or without fee is hereby granted, provided that the above
7 * copyright notice and this permission notice appear in all copies.
8 *
9 * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
10 * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
11 * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
12 * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
13 * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
14 * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
15 * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
16 */
17
18#ifndef HEADER_CRYPTO_ARCH_H
19#define HEADER_CRYPTO_ARCH_H
20
21#ifndef OPENSSL_NO_ASM
22
23#define HAVE_AES_CBC_ENCRYPT_INTERNAL
24#define HAVE_AES_SET_ENCRYPT_KEY_INTERNAL
25#define HAVE_AES_SET_DECRYPT_KEY_INTERNAL
26#define HAVE_AES_ENCRYPT_INTERNAL
27#define HAVE_AES_DECRYPT_INTERNAL
28
29#define HAVE_RC4_INTERNAL
30#define HAVE_RC4_SET_KEY_INTERNAL
31
32#endif
33
34#endif
diff --git a/src/lib/libcrypto/arch/m88k/crypto_arch.h b/src/lib/libcrypto/arch/m88k/crypto_arch.h
new file mode 100644
index 0000000000..a3dd98d0ce
--- /dev/null
+++ b/src/lib/libcrypto/arch/m88k/crypto_arch.h
@@ -0,0 +1,21 @@
1/* $OpenBSD: crypto_arch.h,v 1.1 2024/08/11 13:02:39 jsing Exp $ */
2/*
3 * Copyright (c) 2024 Joel Sing <jsing@openbsd.org>
4 *
5 * Permission to use, copy, modify, and distribute this software for any
6 * purpose with or without fee is hereby granted, provided that the above
7 * copyright notice and this permission notice appear in all copies.
8 *
9 * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
10 * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
11 * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
12 * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
13 * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
14 * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
15 * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
16 */
17
18#ifndef HEADER_CRYPTO_ARCH_H
19#define HEADER_CRYPTO_ARCH_H
20
21#endif
diff --git a/src/lib/libcrypto/arch/mips64/Makefile.inc b/src/lib/libcrypto/arch/mips64/Makefile.inc
index 41d6b0e888..9e08b442ac 100644
--- a/src/lib/libcrypto/arch/mips64/Makefile.inc
+++ b/src/lib/libcrypto/arch/mips64/Makefile.inc
@@ -1,14 +1,10 @@
1# $OpenBSD: Makefile.inc,v 1.17 2024/03/29 11:00:57 jsing Exp $ 1# $OpenBSD: Makefile.inc,v 1.18 2024/08/11 13:02:39 jsing Exp $
2 2
3# mips64-specific libcrypto build rules 3# mips64-specific libcrypto build rules
4 4
5# aes 5# aes
6CFLAGS+= -DAES_ASM 6CFLAGS+= -DAES_ASM
7SSLASM+= aes aes-mips aes-mips 7SSLASM+= aes aes-mips aes-mips
8CFLAGS+= -DHAVE_AES_SET_ENCRYPT_KEY_INTERNAL
9CFLAGS+= -DHAVE_AES_SET_DECRYPT_KEY_INTERNAL
10CFLAGS+= -DHAVE_AES_ENCRYPT_INTERNAL
11CFLAGS+= -DHAVE_AES_DECRYPT_INTERNAL
12# bn 8# bn
13SSLASM+= bn mips bn-mips 9SSLASM+= bn mips bn-mips
14SSLASM+= bn mips-mont mips-mont 10SSLASM+= bn mips-mont mips-mont
diff --git a/src/lib/libcrypto/arch/mips64/crypto_arch.h b/src/lib/libcrypto/arch/mips64/crypto_arch.h
new file mode 100644
index 0000000000..4276dc31ea
--- /dev/null
+++ b/src/lib/libcrypto/arch/mips64/crypto_arch.h
@@ -0,0 +1,30 @@
1/* $OpenBSD: crypto_arch.h,v 1.1 2024/08/11 13:02:39 jsing Exp $ */
2/*
3 * Copyright (c) 2024 Joel Sing <jsing@openbsd.org>
4 *
5 * Permission to use, copy, modify, and distribute this software for any
6 * purpose with or without fee is hereby granted, provided that the above
7 * copyright notice and this permission notice appear in all copies.
8 *
9 * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
10 * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
11 * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
12 * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
13 * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
14 * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
15 * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
16 */
17
18#ifndef HEADER_CRYPTO_ARCH_H
19#define HEADER_CRYPTO_ARCH_H
20
21#ifndef OPENSSL_NO_ASM
22
23#define HAVE_AES_SET_ENCRYPT_KEY_INTERNAL
24#define HAVE_AES_SET_DECRYPT_KEY_INTERNAL
25#define HAVE_AES_ENCRYPT_INTERNAL
26#define HAVE_AES_DECRYPT_INTERNAL
27
28#endif
29
30#endif
diff --git a/src/lib/libcrypto/arch/powerpc/crypto_arch.h b/src/lib/libcrypto/arch/powerpc/crypto_arch.h
new file mode 100644
index 0000000000..a3dd98d0ce
--- /dev/null
+++ b/src/lib/libcrypto/arch/powerpc/crypto_arch.h
@@ -0,0 +1,21 @@
1/* $OpenBSD: crypto_arch.h,v 1.1 2024/08/11 13:02:39 jsing Exp $ */
2/*
3 * Copyright (c) 2024 Joel Sing <jsing@openbsd.org>
4 *
5 * Permission to use, copy, modify, and distribute this software for any
6 * purpose with or without fee is hereby granted, provided that the above
7 * copyright notice and this permission notice appear in all copies.
8 *
9 * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
10 * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
11 * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
12 * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
13 * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
14 * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
15 * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
16 */
17
18#ifndef HEADER_CRYPTO_ARCH_H
19#define HEADER_CRYPTO_ARCH_H
20
21#endif
diff --git a/src/lib/libcrypto/arch/powerpc64/crypto_arch.h b/src/lib/libcrypto/arch/powerpc64/crypto_arch.h
new file mode 100644
index 0000000000..a3dd98d0ce
--- /dev/null
+++ b/src/lib/libcrypto/arch/powerpc64/crypto_arch.h
@@ -0,0 +1,21 @@
1/* $OpenBSD: crypto_arch.h,v 1.1 2024/08/11 13:02:39 jsing Exp $ */
2/*
3 * Copyright (c) 2024 Joel Sing <jsing@openbsd.org>
4 *
5 * Permission to use, copy, modify, and distribute this software for any
6 * purpose with or without fee is hereby granted, provided that the above
7 * copyright notice and this permission notice appear in all copies.
8 *
9 * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
10 * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
11 * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
12 * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
13 * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
14 * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
15 * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
16 */
17
18#ifndef HEADER_CRYPTO_ARCH_H
19#define HEADER_CRYPTO_ARCH_H
20
21#endif
diff --git a/src/lib/libcrypto/arch/riscv64/crypto_arch.h b/src/lib/libcrypto/arch/riscv64/crypto_arch.h
new file mode 100644
index 0000000000..a3dd98d0ce
--- /dev/null
+++ b/src/lib/libcrypto/arch/riscv64/crypto_arch.h
@@ -0,0 +1,21 @@
1/* $OpenBSD: crypto_arch.h,v 1.1 2024/08/11 13:02:39 jsing Exp $ */
2/*
3 * Copyright (c) 2024 Joel Sing <jsing@openbsd.org>
4 *
5 * Permission to use, copy, modify, and distribute this software for any
6 * purpose with or without fee is hereby granted, provided that the above
7 * copyright notice and this permission notice appear in all copies.
8 *
9 * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
10 * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
11 * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
12 * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
13 * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
14 * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
15 * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
16 */
17
18#ifndef HEADER_CRYPTO_ARCH_H
19#define HEADER_CRYPTO_ARCH_H
20
21#endif
diff --git a/src/lib/libcrypto/arch/sh/crypto_arch.h b/src/lib/libcrypto/arch/sh/crypto_arch.h
new file mode 100644
index 0000000000..a3dd98d0ce
--- /dev/null
+++ b/src/lib/libcrypto/arch/sh/crypto_arch.h
@@ -0,0 +1,21 @@
1/* $OpenBSD: crypto_arch.h,v 1.1 2024/08/11 13:02:39 jsing Exp $ */
2/*
3 * Copyright (c) 2024 Joel Sing <jsing@openbsd.org>
4 *
5 * Permission to use, copy, modify, and distribute this software for any
6 * purpose with or without fee is hereby granted, provided that the above
7 * copyright notice and this permission notice appear in all copies.
8 *
9 * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
10 * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
11 * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
12 * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
13 * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
14 * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
15 * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
16 */
17
18#ifndef HEADER_CRYPTO_ARCH_H
19#define HEADER_CRYPTO_ARCH_H
20
21#endif
diff --git a/src/lib/libcrypto/arch/sparc64/Makefile.inc b/src/lib/libcrypto/arch/sparc64/Makefile.inc
index c4b303f444..9101d8a89d 100644
--- a/src/lib/libcrypto/arch/sparc64/Makefile.inc
+++ b/src/lib/libcrypto/arch/sparc64/Makefile.inc
@@ -1,12 +1,10 @@
1# $OpenBSD: Makefile.inc,v 1.18 2024/03/29 11:00:57 jsing Exp $ 1# $OpenBSD: Makefile.inc,v 1.19 2024/08/11 13:02:39 jsing Exp $
2 2
3# sparc64-specific libcrypto build rules 3# sparc64-specific libcrypto build rules
4 4
5# aes 5# aes
6CFLAGS+= -DAES_ASM 6CFLAGS+= -DAES_ASM
7SSLASM+= aes aes-sparcv9 aes-sparcv9 7SSLASM+= aes aes-sparcv9 aes-sparcv9
8CFLAGS+= -DHAVE_AES_ENCRYPT_INTERNAL
9CFLAGS+= -DHAVE_AES_DECRYPT_INTERNAL
10# bn 8# bn
11# modes 9# modes
12CFLAGS+= -DGHASH_ASM 10CFLAGS+= -DGHASH_ASM
diff --git a/src/lib/libcrypto/arch/sparc64/crypto_arch.h b/src/lib/libcrypto/arch/sparc64/crypto_arch.h
new file mode 100644
index 0000000000..7f1fc36cac
--- /dev/null
+++ b/src/lib/libcrypto/arch/sparc64/crypto_arch.h
@@ -0,0 +1,28 @@
1/* $OpenBSD: crypto_arch.h,v 1.1 2024/08/11 13:02:39 jsing Exp $ */
2/*
3 * Copyright (c) 2024 Joel Sing <jsing@openbsd.org>
4 *
5 * Permission to use, copy, modify, and distribute this software for any
6 * purpose with or without fee is hereby granted, provided that the above
7 * copyright notice and this permission notice appear in all copies.
8 *
9 * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
10 * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
11 * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
12 * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
13 * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
14 * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
15 * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
16 */
17
18#ifndef HEADER_CRYPTO_ARCH_H
19#define HEADER_CRYPTO_ARCH_H
20
21#ifndef OPENSSL_NO_ASM
22
23#define HAVE_AES_ENCRYPT_INTERNAL
24#define HAVE_AES_DECRYPT_INTERNAL
25
26#endif
27
28#endif
diff --git a/src/lib/libcrypto/crypto_internal.h b/src/lib/libcrypto/crypto_internal.h
index 8229db2d68..7676076f67 100644
--- a/src/lib/libcrypto/crypto_internal.h
+++ b/src/lib/libcrypto/crypto_internal.h
@@ -1,4 +1,4 @@
1/* $OpenBSD: crypto_internal.h,v 1.10 2024/04/17 14:43:37 jsing Exp $ */ 1/* $OpenBSD: crypto_internal.h,v 1.11 2024/08/11 13:02:39 jsing Exp $ */
2/* 2/*
3 * Copyright (c) 2023 Joel Sing <jsing@openbsd.org> 3 * Copyright (c) 2023 Joel Sing <jsing@openbsd.org>
4 * 4 *
@@ -20,6 +20,8 @@
20#include <stdint.h> 20#include <stdint.h>
21#include <string.h> 21#include <string.h>
22 22
23#include "crypto_arch.h"
24
23#ifndef HEADER_CRYPTO_INTERNAL_H 25#ifndef HEADER_CRYPTO_INTERNAL_H
24#define HEADER_CRYPTO_INTERNAL_H 26#define HEADER_CRYPTO_INTERNAL_H
25 27
diff --git a/src/lib/libcrypto/rc4/rc4.c b/src/lib/libcrypto/rc4/rc4.c
index 203fee4996..930d0d9bb3 100644
--- a/src/lib/libcrypto/rc4/rc4.c
+++ b/src/lib/libcrypto/rc4/rc4.c
@@ -1,4 +1,4 @@
1/* $OpenBSD: rc4.c,v 1.11 2024/03/28 12:11:26 jsing Exp $ */ 1/* $OpenBSD: rc4.c,v 1.12 2024/08/11 13:02:39 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 *
@@ -60,6 +60,8 @@
60 60
61#include <openssl/rc4.h> 61#include <openssl/rc4.h>
62 62
63#include "crypto_arch.h"
64
63/* RC4 as implemented from a posting from 65/* RC4 as implemented from a posting from
64 * Newsgroups: sci.crypt 66 * Newsgroups: sci.crypt
65 * From: sterndark@netcom.com (David Sterndark) 67 * From: sterndark@netcom.com (David Sterndark)