summaryrefslogtreecommitdiff
path: root/src/lib
diff options
context:
space:
mode:
authorjsing <>2024-03-29 11:00:57 +0000
committerjsing <>2024-03-29 11:00:57 +0000
commit75b82074adb4b78df59f9391f6cb70b6bb285522 (patch)
treef7c84b00ed5b9c6990e905b6d3cb91b87a46eab7 /src/lib
parentddc94e581bd0cb9a0de0d9dbc0091d0b640dacd8 (diff)
downloadopenbsd-75b82074adb4b78df59f9391f6cb70b6bb285522.tar.gz
openbsd-75b82074adb4b78df59f9391f6cb70b6bb285522.tar.bz2
openbsd-75b82074adb4b78df59f9391f6cb70b6bb285522.zip
Always use C functions for AES_{encrypt,decrypt}().
Always provide AES_{encrypt,decrypt}() via C functions, which then either use a C implementation or call the assembly implementation. ok tb@
Diffstat (limited to 'src/lib')
-rw-r--r--src/lib/libcrypto/aes/aes_core.c54
-rw-r--r--src/lib/libcrypto/aes/asm/aes-586.pl12
-rw-r--r--src/lib/libcrypto/aes/asm/aes-armv4.pl32
-rw-r--r--src/lib/libcrypto/aes/asm/aes-mips.pl20
-rw-r--r--src/lib/libcrypto/aes/asm/aes-parisc.pl8
-rw-r--r--src/lib/libcrypto/aes/asm/aes-ppc.pl8
-rwxr-xr-xsrc/lib/libcrypto/aes/asm/aes-sparcv9.pl16
-rwxr-xr-xsrc/lib/libcrypto/aes/asm/aes-x86_64.pl36
-rw-r--r--src/lib/libcrypto/arch/amd64/Makefile.inc4
-rw-r--r--src/lib/libcrypto/arch/arm/Makefile.inc2
-rw-r--r--src/lib/libcrypto/arch/hppa/Makefile.inc4
-rw-r--r--src/lib/libcrypto/arch/i386/Makefile.inc4
-rw-r--r--src/lib/libcrypto/arch/mips64/Makefile.inc4
-rw-r--r--src/lib/libcrypto/arch/sparc64/Makefile.inc4
14 files changed, 124 insertions, 84 deletions
diff --git a/src/lib/libcrypto/aes/aes_core.c b/src/lib/libcrypto/aes/aes_core.c
index ee0bbb9f40..bf5149d833 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.20 2024/03/29 04:39:54 jsing Exp $ */ 1/* $OpenBSD: aes_core.c,v 1.21 2024/03/29 11:00:57 jsing Exp $ */
2/** 2/**
3 * rijndael-alg-fst.c 3 * rijndael-alg-fst.c
4 * 4 *
@@ -37,8 +37,10 @@
37#include "aes_local.h" 37#include "aes_local.h"
38#include "crypto_internal.h" 38#include "crypto_internal.h"
39 39
40#if !defined(HAVE_AES_SET_ENCRYPT_KEY_INTERNAL) && \ 40#if !defined(HAVE_AES_SET_ENCRYPT_KEY_INTERNAL) || \
41 !defined(HAVE_AES_SET_DECRYPT_KEY_INTERNAL) 41 !defined(HAVE_AES_SET_DECRYPT_KEY_INTERNAL) || \
42 !defined(HAVE_AES_ENCRYPT_INTERNAL) || \
43 !defined(HAVE_AES_DECRYPT_INTERNAL)
42 44
43/* 45/*
44Te0[x] = S [x].[02, 01, 01, 03]; 46Te0[x] = S [x].[02, 01, 01, 03];
@@ -616,6 +618,10 @@ static const u8 Td4[256] = {
616 0x17U, 0x2bU, 0x04U, 0x7eU, 0xbaU, 0x77U, 0xd6U, 0x26U, 618 0x17U, 0x2bU, 0x04U, 0x7eU, 0xbaU, 0x77U, 0xd6U, 0x26U,
617 0xe1U, 0x69U, 0x14U, 0x63U, 0x55U, 0x21U, 0x0cU, 0x7dU, 619 0xe1U, 0x69U, 0x14U, 0x63U, 0x55U, 0x21U, 0x0cU, 0x7dU,
618}; 620};
621#endif
622
623#if !defined(HAVE_AES_SET_ENCRYPT_KEY_INTERNAL) || \
624 !defined(HAVE_AES_SET_DECRYPT_KEY_INTERNAL)
619static const u32 rcon[] = { 625static const u32 rcon[] = {
620 0x01000000, 0x02000000, 0x04000000, 0x08000000, 626 0x01000000, 0x02000000, 0x04000000, 0x08000000,
621 0x10000000, 0x20000000, 0x40000000, 0x80000000, 627 0x10000000, 0x20000000, 0x40000000, 0x80000000,
@@ -810,13 +816,17 @@ AES_set_decrypt_key(const unsigned char *userKey, const int bits, AES_KEY *key)
810 return aes_set_decrypt_key_internal(userKey, bits, key); 816 return aes_set_decrypt_key_internal(userKey, bits, key);
811} 817}
812 818
813#ifndef AES_ASM 819#ifdef HAVE_AES_ENCRYPT_INTERNAL
820void aes_encrypt_internal(const unsigned char *in, unsigned char *out,
821 const AES_KEY *key);
822
823#else
814/* 824/*
815 * Encrypt a single block 825 * Encrypt a single block - in and out can overlap.
816 * in and out can overlap
817 */ 826 */
818void 827static inline void
819AES_encrypt(const unsigned char *in, unsigned char *out, const AES_KEY *key) 828aes_encrypt_internal(const unsigned char *in, unsigned char *out,
829 const AES_KEY *key)
820{ 830{
821 const u32 *rk; 831 const u32 *rk;
822 u32 s0, s1, s2, s3, t0, t1, t2, t3; 832 u32 s0, s1, s2, s3, t0, t1, t2, t3;
@@ -1000,13 +1010,25 @@ AES_encrypt(const unsigned char *in, unsigned char *out, const AES_KEY *key)
1000 rk[3]; 1010 rk[3];
1001 crypto_store_htobe32(&out[3 * 4], s3); 1011 crypto_store_htobe32(&out[3 * 4], s3);
1002} 1012}
1013#endif
1014
1015void
1016AES_encrypt(const unsigned char *in, unsigned char *out, const AES_KEY *key)
1017{
1018 return aes_encrypt_internal(in, out, key);
1019}
1020
1021#ifdef HAVE_AES_DECRYPT_INTERNAL
1022void aes_decrypt_internal(const unsigned char *in, unsigned char *out,
1023 const AES_KEY *key);
1003 1024
1025#else
1004/* 1026/*
1005 * Decrypt a single block 1027 * Decrypt a single block - in and out can overlap.
1006 * in and out can overlap
1007 */ 1028 */
1008void 1029static inline void
1009AES_decrypt(const unsigned char *in, unsigned char *out, const AES_KEY *key) 1030aes_decrypt_internal(const unsigned char *in, unsigned char *out,
1031 const AES_KEY *key)
1010{ 1032{
1011 const u32 *rk; 1033 const u32 *rk;
1012 u32 s0, s1, s2, s3, t0, t1, t2, t3; 1034 u32 s0, s1, s2, s3, t0, t1, t2, t3;
@@ -1190,4 +1212,10 @@ AES_decrypt(const unsigned char *in, unsigned char *out, const AES_KEY *key)
1190 rk[3]; 1212 rk[3];
1191 crypto_store_htobe32(&out[3 * 4], s3); 1213 crypto_store_htobe32(&out[3 * 4], s3);
1192} 1214}
1193#endif /* AES_ASM */ 1215#endif
1216
1217void
1218AES_decrypt(const unsigned char *in, unsigned char *out, const AES_KEY *key)
1219{
1220 return aes_decrypt_internal(in, out, key);
1221}
diff --git a/src/lib/libcrypto/aes/asm/aes-586.pl b/src/lib/libcrypto/aes/asm/aes-586.pl
index a2d98009e8..364099d4d3 100644
--- a/src/lib/libcrypto/aes/asm/aes-586.pl
+++ b/src/lib/libcrypto/aes/asm/aes-586.pl
@@ -1158,8 +1158,8 @@ sub enclast()
1158 &data_word(0x00000000, 0x00000000, 0x00000000, 0x00000000); 1158 &data_word(0x00000000, 0x00000000, 0x00000000, 0x00000000);
1159 &previous(); 1159 &previous();
1160 1160
1161# void AES_encrypt (const void *inp,void *out,const AES_KEY *key); 1161# void aes_encrypt_internal(const void *inp, void *out, const AES_KEY *key);
1162&function_begin("AES_encrypt"); 1162&function_begin("aes_encrypt_internal");
1163 &mov ($acc,&wparam(0)); # load inp 1163 &mov ($acc,&wparam(0)); # load inp
1164 &mov ($key,&wparam(2)); # load key 1164 &mov ($key,&wparam(2)); # load key
1165 1165
@@ -1213,7 +1213,7 @@ sub enclast()
1213 &mov (&DWP(4,$acc),$s1); 1213 &mov (&DWP(4,$acc),$s1);
1214 &mov (&DWP(8,$acc),$s2); 1214 &mov (&DWP(8,$acc),$s2);
1215 &mov (&DWP(12,$acc),$s3); 1215 &mov (&DWP(12,$acc),$s3);
1216&function_end("AES_encrypt"); 1216&function_end("aes_encrypt_internal");
1217 1217
1218#--------------------------------------------------------------------# 1218#--------------------------------------------------------------------#
1219 1219
@@ -1947,8 +1947,8 @@ sub declast()
1947 &data_byte(0xe1, 0x69, 0x14, 0x63, 0x55, 0x21, 0x0c, 0x7d); 1947 &data_byte(0xe1, 0x69, 0x14, 0x63, 0x55, 0x21, 0x0c, 0x7d);
1948 &previous(); 1948 &previous();
1949 1949
1950# void AES_decrypt (const void *inp,void *out,const AES_KEY *key); 1950# void aes_decrypt_internal(const void *inp, void *out, const AES_KEY *key);
1951&function_begin("AES_decrypt"); 1951&function_begin("aes_decrypt_internal");
1952 &mov ($acc,&wparam(0)); # load inp 1952 &mov ($acc,&wparam(0)); # load inp
1953 &mov ($key,&wparam(2)); # load key 1953 &mov ($key,&wparam(2)); # load key
1954 1954
@@ -2002,7 +2002,7 @@ sub declast()
2002 &mov (&DWP(4,$acc),$s1); 2002 &mov (&DWP(4,$acc),$s1);
2003 &mov (&DWP(8,$acc),$s2); 2003 &mov (&DWP(8,$acc),$s2);
2004 &mov (&DWP(12,$acc),$s3); 2004 &mov (&DWP(12,$acc),$s3);
2005&function_end("AES_decrypt"); 2005&function_end("aes_decrypt_internal");
2006 2006
2007# void aes_cbc_encrypt_internal(const void char *inp, unsigned char *out, 2007# void aes_cbc_encrypt_internal(const void char *inp, unsigned char *out,
2008# size_t length, const AES_KEY *key, unsigned char *ivp,const int enc); 2008# size_t length, const AES_KEY *key, unsigned char *ivp,const int enc);
diff --git a/src/lib/libcrypto/aes/asm/aes-armv4.pl b/src/lib/libcrypto/aes/asm/aes-armv4.pl
index 3d581c5d7c..0048ee5b29 100644
--- a/src/lib/libcrypto/aes/asm/aes-armv4.pl
+++ b/src/lib/libcrypto/aes/asm/aes-armv4.pl
@@ -161,17 +161,17 @@ AES_Te:
161.word 0x1B000000, 0x36000000, 0, 0, 0, 0, 0, 0 161.word 0x1B000000, 0x36000000, 0, 0, 0, 0, 0, 0
162.size AES_Te,.-AES_Te 162.size AES_Te,.-AES_Te
163 163
164@ void AES_encrypt(const unsigned char *in, unsigned char *out, 164@ void aes_encrypt_internal(const unsigned char *in, unsigned char *out,
165@ const AES_KEY *key) { 165@ const AES_KEY *key) {
166.global AES_encrypt 166.global aes_encrypt_internal
167.type AES_encrypt,%function 167.type aes_encrypt_internal,%function
168.align 5 168.align 5
169AES_encrypt: 169aes_encrypt_internal:
170 sub r3,pc,#8 @ AES_encrypt 170 sub r3,pc,#8 @ aes_encrypt_internal
171 stmdb sp!,{r1,r4-r12,lr} 171 stmdb sp!,{r1,r4-r12,lr}
172 mov $rounds,r0 @ inp 172 mov $rounds,r0 @ inp
173 mov $key,r2 173 mov $key,r2
174 sub $tbl,r3,#AES_encrypt-AES_Te @ Te 174 sub $tbl,r3,#aes_encrypt_internal-AES_Te @ Te
175#if __ARM_ARCH__<7 || defined(__STRICT_ALIGNMENT) 175#if __ARM_ARCH__<7 || defined(__STRICT_ALIGNMENT)
176 ldrb $s0,[$rounds,#3] @ load input data in endian-neutral 176 ldrb $s0,[$rounds,#3] @ load input data in endian-neutral
177 ldrb $t1,[$rounds,#2] @ manner... 177 ldrb $t1,[$rounds,#2] @ manner...
@@ -265,7 +265,7 @@ AES_encrypt:
265 moveq pc,lr @ be binary compatible with V4, yet 265 moveq pc,lr @ be binary compatible with V4, yet
266 bx lr @ interoperable with Thumb ISA:-) 266 bx lr @ interoperable with Thumb ISA:-)
267#endif 267#endif
268.size AES_encrypt,.-AES_encrypt 268.size aes_encrypt_internal,.-aes_encrypt_internal
269 269
270.type _armv4_AES_encrypt,%function 270.type _armv4_AES_encrypt,%function
271.align 2 271.align 2
@@ -877,17 +877,17 @@ AES_Td:
877.byte 0xe1, 0x69, 0x14, 0x63, 0x55, 0x21, 0x0c, 0x7d 877.byte 0xe1, 0x69, 0x14, 0x63, 0x55, 0x21, 0x0c, 0x7d
878.size AES_Td,.-AES_Td 878.size AES_Td,.-AES_Td
879 879
880@ void AES_decrypt(const unsigned char *in, unsigned char *out, 880@ void aes_decrypt_internal(const unsigned char *in, unsigned char *out,
881@ const AES_KEY *key) { 881@ const AES_KEY *key) {
882.global AES_decrypt 882.global aes_decrypt_internal
883.type AES_decrypt,%function 883.type aes_decrypt_internal,%function
884.align 5 884.align 5
885AES_decrypt: 885aes_decrypt_internal:
886 sub r3,pc,#8 @ AES_decrypt 886 sub r3,pc,#8 @ aes_decrypt_internal
887 stmdb sp!,{r1,r4-r12,lr} 887 stmdb sp!,{r1,r4-r12,lr}
888 mov $rounds,r0 @ inp 888 mov $rounds,r0 @ inp
889 mov $key,r2 889 mov $key,r2
890 sub $tbl,r3,#AES_decrypt-AES_Td @ Td 890 sub $tbl,r3,#aes_decrypt_internal-AES_Td @ Td
891#if __ARM_ARCH__<7 || defined(__STRICT_ALIGNMENT) 891#if __ARM_ARCH__<7 || defined(__STRICT_ALIGNMENT)
892 ldrb $s0,[$rounds,#3] @ load input data in endian-neutral 892 ldrb $s0,[$rounds,#3] @ load input data in endian-neutral
893 ldrb $t1,[$rounds,#2] @ manner... 893 ldrb $t1,[$rounds,#2] @ manner...
@@ -981,7 +981,7 @@ AES_decrypt:
981 moveq pc,lr @ be binary compatible with V4, yet 981 moveq pc,lr @ be binary compatible with V4, yet
982 bx lr @ interoperable with Thumb ISA:-) 982 bx lr @ interoperable with Thumb ISA:-)
983#endif 983#endif
984.size AES_decrypt,.-AES_decrypt 984.size aes_decrypt_internal,.-aes_decrypt_internal
985 985
986.type _armv4_AES_decrypt,%function 986.type _armv4_AES_decrypt,%function
987.align 2 987.align 2
diff --git a/src/lib/libcrypto/aes/asm/aes-mips.pl b/src/lib/libcrypto/aes/asm/aes-mips.pl
index b3649bc60f..9a5df878f5 100644
--- a/src/lib/libcrypto/aes/asm/aes-mips.pl
+++ b/src/lib/libcrypto/aes/asm/aes-mips.pl
@@ -355,9 +355,9 @@ _mips_AES_encrypt:
355.end _mips_AES_encrypt 355.end _mips_AES_encrypt
356 356
357.align 5 357.align 5
358.globl AES_encrypt 358.globl aes_encrypt_internal
359.ent AES_encrypt 359.ent aes_encrypt_internal
360AES_encrypt: 360aes_encrypt_internal:
361 .frame $sp,$FRAMESIZE,$ra 361 .frame $sp,$FRAMESIZE,$ra
362 .mask $SAVED_REGS_MASK,-$SZREG 362 .mask $SAVED_REGS_MASK,-$SZREG
363 .set noreorder 363 .set noreorder
@@ -387,7 +387,7 @@ $code.=<<___ if ($flavour =~ /nubi/i); # optimize non-nubi prologue
387___ 387___
388$code.=<<___ if ($flavour !~ /o32/i); # non-o32 PIC-ification 388$code.=<<___ if ($flavour !~ /o32/i); # non-o32 PIC-ification
389 .cplocal $Tbl 389 .cplocal $Tbl
390 .cpsetup $pf,$zero,AES_encrypt 390 .cpsetup $pf,$zero,aes_encrypt_internal
391___ 391___
392$code.=<<___; 392$code.=<<___;
393 .set reorder 393 .set reorder
@@ -435,7 +435,7 @@ ___
435$code.=<<___; 435$code.=<<___;
436 jr $ra 436 jr $ra
437 $PTR_ADD $sp,$FRAMESIZE 437 $PTR_ADD $sp,$FRAMESIZE
438.end AES_encrypt 438.end aes_encrypt_internal
439___ 439___
440 440
441$code.=<<___; 441$code.=<<___;
@@ -691,9 +691,9 @@ _mips_AES_decrypt:
691.end _mips_AES_decrypt 691.end _mips_AES_decrypt
692 692
693.align 5 693.align 5
694.globl AES_decrypt 694.globl aes_decrypt_internal
695.ent AES_decrypt 695.ent aes_decrypt_internal
696AES_decrypt: 696aes_decrypt_internal:
697 .frame $sp,$FRAMESIZE,$ra 697 .frame $sp,$FRAMESIZE,$ra
698 .mask $SAVED_REGS_MASK,-$SZREG 698 .mask $SAVED_REGS_MASK,-$SZREG
699 .set noreorder 699 .set noreorder
@@ -723,7 +723,7 @@ $code.=<<___ if ($flavour =~ /nubi/i); # optimize non-nubi prologue
723___ 723___
724$code.=<<___ if ($flavour !~ /o32/i); # non-o32 PIC-ification 724$code.=<<___ if ($flavour !~ /o32/i); # non-o32 PIC-ification
725 .cplocal $Tbl 725 .cplocal $Tbl
726 .cpsetup $pf,$zero,AES_decrypt 726 .cpsetup $pf,$zero,aes_decrypt_internal
727___ 727___
728$code.=<<___; 728$code.=<<___;
729 .set reorder 729 .set reorder
@@ -771,7 +771,7 @@ ___
771$code.=<<___; 771$code.=<<___;
772 jr $ra 772 jr $ra
773 $PTR_ADD $sp,$FRAMESIZE 773 $PTR_ADD $sp,$FRAMESIZE
774.end AES_decrypt 774.end aes_decrypt_internal
775___ 775___
776}}} 776}}}
777 777
diff --git a/src/lib/libcrypto/aes/asm/aes-parisc.pl b/src/lib/libcrypto/aes/asm/aes-parisc.pl
index 43dbfc108d..4e4592b56b 100644
--- a/src/lib/libcrypto/aes/asm/aes-parisc.pl
+++ b/src/lib/libcrypto/aes/asm/aes-parisc.pl
@@ -66,9 +66,9 @@ $code=<<___;
66 .LEVEL $LEVEL 66 .LEVEL $LEVEL
67 .text 67 .text
68 68
69 .EXPORT AES_encrypt,ENTRY,ARGW0=GR,ARGW1=GR,ARGW2=GR 69 .EXPORT aes_encrypt_internal,ENTRY,ARGW0=GR,ARGW1=GR,ARGW2=GR
70 .ALIGN 64 70 .ALIGN 64
71AES_encrypt 71aes_encrypt_internal
72 .PROC 72 .PROC
73 .CALLINFO FRAME=`$FRAME-16*$SIZE_T`,NO_CALLS,SAVE_RP,ENTRY_GR=18 73 .CALLINFO FRAME=`$FRAME-16*$SIZE_T`,NO_CALLS,SAVE_RP,ENTRY_GR=18
74 .ENTRY 74 .ENTRY
@@ -540,9 +540,9 @@ L\$AES_Te
540___ 540___
541 541
542$code.=<<___; 542$code.=<<___;
543 .EXPORT AES_decrypt,ENTRY,ARGW0=GR,ARGW1=GR,ARGW2=GR 543 .EXPORT aes_decrypt_internal,ENTRY,ARGW0=GR,ARGW1=GR,ARGW2=GR
544 .ALIGN 16 544 .ALIGN 16
545AES_decrypt 545aes_decrypt_internal
546 .PROC 546 .PROC
547 .CALLINFO FRAME=`$FRAME-16*$SIZE_T`,NO_CALLS,SAVE_RP,ENTRY_GR=18 547 .CALLINFO FRAME=`$FRAME-16*$SIZE_T`,NO_CALLS,SAVE_RP,ENTRY_GR=18
548 .ENTRY 548 .ENTRY
diff --git a/src/lib/libcrypto/aes/asm/aes-ppc.pl b/src/lib/libcrypto/aes/asm/aes-ppc.pl
index bc93603669..178ba56b3e 100644
--- a/src/lib/libcrypto/aes/asm/aes-ppc.pl
+++ b/src/lib/libcrypto/aes/asm/aes-ppc.pl
@@ -327,9 +327,9 @@ $code.=<<___;
327.byte 0xe1, 0x69, 0x14, 0x63, 0x55, 0x21, 0x0c, 0x7d 327.byte 0xe1, 0x69, 0x14, 0x63, 0x55, 0x21, 0x0c, 0x7d
328 328
329 329
330.globl .AES_encrypt 330.globl .aes_encrypt_internal
331.align 7 331.align 7
332.AES_encrypt: 332.aes_encrypt_internal:
333 $STU $sp,-$FRAME($sp) 333 $STU $sp,-$FRAME($sp)
334 mflr r0 334 mflr r0
335 335
@@ -754,9 +754,9 @@ Lenc_compact_done:
754 xor $s3,$s3,$t3 754 xor $s3,$s3,$t3
755 blr 755 blr
756 756
757.globl .AES_decrypt 757.globl .aes_decrypt_internal
758.align 7 758.align 7
759.AES_decrypt: 759.aes_decrypt_internal:
760 $STU $sp,-$FRAME($sp) 760 $STU $sp,-$FRAME($sp)
761 mflr r0 761 mflr r0
762 762
diff --git a/src/lib/libcrypto/aes/asm/aes-sparcv9.pl b/src/lib/libcrypto/aes/asm/aes-sparcv9.pl
index 08ac9830f1..1348d09594 100755
--- a/src/lib/libcrypto/aes/asm/aes-sparcv9.pl
+++ b/src/lib/libcrypto/aes/asm/aes-sparcv9.pl
@@ -511,8 +511,8 @@ _sparcv9_AES_encrypt:
511.size _sparcv9_AES_encrypt,(.-_sparcv9_AES_encrypt) 511.size _sparcv9_AES_encrypt,(.-_sparcv9_AES_encrypt)
512 512
513.align 32 513.align 32
514.globl AES_encrypt 514.globl aes_encrypt_internal
515AES_encrypt: 515aes_encrypt_internal:
516 save %sp,-$frame,%sp 516 save %sp,-$frame,%sp
517#ifdef __PIC__ 517#ifdef __PIC__
518 sethi %hi(_GLOBAL_OFFSET_TABLE_-4), %o5 518 sethi %hi(_GLOBAL_OFFSET_TABLE_-4), %o5
@@ -638,8 +638,8 @@ AES_encrypt:
638 638
639 ret 639 ret
640 restore 640 restore
641.type AES_encrypt,#function 641.type aes_encrypt_internal,#function
642.size AES_encrypt,(.-AES_encrypt) 642.size aes_encrypt_internal,(.-aes_encrypt_internal)
643 643
644___ 644___
645 645
@@ -1075,8 +1075,8 @@ _sparcv9_AES_decrypt:
1075.size _sparcv9_AES_decrypt,(.-_sparcv9_AES_decrypt) 1075.size _sparcv9_AES_decrypt,(.-_sparcv9_AES_decrypt)
1076 1076
1077.align 32 1077.align 32
1078.globl AES_decrypt 1078.globl aes_decrypt_internal
1079AES_decrypt: 1079aes_decrypt_internal:
1080 save %sp,-$frame,%sp 1080 save %sp,-$frame,%sp
1081#ifdef __PIC__ 1081#ifdef __PIC__
1082 sethi %hi(_GLOBAL_OFFSET_TABLE_-4), %o5 1082 sethi %hi(_GLOBAL_OFFSET_TABLE_-4), %o5
@@ -1202,8 +1202,8 @@ AES_decrypt:
1202 1202
1203 ret 1203 ret
1204 restore 1204 restore
1205.type AES_decrypt,#function 1205.type aes_decrypt_internal,#function
1206.size AES_decrypt,(.-AES_decrypt) 1206.size aes_decrypt_internal,(.-aes_decrypt_internal)
1207___ 1207___
1208 1208
1209# fmovs instructions substituting for FP nops were originally added 1209# fmovs instructions substituting for FP nops were originally added
diff --git a/src/lib/libcrypto/aes/asm/aes-x86_64.pl b/src/lib/libcrypto/aes/asm/aes-x86_64.pl
index 9b75a6f7a5..324c4a2be2 100755
--- a/src/lib/libcrypto/aes/asm/aes-x86_64.pl
+++ b/src/lib/libcrypto/aes/asm/aes-x86_64.pl
@@ -586,15 +586,15 @@ $code.=<<___;
586.size _x86_64_AES_encrypt_compact,.-_x86_64_AES_encrypt_compact 586.size _x86_64_AES_encrypt_compact,.-_x86_64_AES_encrypt_compact
587___ 587___
588 588
589# void AES_encrypt (const void *inp,void *out,const AES_KEY *key); 589# void aes_encrypt_internal(const void *inp, void *out, const AES_KEY *key);
590$code.=<<___; 590$code.=<<___;
591.globl AES_encrypt 591.globl aes_encrypt_internal
592.type AES_encrypt,\@function,3 592.type aes_encrypt_internal,\@function,3
593.align 16 593.align 16
594.globl asm_AES_encrypt 594.globl asm_AES_encrypt
595.hidden asm_AES_encrypt 595.hidden asm_AES_encrypt
596asm_AES_encrypt: 596asm_AES_encrypt:
597AES_encrypt: 597aes_encrypt_internal:
598 _CET_ENDBR 598 _CET_ENDBR
599 push %rbx 599 push %rbx
600 push %rbp 600 push %rbp
@@ -655,7 +655,7 @@ AES_encrypt:
655 lea 48(%rsi),%rsp 655 lea 48(%rsi),%rsp
656.Lenc_epilogue: 656.Lenc_epilogue:
657 ret 657 ret
658.size AES_encrypt,.-AES_encrypt 658.size aes_encrypt_internal,.-aes_encrypt_internal
659___ 659___
660 660
661#------------------------------------------------------------------# 661#------------------------------------------------------------------#
@@ -1188,15 +1188,15 @@ $code.=<<___;
1188.size _x86_64_AES_decrypt_compact,.-_x86_64_AES_decrypt_compact 1188.size _x86_64_AES_decrypt_compact,.-_x86_64_AES_decrypt_compact
1189___ 1189___
1190 1190
1191# void AES_decrypt (const void *inp,void *out,const AES_KEY *key); 1191# void aes_decrypt_internal(const void *inp, void *out, const AES_KEY *key);
1192$code.=<<___; 1192$code.=<<___;
1193.globl AES_decrypt 1193.globl aes_decrypt_internal
1194.type AES_decrypt,\@function,3 1194.type aes_decrypt_internal,\@function,3
1195.align 16 1195.align 16
1196.globl asm_AES_decrypt 1196.globl asm_AES_decrypt
1197.hidden asm_AES_decrypt 1197.hidden asm_AES_decrypt
1198asm_AES_decrypt: 1198asm_AES_decrypt:
1199AES_decrypt: 1199aes_decrypt_internal:
1200 _CET_ENDBR 1200 _CET_ENDBR
1201 push %rbx 1201 push %rbx
1202 push %rbp 1202 push %rbp
@@ -1259,7 +1259,7 @@ AES_decrypt:
1259 lea 48(%rsi),%rsp 1259 lea 48(%rsi),%rsp
1260.Ldec_epilogue: 1260.Ldec_epilogue:
1261 ret 1261 ret
1262.size AES_decrypt,.-AES_decrypt 1262.size aes_decrypt_internal,.-aes_decrypt_internal
1263___ 1263___
1264#------------------------------------------------------------------# 1264#------------------------------------------------------------------#
1265 1265
@@ -2782,13 +2782,13 @@ cbc_se_handler:
2782 2782
2783.section .pdata 2783.section .pdata
2784.align 4 2784.align 4
2785 .rva .LSEH_begin_AES_encrypt 2785 .rva .LSEH_begin_aes_encrypt_internal
2786 .rva .LSEH_end_AES_encrypt 2786 .rva .LSEH_end_aes_encrypt_internal
2787 .rva .LSEH_info_AES_encrypt 2787 .rva .LSEH_info_aes_encrypt_internal
2788 2788
2789 .rva .LSEH_begin_AES_decrypt 2789 .rva .LSEH_begin_aes_decrypt_internal
2790 .rva .LSEH_end_AES_decrypt 2790 .rva .LSEH_end_aes_decrypt_internal
2791 .rva .LSEH_info_AES_decrypt 2791 .rva .LSEH_info_aes_decrypt_internal
2792 2792
2793 .rva .LSEH_begin_aes_set_encrypt_key_internal 2793 .rva .LSEH_begin_aes_set_encrypt_key_internal
2794 .rva .LSEH_end_aes_set_encrypt_key_internal 2794 .rva .LSEH_end_aes_set_encrypt_key_internal
@@ -2804,11 +2804,11 @@ cbc_se_handler:
2804 2804
2805.section .xdata 2805.section .xdata
2806.align 8 2806.align 8
2807.LSEH_info_AES_encrypt: 2807.LSEH_info_aes_encrypt_internal:
2808 .byte 9,0,0,0 2808 .byte 9,0,0,0
2809 .rva block_se_handler 2809 .rva block_se_handler
2810 .rva .Lenc_prologue,.Lenc_epilogue # HandlerData[] 2810 .rva .Lenc_prologue,.Lenc_epilogue # HandlerData[]
2811.LSEH_info_AES_decrypt: 2811.LSEH_info_aes_decrypt_internal:
2812 .byte 9,0,0,0 2812 .byte 9,0,0,0
2813 .rva block_se_handler 2813 .rva block_se_handler
2814 .rva .Ldec_prologue,.Ldec_epilogue # HandlerData[] 2814 .rva .Ldec_prologue,.Ldec_epilogue # HandlerData[]
diff --git a/src/lib/libcrypto/arch/amd64/Makefile.inc b/src/lib/libcrypto/arch/amd64/Makefile.inc
index ca7d751d77..a354105822 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.26 2024/03/29 07:24:09 jsing Exp $ 1# $OpenBSD: Makefile.inc,v 1.27 2024/03/29 11:00:57 jsing Exp $
2 2
3# amd64-specific libcrypto build rules 3# amd64-specific libcrypto build rules
4 4
@@ -16,6 +16,8 @@ SSLASM+= aes aesni-x86_64
16CFLAGS+= -DHAVE_AES_CBC_ENCRYPT_INTERNAL 16CFLAGS+= -DHAVE_AES_CBC_ENCRYPT_INTERNAL
17CFLAGS+= -DHAVE_AES_SET_ENCRYPT_KEY_INTERNAL 17CFLAGS+= -DHAVE_AES_SET_ENCRYPT_KEY_INTERNAL
18CFLAGS+= -DHAVE_AES_SET_DECRYPT_KEY_INTERNAL 18CFLAGS+= -DHAVE_AES_SET_DECRYPT_KEY_INTERNAL
19CFLAGS+= -DHAVE_AES_ENCRYPT_INTERNAL
20CFLAGS+= -DHAVE_AES_DECRYPT_INTERNAL
19# bn 21# bn
20CFLAGS+= -DOPENSSL_IA32_SSE2 22CFLAGS+= -DOPENSSL_IA32_SSE2
21CFLAGS+= -DRSA_ASM 23CFLAGS+= -DRSA_ASM
diff --git a/src/lib/libcrypto/arch/arm/Makefile.inc b/src/lib/libcrypto/arch/arm/Makefile.inc
index a614add80c..43c0589eb6 100644
--- a/src/lib/libcrypto/arch/arm/Makefile.inc
+++ b/src/lib/libcrypto/arch/arm/Makefile.inc
@@ -7,6 +7,8 @@ CFLAGS+= -DAES_ASM
7SSLASM+= aes aes-armv4 7SSLASM+= aes aes-armv4
8CFLAGS+= -DHAVE_AES_SET_ENCRYPT_KEY_INTERNAL 8CFLAGS+= -DHAVE_AES_SET_ENCRYPT_KEY_INTERNAL
9CFLAGS+= -DHAVE_AES_SET_DECRYPT_KEY_INTERNAL 9CFLAGS+= -DHAVE_AES_SET_DECRYPT_KEY_INTERNAL
10CFLAGS+= -DHAVE_AES_ENCRYPT_INTERNAL
11CFLAGS+= -DHAVE_AES_DECRYPT_INTERNAL
10# bn 12# bn
11CFLAGS+= -DOPENSSL_BN_ASM_MONT 13CFLAGS+= -DOPENSSL_BN_ASM_MONT
12SSLASM+= bn armv4-mont 14SSLASM+= bn armv4-mont
diff --git a/src/lib/libcrypto/arch/hppa/Makefile.inc b/src/lib/libcrypto/arch/hppa/Makefile.inc
index 5938320aa4..9796d3a860 100644
--- a/src/lib/libcrypto/arch/hppa/Makefile.inc
+++ b/src/lib/libcrypto/arch/hppa/Makefile.inc
@@ -1,10 +1,12 @@
1# $OpenBSD: Makefile.inc,v 1.23 2024/03/29 07:24:09 jsing Exp $ 1# $OpenBSD: Makefile.inc,v 1.24 2024/03/29 11:00:57 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
8# bn 10# bn
9SSLASM+= bn parisc-mont parisc-mont 11SSLASM+= bn parisc-mont parisc-mont
10CFLAGS+= -DOPENSSL_BN_ASM_MONT -DBN_DIV2W 12CFLAGS+= -DOPENSSL_BN_ASM_MONT -DBN_DIV2W
diff --git a/src/lib/libcrypto/arch/i386/Makefile.inc b/src/lib/libcrypto/arch/i386/Makefile.inc
index 71bee6e1a0..37f6ba32b9 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.23 2024/03/29 07:24:09 jsing Exp $ 1# $OpenBSD: Makefile.inc,v 1.24 2024/03/29 11:00:57 jsing Exp $
2 2
3# i386-specific libcrypto build rules 3# i386-specific libcrypto build rules
4 4
@@ -14,6 +14,8 @@ SSLASM+= aes aesni-x86
14CFLAGS+= -DHAVE_AES_CBC_ENCRYPT_INTERNAL 14CFLAGS+= -DHAVE_AES_CBC_ENCRYPT_INTERNAL
15CFLAGS+= -DHAVE_AES_SET_ENCRYPT_KEY_INTERNAL 15CFLAGS+= -DHAVE_AES_SET_ENCRYPT_KEY_INTERNAL
16CFLAGS+= -DHAVE_AES_SET_DECRYPT_KEY_INTERNAL 16CFLAGS+= -DHAVE_AES_SET_DECRYPT_KEY_INTERNAL
17CFLAGS+= -DHAVE_AES_ENCRYPT_INTERNAL
18CFLAGS+= -DHAVE_AES_DECRYPT_INTERNAL
17# bn 19# bn
18CFLAGS+= -DOPENSSL_IA32_SSE2 20CFLAGS+= -DOPENSSL_IA32_SSE2
19SSLASM+= bn bn-586 21SSLASM+= bn bn-586
diff --git a/src/lib/libcrypto/arch/mips64/Makefile.inc b/src/lib/libcrypto/arch/mips64/Makefile.inc
index baad8c43e7..41d6b0e888 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.16 2024/03/29 07:24:09 jsing Exp $ 1# $OpenBSD: Makefile.inc,v 1.17 2024/03/29 11:00:57 jsing Exp $
2 2
3# mips64-specific libcrypto build rules 3# mips64-specific libcrypto build rules
4 4
@@ -7,6 +7,8 @@ CFLAGS+= -DAES_ASM
7SSLASM+= aes aes-mips aes-mips 7SSLASM+= aes aes-mips aes-mips
8CFLAGS+= -DHAVE_AES_SET_ENCRYPT_KEY_INTERNAL 8CFLAGS+= -DHAVE_AES_SET_ENCRYPT_KEY_INTERNAL
9CFLAGS+= -DHAVE_AES_SET_DECRYPT_KEY_INTERNAL 9CFLAGS+= -DHAVE_AES_SET_DECRYPT_KEY_INTERNAL
10CFLAGS+= -DHAVE_AES_ENCRYPT_INTERNAL
11CFLAGS+= -DHAVE_AES_DECRYPT_INTERNAL
10# bn 12# bn
11SSLASM+= bn mips bn-mips 13SSLASM+= bn mips bn-mips
12SSLASM+= bn mips-mont mips-mont 14SSLASM+= bn mips-mont mips-mont
diff --git a/src/lib/libcrypto/arch/sparc64/Makefile.inc b/src/lib/libcrypto/arch/sparc64/Makefile.inc
index 3f2b7a6c55..c4b303f444 100644
--- a/src/lib/libcrypto/arch/sparc64/Makefile.inc
+++ b/src/lib/libcrypto/arch/sparc64/Makefile.inc
@@ -1,10 +1,12 @@
1# $OpenBSD: Makefile.inc,v 1.17 2024/03/29 07:24:09 jsing Exp $ 1# $OpenBSD: Makefile.inc,v 1.18 2024/03/29 11:00:57 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
8# bn 10# bn
9# modes 11# modes
10CFLAGS+= -DGHASH_ASM 12CFLAGS+= -DGHASH_ASM