sync with OpenBSD -current

This commit is contained in:
purplerain 2024-03-28 20:44:33 +00:00
parent cc5edceac3
commit 6278c437f5
Signed by: purplerain
GPG key ID: F42C07F07E2E35B7
76 changed files with 1108 additions and 2495 deletions

View file

@ -1,4 +1,4 @@
/* $OpenBSD: aes.c,v 1.1 2024/03/28 00:57:26 jsing Exp $ */
/* $OpenBSD: aes.c,v 1.2 2024/03/28 12:52:58 jsing Exp $ */
/* ====================================================================
* Copyright (c) 2002-2006 The OpenSSL Project. All rights reserved.
*
@ -59,6 +59,31 @@ static const unsigned char aes_wrap_default_iv[] = {
0xA6, 0xA6, 0xA6, 0xA6, 0xA6, 0xA6, 0xA6, 0xA6,
};
#ifdef HAVE_AES_CBC_ENCRYPT_INTERNAL
void aes_cbc_encrypt_internal(const unsigned char *in, unsigned char *out,
size_t len, const AES_KEY *key, unsigned char *ivec, const int enc);
#else
static inline void
aes_cbc_encrypt_internal(const unsigned char *in, unsigned char *out,
size_t len, const AES_KEY *key, unsigned char *ivec, const int enc)
{
if (enc)
CRYPTO_cbc128_encrypt(in, out, len, key, ivec,
(block128_f)AES_encrypt);
else
CRYPTO_cbc128_decrypt(in, out, len, key, ivec,
(block128_f)AES_decrypt);
}
#endif
void
AES_cbc_encrypt(const unsigned char *in, unsigned char *out,
size_t len, const AES_KEY *key, unsigned char *ivec, const int enc)
{
aes_cbc_encrypt_internal(in, out, len, key, ivec, enc);
}
/*
* The input and output encrypted as though 128bit cfb mode is being
* used. The extra state information to record how much of the

View file

@ -2004,9 +2004,8 @@ sub declast()
&mov (&DWP(12,$acc),$s3);
&function_end("AES_decrypt");
# void AES_cbc_encrypt (const void char *inp, unsigned char *out,
# size_t length, const AES_KEY *key,
# unsigned char *ivp,const int enc);
# void aes_cbc_encrypt_internal(const void char *inp, unsigned char *out,
# size_t length, const AES_KEY *key, unsigned char *ivp,const int enc);
{
# stack frame layout
# -4(%esp) # return address 0(%esp)
@ -2029,7 +2028,7 @@ my $ivec=&DWP(60,"esp"); # ivec[16]
my $aes_key=&DWP(76,"esp"); # copy of aes_key
my $mark=&DWP(76+240,"esp"); # copy of aes_key->rounds
&function_begin("AES_cbc_encrypt");
&function_begin("aes_cbc_encrypt_internal");
&mov ($s2 eq "ecx"? $s2 : "",&wparam(2)); # load len
&cmp ($s2,0);
&je (&label("drop_out"));
@ -2617,7 +2616,7 @@ my $mark=&DWP(76+240,"esp"); # copy of aes_key->rounds
&mov ("esp",$_esp);
&popf ();
&function_end("AES_cbc_encrypt");
&function_end("aes_cbc_encrypt_internal");
}
#------------------------------------------------------------------#

View file

@ -1641,9 +1641,8 @@ $code.=<<___;
.size AES_set_decrypt_key,.-AES_set_decrypt_key
___
# void AES_cbc_encrypt (const void char *inp, unsigned char *out,
# size_t length, const AES_KEY *key,
# unsigned char *ivp,const int enc);
# void aes_cbc_encrypt_internal(const void char *inp, unsigned char *out,
# size_t length, const AES_KEY *key, unsigned char *ivp,const int enc);
{
# stack frame layout
# -8(%rsp) return address
@ -1660,15 +1659,15 @@ my $aes_key="80(%rsp)"; # copy of aes_key
my $mark="80+240(%rsp)"; # copy of aes_key->rounds
$code.=<<___;
.globl AES_cbc_encrypt
.type AES_cbc_encrypt,\@function,6
.globl aes_cbc_encrypt_internal
.type aes_cbc_encrypt_internal,\@function,6
.align 16
.extern OPENSSL_ia32cap_P
.hidden OPENSSL_ia32cap_P
.globl asm_AES_cbc_encrypt
.hidden asm_AES_cbc_encrypt
asm_AES_cbc_encrypt:
AES_cbc_encrypt:
aes_cbc_encrypt_internal:
_CET_ENDBR
cmp \$0,%rdx # check length
je .Lcbc_epilogue
@ -2118,7 +2117,7 @@ AES_cbc_encrypt:
popfq
.Lcbc_epilogue:
ret
.size AES_cbc_encrypt,.-AES_cbc_encrypt
.size aes_cbc_encrypt_internal,.-aes_cbc_encrypt_internal
___
}
@ -2799,9 +2798,9 @@ cbc_se_handler:
.rva .LSEH_end_AES_set_decrypt_key
.rva .LSEH_info_AES_set_decrypt_key
.rva .LSEH_begin_AES_cbc_encrypt
.rva .LSEH_end_AES_cbc_encrypt
.rva .LSEH_info_AES_cbc_encrypt
.rva .LSEH_begin_aes_cbc_encrypt_internal
.rva .LSEH_end_aes_cbc_encrypt_internal
.rva .LSEH_info_aes_cbc_encrypt_internal
.section .xdata
.align 8
@ -2821,7 +2820,7 @@ cbc_se_handler:
.byte 9,0,0,0
.rva key_se_handler
.rva .Ldec_key_prologue,.Ldec_key_epilogue # HandlerData[]
.LSEH_info_AES_cbc_encrypt:
.LSEH_info_aes_cbc_encrypt_internal:
.byte 9,0,0,0
.rva cbc_se_handler
___