diff options
author | jsing <> | 2024-03-28 12:28:48 +0000 |
---|---|---|
committer | jsing <> | 2024-03-28 12:28:48 +0000 |
commit | 9526f0e84f7b8a3a41429b30c7af10d4b135319a (patch) | |
tree | aa8e7d8faef30663f3f9111528f145fce17003fb | |
parent | 47417efb43018f53668a061252fa1164aec412e3 (diff) | |
download | openbsd-9526f0e84f7b8a3a41429b30c7af10d4b135319a.tar.gz openbsd-9526f0e84f7b8a3a41429b30c7af10d4b135319a.tar.bz2 openbsd-9526f0e84f7b8a3a41429b30c7af10d4b135319a.zip |
Make AES_cbc_encrypt() always be a C function.
Rename the assembly generated functions from AES_cbc_encrypt() to
aes_cbc_encrypt_internal(). Always include aes_cbc.c and change it
to use defines that are similar to those used in BN.
ok tb@
-rw-r--r-- | src/lib/libcrypto/aes/aes_cbc.c | 19 | ||||
-rw-r--r-- | src/lib/libcrypto/aes/asm/aes-586.pl | 9 | ||||
-rwxr-xr-x | src/lib/libcrypto/aes/asm/aes-x86_64.pl | 13 | ||||
-rw-r--r-- | src/lib/libcrypto/arch/amd64/Makefile.inc | 4 | ||||
-rw-r--r-- | src/lib/libcrypto/arch/i386/Makefile.inc | 4 |
5 files changed, 32 insertions, 17 deletions
diff --git a/src/lib/libcrypto/aes/aes_cbc.c b/src/lib/libcrypto/aes/aes_cbc.c index 5e76f6ea01..f578be9901 100644 --- a/src/lib/libcrypto/aes/aes_cbc.c +++ b/src/lib/libcrypto/aes/aes_cbc.c | |||
@@ -1,4 +1,4 @@ | |||
1 | /* $OpenBSD: aes_cbc.c,v 1.12 2014/06/12 15:49:27 deraadt Exp $ */ | 1 | /* $OpenBSD: aes_cbc.c,v 1.13 2024/03/28 12:28:48 jsing Exp $ */ |
2 | /* ==================================================================== | 2 | /* ==================================================================== |
3 | * Copyright (c) 1998-2002 The OpenSSL Project. All rights reserved. | 3 | * Copyright (c) 1998-2002 The OpenSSL Project. All rights reserved. |
4 | * | 4 | * |
@@ -52,8 +52,13 @@ | |||
52 | #include <openssl/aes.h> | 52 | #include <openssl/aes.h> |
53 | #include <openssl/modes.h> | 53 | #include <openssl/modes.h> |
54 | 54 | ||
55 | void | 55 | #ifdef HAVE_AES_CBC_ENCRYPT_INTERNAL |
56 | AES_cbc_encrypt(const unsigned char *in, unsigned char *out, | 56 | void aes_cbc_encrypt_internal(const unsigned char *in, unsigned char *out, |
57 | size_t len, const AES_KEY *key, unsigned char *ivec, const int enc); | ||
58 | |||
59 | #else | ||
60 | static inline void | ||
61 | aes_cbc_encrypt_internal(const unsigned char *in, unsigned char *out, | ||
57 | size_t len, const AES_KEY *key, unsigned char *ivec, const int enc) | 62 | size_t len, const AES_KEY *key, unsigned char *ivec, const int enc) |
58 | { | 63 | { |
59 | if (enc) | 64 | if (enc) |
@@ -63,3 +68,11 @@ AES_cbc_encrypt(const unsigned char *in, unsigned char *out, | |||
63 | CRYPTO_cbc128_decrypt(in, out, len, key, ivec, | 68 | CRYPTO_cbc128_decrypt(in, out, len, key, ivec, |
64 | (block128_f)AES_decrypt); | 69 | (block128_f)AES_decrypt); |
65 | } | 70 | } |
71 | #endif | ||
72 | |||
73 | void | ||
74 | AES_cbc_encrypt(const unsigned char *in, unsigned char *out, | ||
75 | size_t len, const AES_KEY *key, unsigned char *ivec, const int enc) | ||
76 | { | ||
77 | aes_cbc_encrypt_internal(in, out, len, key, ivec, enc); | ||
78 | } | ||
diff --git a/src/lib/libcrypto/aes/asm/aes-586.pl b/src/lib/libcrypto/aes/asm/aes-586.pl index 4e0f34cba3..733675ce7d 100644 --- a/src/lib/libcrypto/aes/asm/aes-586.pl +++ b/src/lib/libcrypto/aes/asm/aes-586.pl | |||
@@ -2004,9 +2004,8 @@ sub declast() | |||
2004 | &mov (&DWP(12,$acc),$s3); | 2004 | &mov (&DWP(12,$acc),$s3); |
2005 | &function_end("AES_decrypt"); | 2005 | &function_end("AES_decrypt"); |
2006 | 2006 | ||
2007 | # void AES_cbc_encrypt (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, | 2008 | # size_t length, const AES_KEY *key, unsigned char *ivp,const int enc); |
2009 | # unsigned char *ivp,const int enc); | ||
2010 | { | 2009 | { |
2011 | # stack frame layout | 2010 | # stack frame layout |
2012 | # -4(%esp) # return address 0(%esp) | 2011 | # -4(%esp) # return address 0(%esp) |
@@ -2029,7 +2028,7 @@ my $ivec=&DWP(60,"esp"); # ivec[16] | |||
2029 | my $aes_key=&DWP(76,"esp"); # copy of aes_key | 2028 | my $aes_key=&DWP(76,"esp"); # copy of aes_key |
2030 | my $mark=&DWP(76+240,"esp"); # copy of aes_key->rounds | 2029 | my $mark=&DWP(76+240,"esp"); # copy of aes_key->rounds |
2031 | 2030 | ||
2032 | &function_begin("AES_cbc_encrypt"); | 2031 | &function_begin("aes_cbc_encrypt_internal"); |
2033 | &mov ($s2 eq "ecx"? $s2 : "",&wparam(2)); # load len | 2032 | &mov ($s2 eq "ecx"? $s2 : "",&wparam(2)); # load len |
2034 | &cmp ($s2,0); | 2033 | &cmp ($s2,0); |
2035 | &je (&label("drop_out")); | 2034 | &je (&label("drop_out")); |
@@ -2617,7 +2616,7 @@ my $mark=&DWP(76+240,"esp"); # copy of aes_key->rounds | |||
2617 | 2616 | ||
2618 | &mov ("esp",$_esp); | 2617 | &mov ("esp",$_esp); |
2619 | &popf (); | 2618 | &popf (); |
2620 | &function_end("AES_cbc_encrypt"); | 2619 | &function_end("aes_cbc_encrypt_internal"); |
2621 | } | 2620 | } |
2622 | 2621 | ||
2623 | #------------------------------------------------------------------# | 2622 | #------------------------------------------------------------------# |
diff --git a/src/lib/libcrypto/aes/asm/aes-x86_64.pl b/src/lib/libcrypto/aes/asm/aes-x86_64.pl index 299214800b..a5148f7c1a 100755 --- a/src/lib/libcrypto/aes/asm/aes-x86_64.pl +++ b/src/lib/libcrypto/aes/asm/aes-x86_64.pl | |||
@@ -1641,9 +1641,8 @@ $code.=<<___; | |||
1641 | .size AES_set_decrypt_key,.-AES_set_decrypt_key | 1641 | .size AES_set_decrypt_key,.-AES_set_decrypt_key |
1642 | ___ | 1642 | ___ |
1643 | 1643 | ||
1644 | # void AES_cbc_encrypt (const void char *inp, unsigned char *out, | 1644 | # void aes_cbc_encrypt_internal(const void char *inp, unsigned char *out, |
1645 | # size_t length, const AES_KEY *key, | 1645 | # size_t length, const AES_KEY *key, unsigned char *ivp,const int enc); |
1646 | # unsigned char *ivp,const int enc); | ||
1647 | { | 1646 | { |
1648 | # stack frame layout | 1647 | # stack frame layout |
1649 | # -8(%rsp) return address | 1648 | # -8(%rsp) return address |
@@ -1660,15 +1659,15 @@ my $aes_key="80(%rsp)"; # copy of aes_key | |||
1660 | my $mark="80+240(%rsp)"; # copy of aes_key->rounds | 1659 | my $mark="80+240(%rsp)"; # copy of aes_key->rounds |
1661 | 1660 | ||
1662 | $code.=<<___; | 1661 | $code.=<<___; |
1663 | .globl AES_cbc_encrypt | 1662 | .globl aes_cbc_encrypt_internal |
1664 | .type AES_cbc_encrypt,\@function,6 | 1663 | .type aes_cbc_encrypt_internal,\@function,6 |
1665 | .align 16 | 1664 | .align 16 |
1666 | .extern OPENSSL_ia32cap_P | 1665 | .extern OPENSSL_ia32cap_P |
1667 | .hidden OPENSSL_ia32cap_P | 1666 | .hidden OPENSSL_ia32cap_P |
1668 | .globl asm_AES_cbc_encrypt | 1667 | .globl asm_AES_cbc_encrypt |
1669 | .hidden asm_AES_cbc_encrypt | 1668 | .hidden asm_AES_cbc_encrypt |
1670 | asm_AES_cbc_encrypt: | 1669 | asm_AES_cbc_encrypt: |
1671 | AES_cbc_encrypt: | 1670 | aes_cbc_encrypt_internal: |
1672 | _CET_ENDBR | 1671 | _CET_ENDBR |
1673 | cmp \$0,%rdx # check length | 1672 | cmp \$0,%rdx # check length |
1674 | je .Lcbc_epilogue | 1673 | je .Lcbc_epilogue |
@@ -2118,7 +2117,7 @@ AES_cbc_encrypt: | |||
2118 | popfq | 2117 | popfq |
2119 | .Lcbc_epilogue: | 2118 | .Lcbc_epilogue: |
2120 | ret | 2119 | ret |
2121 | .size AES_cbc_encrypt,.-AES_cbc_encrypt | 2120 | .size aes_cbc_encrypt_internal,.-aes_cbc_encrypt_internal |
2122 | ___ | 2121 | ___ |
2123 | } | 2122 | } |
2124 | 2123 | ||
diff --git a/src/lib/libcrypto/arch/amd64/Makefile.inc b/src/lib/libcrypto/arch/amd64/Makefile.inc index 40ba3c063c..13d2c0b1be 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.18 2024/03/28 01:57:00 jsing Exp $ | 1 | # $OpenBSD: Makefile.inc,v 1.19 2024/03/28 12:28:48 jsing Exp $ |
2 | 2 | ||
3 | # amd64-specific libcrypto build rules | 3 | # amd64-specific libcrypto build rules |
4 | 4 | ||
@@ -13,6 +13,8 @@ SSLASM+= aes bsaes-x86_64 | |||
13 | CFLAGS+= -DVPAES_ASM | 13 | CFLAGS+= -DVPAES_ASM |
14 | SSLASM+= aes vpaes-x86_64 | 14 | SSLASM+= aes vpaes-x86_64 |
15 | SSLASM+= aes aesni-x86_64 | 15 | SSLASM+= aes aesni-x86_64 |
16 | CFLAGS+= -DHAVE_AES_CBC_ENCRYPT_INTERNAL | ||
17 | SRCS+= aes_cbc.c | ||
16 | # bn | 18 | # bn |
17 | CFLAGS+= -DOPENSSL_IA32_SSE2 | 19 | CFLAGS+= -DOPENSSL_IA32_SSE2 |
18 | CFLAGS+= -DRSA_ASM | 20 | CFLAGS+= -DRSA_ASM |
diff --git a/src/lib/libcrypto/arch/i386/Makefile.inc b/src/lib/libcrypto/arch/i386/Makefile.inc index aedd1d7683..cd356eeea5 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.15 2024/03/28 01:57:00 jsing Exp $ | 1 | # $OpenBSD: Makefile.inc,v 1.16 2024/03/28 12:28:48 jsing Exp $ |
2 | 2 | ||
3 | # i386-specific libcrypto build rules | 3 | # i386-specific libcrypto build rules |
4 | 4 | ||
@@ -11,6 +11,8 @@ SSLASM+= aes aes-586 | |||
11 | CFLAGS+= -DVPAES_ASM | 11 | CFLAGS+= -DVPAES_ASM |
12 | SSLASM+= aes vpaes-x86 | 12 | SSLASM+= aes vpaes-x86 |
13 | SSLASM+= aes aesni-x86 | 13 | SSLASM+= aes aesni-x86 |
14 | CFLAGS+= -DHAVE_AES_CBC_ENCRYPT_INTERNAL | ||
15 | SRCS+= aes_cbc.c | ||
14 | # bn | 16 | # bn |
15 | CFLAGS+= -DOPENSSL_IA32_SSE2 | 17 | CFLAGS+= -DOPENSSL_IA32_SSE2 |
16 | SSLASM+= bn bn-586 | 18 | SSLASM+= bn bn-586 |