sync with OpenBSD -current
This commit is contained in:
parent
cc5edceac3
commit
6278c437f5
76 changed files with 1108 additions and 2495 deletions
|
@ -2,6 +2,9 @@
|
|||
#
|
||||
# This file is for testing purposes only.
|
||||
|
||||
export LANG=en_US.UTF-8
|
||||
export LC_CTYPE=en_US.UTF-8
|
||||
|
||||
xset b 0 0 0
|
||||
|
||||
if [ -x /usr/local/bin/dbus-launch -a -z "${DBUS_SESSION_BUS_ADDRESS}" ]; then
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
# $OpenBSD: Makefile,v 1.183 2024/03/28 02:09:28 jsing Exp $
|
||||
# $OpenBSD: Makefile,v 1.185 2024/03/28 12:52:58 jsing Exp $
|
||||
|
||||
LIB= crypto
|
||||
LIBREBUILD=y
|
||||
|
@ -644,7 +644,6 @@ SRCS+= x_all.c
|
|||
${LCRYPTO_SRC}/engine \
|
||||
${LCRYPTO_SRC}/err \
|
||||
${LCRYPTO_SRC}/evp \
|
||||
${LCRYPTO_SRC}/gost \
|
||||
${LCRYPTO_SRC}/hkdf \
|
||||
${LCRYPTO_SRC}/hmac \
|
||||
${LCRYPTO_SRC}/idea \
|
||||
|
@ -790,7 +789,6 @@ obj_dat.h: obj_mac.h ${SSL_OBJECTS}/obj_dat.pl
|
|||
.else
|
||||
CFLAGS+=-DOPENSSL_NO_ASM
|
||||
SRCS+= aes_core.c
|
||||
SRCS+= aes_cbc.c
|
||||
SRCS+= camellia.c
|
||||
SRCS+= cmll_cbc.c
|
||||
SRCS+= cmll_misc.c
|
||||
|
|
|
@ -2542,3 +2542,45 @@ _libre_ENGINE_ctrl_cmd
|
|||
_libre_ENGINE_ctrl_cmd_string
|
||||
_libre_ENGINE_load_private_key
|
||||
_libre_ENGINE_load_public_key
|
||||
_libre_RC4_set_key
|
||||
_libre_RC4
|
||||
_libre_RIPEMD160_Init
|
||||
_libre_RIPEMD160_Update
|
||||
_libre_RIPEMD160_Final
|
||||
_libre_RIPEMD160
|
||||
_libre_RIPEMD160_Transform
|
||||
_libre_DES_ecb3_encrypt
|
||||
_libre_DES_cbc_cksum
|
||||
_libre_DES_cbc_encrypt
|
||||
_libre_DES_ncbc_encrypt
|
||||
_libre_DES_xcbc_encrypt
|
||||
_libre_DES_cfb_encrypt
|
||||
_libre_DES_ecb_encrypt
|
||||
_libre_DES_encrypt1
|
||||
_libre_DES_encrypt2
|
||||
_libre_DES_encrypt3
|
||||
_libre_DES_decrypt3
|
||||
_libre_DES_ede3_cbc_encrypt
|
||||
_libre_DES_ede3_cbcm_encrypt
|
||||
_libre_DES_ede3_cfb64_encrypt
|
||||
_libre_DES_ede3_cfb_encrypt
|
||||
_libre_DES_ede3_ofb64_encrypt
|
||||
_libre_DES_enc_read
|
||||
_libre_DES_enc_write
|
||||
_libre_DES_fcrypt
|
||||
_libre_DES_crypt
|
||||
_libre_DES_ofb_encrypt
|
||||
_libre_DES_pcbc_encrypt
|
||||
_libre_DES_quad_cksum
|
||||
_libre_DES_random_key
|
||||
_libre_DES_set_odd_parity
|
||||
_libre_DES_check_key_parity
|
||||
_libre_DES_is_weak_key
|
||||
_libre_DES_set_key
|
||||
_libre_DES_key_sched
|
||||
_libre_DES_set_key_checked
|
||||
_libre_DES_set_key_unchecked
|
||||
_libre_DES_string_to_key
|
||||
_libre_DES_string_to_2keys
|
||||
_libre_DES_cfb64_encrypt
|
||||
_libre_DES_ofb64_encrypt
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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");
|
||||
}
|
||||
|
||||
#------------------------------------------------------------------#
|
||||
|
|
|
@ -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
|
||||
___
|
||||
|
|
|
@ -1,9 +1,9 @@
|
|||
# $OpenBSD: Makefile.inc,v 1.9 2024/03/28 01:57:00 jsing Exp $
|
||||
# $OpenBSD: Makefile.inc,v 1.10 2024/03/28 12:52:58 jsing Exp $
|
||||
|
||||
# aarch64-specific libcrypto build rules
|
||||
|
||||
# aes
|
||||
SRCS+= aes_core.c aes_cbc.c
|
||||
SRCS+= aes_core.c
|
||||
# bn
|
||||
# camellia
|
||||
SRCS+= camellia.c cmll_cbc.c cmll_misc.c
|
||||
|
|
|
@ -5,9 +5,6 @@
|
|||
#define OPENSSLDIR "/etc/ssl"
|
||||
#endif
|
||||
|
||||
#undef OPENSSL_UNISTD
|
||||
#define OPENSSL_UNISTD <unistd.h>
|
||||
|
||||
#undef OPENSSL_EXPORT_VAR_AS_FUNCTION
|
||||
|
||||
#if defined(HEADER_IDEA_H) && !defined(IDEA_INT)
|
||||
|
|
|
@ -1,9 +1,9 @@
|
|||
# $OpenBSD: Makefile.inc,v 1.10 2024/03/28 01:57:00 jsing Exp $
|
||||
# $OpenBSD: Makefile.inc,v 1.11 2024/03/28 12:52:58 jsing Exp $
|
||||
|
||||
# alpha-specific libcrypto build rules
|
||||
|
||||
# aes
|
||||
SRCS+= aes_core.c aes_cbc.c
|
||||
SRCS+= aes_core.c
|
||||
# bn
|
||||
SSLASM+= bn alpha-mont
|
||||
CFLAGS+= -DOPENSSL_BN_ASM_MONT
|
||||
|
|
|
@ -5,9 +5,6 @@
|
|||
#define OPENSSLDIR "/etc/ssl"
|
||||
#endif
|
||||
|
||||
#undef OPENSSL_UNISTD
|
||||
#define OPENSSL_UNISTD <unistd.h>
|
||||
|
||||
#undef OPENSSL_EXPORT_VAR_AS_FUNCTION
|
||||
|
||||
#if defined(HEADER_IDEA_H) && !defined(IDEA_INT)
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
# $OpenBSD: Makefile.inc,v 1.18 2024/03/28 01:57:00 jsing Exp $
|
||||
# $OpenBSD: Makefile.inc,v 1.21 2024/03/29 01:24:07 jsing Exp $
|
||||
|
||||
# amd64-specific libcrypto build rules
|
||||
|
||||
|
@ -13,6 +13,7 @@ SSLASM+= aes bsaes-x86_64
|
|||
CFLAGS+= -DVPAES_ASM
|
||||
SSLASM+= aes vpaes-x86_64
|
||||
SSLASM+= aes aesni-x86_64
|
||||
CFLAGS+= -DHAVE_AES_CBC_ENCRYPT_INTERNAL
|
||||
# bn
|
||||
CFLAGS+= -DOPENSSL_IA32_SSE2
|
||||
CFLAGS+= -DRSA_ASM
|
||||
|
@ -66,8 +67,7 @@ sha512-x86_64.S: ${LCRYPTO_SRC}/sha/asm/sha512-x86_64.pl ${EXTRA_PL}
|
|||
cd ${LCRYPTO_SRC}/sha/asm ; \
|
||||
/usr/bin/perl ./sha512-x86_64.pl ${.OBJDIR}/${.TARGET}
|
||||
# whrlpool
|
||||
CFLAGS+= -DWHIRLPOOL_ASM
|
||||
SSLASM+= whrlpool wp-x86_64
|
||||
SRCS+= wp_block.c
|
||||
|
||||
.for dir f in ${SSLASM}
|
||||
SRCS+= ${f}.S
|
||||
|
|
|
@ -5,9 +5,6 @@
|
|||
#define OPENSSLDIR "/etc/ssl"
|
||||
#endif
|
||||
|
||||
#undef OPENSSL_UNISTD
|
||||
#define OPENSSL_UNISTD <unistd.h>
|
||||
|
||||
#undef OPENSSL_EXPORT_VAR_AS_FUNCTION
|
||||
|
||||
#if defined(HEADER_IDEA_H) && !defined(IDEA_INT)
|
||||
|
|
|
@ -3,7 +3,6 @@
|
|||
# arm-specific libcrypto build rules
|
||||
|
||||
# aes
|
||||
SRCS+= aes_cbc.c
|
||||
CFLAGS+= -DAES_ASM
|
||||
SSLASM+= aes aes-armv4
|
||||
# bn
|
||||
|
|
|
@ -5,9 +5,6 @@
|
|||
#define OPENSSLDIR "/etc/ssl"
|
||||
#endif
|
||||
|
||||
#undef OPENSSL_UNISTD
|
||||
#define OPENSSL_UNISTD <unistd.h>
|
||||
|
||||
#undef OPENSSL_EXPORT_VAR_AS_FUNCTION
|
||||
|
||||
#if defined(HEADER_IDEA_H) && !defined(IDEA_INT)
|
||||
|
|
|
@ -1,9 +1,9 @@
|
|||
# $OpenBSD: Makefile.inc,v 1.19 2024/03/28 01:57:00 jsing Exp $
|
||||
# $OpenBSD: Makefile.inc,v 1.20 2024/03/28 12:52:58 jsing Exp $
|
||||
|
||||
# hppa-specific libcrypto build rules
|
||||
|
||||
# aes
|
||||
SRCS+= aes_core.c aes_cbc.c
|
||||
SRCS+= aes_core.c
|
||||
CFLAGS+= -DAES_ASM
|
||||
SSLASM+= aes aes-parisc aes-parisc
|
||||
# bn
|
||||
|
|
|
@ -5,9 +5,6 @@
|
|||
#define OPENSSLDIR "/etc/ssl"
|
||||
#endif
|
||||
|
||||
#undef OPENSSL_UNISTD
|
||||
#define OPENSSL_UNISTD <unistd.h>
|
||||
|
||||
#undef OPENSSL_EXPORT_VAR_AS_FUNCTION
|
||||
|
||||
#if defined(HEADER_IDEA_H) && !defined(IDEA_INT)
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
# $OpenBSD: Makefile.inc,v 1.15 2024/03/28 01:57:00 jsing Exp $
|
||||
# $OpenBSD: Makefile.inc,v 1.18 2024/03/29 01:24:07 jsing Exp $
|
||||
|
||||
# i386-specific libcrypto build rules
|
||||
|
||||
|
@ -11,6 +11,7 @@ SSLASM+= aes aes-586
|
|||
CFLAGS+= -DVPAES_ASM
|
||||
SSLASM+= aes vpaes-x86
|
||||
SSLASM+= aes aesni-x86
|
||||
CFLAGS+= -DHAVE_AES_CBC_ENCRYPT_INTERNAL
|
||||
# bn
|
||||
CFLAGS+= -DOPENSSL_IA32_SSE2
|
||||
SSLASM+= bn bn-586
|
||||
|
@ -38,8 +39,6 @@ CFLAGS+= -DSHA512_ASM
|
|||
SSLASM+= sha sha512-586
|
||||
# whrlpool
|
||||
SRCS+= wp_block.c
|
||||
CFLAGS+= -DWHIRLPOOL_ASM
|
||||
SSLASM+= whrlpool wp-mmx
|
||||
|
||||
.for dir f in ${SSLASM}
|
||||
SRCS+= ${f}.S
|
||||
|
|
|
@ -5,9 +5,6 @@
|
|||
#define OPENSSLDIR "/etc/ssl"
|
||||
#endif
|
||||
|
||||
#undef OPENSSL_UNISTD
|
||||
#define OPENSSL_UNISTD <unistd.h>
|
||||
|
||||
#undef OPENSSL_EXPORT_VAR_AS_FUNCTION
|
||||
|
||||
#if defined(HEADER_IDEA_H) && !defined(IDEA_INT)
|
||||
|
|
|
@ -5,9 +5,6 @@
|
|||
#define OPENSSLDIR "/etc/ssl"
|
||||
#endif
|
||||
|
||||
#undef OPENSSL_UNISTD
|
||||
#define OPENSSL_UNISTD <unistd.h>
|
||||
|
||||
#undef OPENSSL_EXPORT_VAR_AS_FUNCTION
|
||||
|
||||
#if defined(HEADER_IDEA_H) && !defined(IDEA_INT)
|
||||
|
|
|
@ -1,9 +1,8 @@
|
|||
# $OpenBSD: Makefile.inc,v 1.11 2024/03/28 01:57:00 jsing Exp $
|
||||
# $OpenBSD: Makefile.inc,v 1.12 2024/03/28 12:52:58 jsing Exp $
|
||||
|
||||
# mips64-specific libcrypto build rules
|
||||
|
||||
# aes
|
||||
SRCS+= aes_cbc.c
|
||||
CFLAGS+= -DAES_ASM
|
||||
SSLASM+= aes aes-mips aes-mips
|
||||
# bn
|
||||
|
|
|
@ -5,9 +5,6 @@
|
|||
#define OPENSSLDIR "/etc/ssl"
|
||||
#endif
|
||||
|
||||
#undef OPENSSL_UNISTD
|
||||
#define OPENSSL_UNISTD <unistd.h>
|
||||
|
||||
#undef OPENSSL_EXPORT_VAR_AS_FUNCTION
|
||||
|
||||
#if defined(HEADER_IDEA_H) && !defined(IDEA_INT)
|
||||
|
|
|
@ -1,9 +1,9 @@
|
|||
# $OpenBSD: Makefile.inc,v 1.8 2024/03/28 01:57:00 jsing Exp $
|
||||
# $OpenBSD: Makefile.inc,v 1.9 2024/03/28 12:52:58 jsing Exp $
|
||||
|
||||
# powerpc-specific libcrypto build rules
|
||||
|
||||
# aes
|
||||
SRCS+= aes_core.c aes_cbc.c
|
||||
SRCS+= aes_core.c
|
||||
# slower than C code
|
||||
#CFLAGS+= -DAES_ASM
|
||||
#SSLASM+= aes aes-ppc aes-ppc
|
||||
|
|
|
@ -5,9 +5,6 @@
|
|||
#define OPENSSLDIR "/etc/ssl"
|
||||
#endif
|
||||
|
||||
#undef OPENSSL_UNISTD
|
||||
#define OPENSSL_UNISTD <unistd.h>
|
||||
|
||||
#undef OPENSSL_EXPORT_VAR_AS_FUNCTION
|
||||
|
||||
#if defined(HEADER_IDEA_H) && !defined(IDEA_INT)
|
||||
|
|
|
@ -1,9 +1,9 @@
|
|||
# $OpenBSD: Makefile.inc,v 1.10 2024/03/28 01:57:00 jsing Exp $
|
||||
# $OpenBSD: Makefile.inc,v 1.11 2024/03/28 12:52:58 jsing Exp $
|
||||
|
||||
# powerpc-specific libcrypto build rules
|
||||
|
||||
# aes
|
||||
SRCS+= aes_core.c aes_cbc.c
|
||||
SRCS+= aes_core.c
|
||||
# slower than C code
|
||||
#CFLAGS+= -DAES_ASM
|
||||
#SSLASM+= aes aes-ppc aes-ppc
|
||||
|
|
|
@ -5,9 +5,6 @@
|
|||
#define OPENSSLDIR "/etc/ssl"
|
||||
#endif
|
||||
|
||||
#undef OPENSSL_UNISTD
|
||||
#define OPENSSL_UNISTD <unistd.h>
|
||||
|
||||
#undef OPENSSL_EXPORT_VAR_AS_FUNCTION
|
||||
|
||||
#if defined(HEADER_IDEA_H) && !defined(IDEA_INT)
|
||||
|
|
|
@ -1,10 +1,9 @@
|
|||
# $OpenBSD: Makefile.inc,v 1.6 2024/03/28 01:57:00 jsing Exp $
|
||||
# $OpenBSD: Makefile.inc,v 1.7 2024/03/28 12:52:58 jsing Exp $
|
||||
|
||||
# riscv64 libcrypto build rules
|
||||
|
||||
# aes
|
||||
SRCS+= aes_core.c
|
||||
SRCS+= aes_cbc.c
|
||||
|
||||
# camellia
|
||||
SRCS+= camellia.c
|
||||
|
|
|
@ -5,9 +5,6 @@
|
|||
#define OPENSSLDIR "/etc/ssl"
|
||||
#endif
|
||||
|
||||
#undef OPENSSL_UNISTD
|
||||
#define OPENSSL_UNISTD <unistd.h>
|
||||
|
||||
#undef OPENSSL_EXPORT_VAR_AS_FUNCTION
|
||||
|
||||
#if defined(HEADER_IDEA_H) && !defined(IDEA_INT)
|
||||
|
|
|
@ -5,9 +5,6 @@
|
|||
#define OPENSSLDIR "/etc/ssl"
|
||||
#endif
|
||||
|
||||
#undef OPENSSL_UNISTD
|
||||
#define OPENSSL_UNISTD <unistd.h>
|
||||
|
||||
#undef OPENSSL_EXPORT_VAR_AS_FUNCTION
|
||||
|
||||
#if defined(HEADER_IDEA_H) && !defined(IDEA_INT)
|
||||
|
|
|
@ -1,9 +1,9 @@
|
|||
# $OpenBSD: Makefile.inc,v 1.13 2024/03/28 01:57:00 jsing Exp $
|
||||
# $OpenBSD: Makefile.inc,v 1.14 2024/03/28 12:52:58 jsing Exp $
|
||||
|
||||
# sparc64-specific libcrypto build rules
|
||||
|
||||
# aes
|
||||
SRCS+= aes_core.c aes_cbc.c
|
||||
SRCS+= aes_core.c
|
||||
CFLAGS+= -DAES_ASM
|
||||
SSLASM+= aes aes-sparcv9 aes-sparcv9
|
||||
# bn
|
||||
|
|
|
@ -5,9 +5,6 @@
|
|||
#define OPENSSLDIR "/etc/ssl"
|
||||
#endif
|
||||
|
||||
#undef OPENSSL_UNISTD
|
||||
#define OPENSSL_UNISTD <unistd.h>
|
||||
|
||||
#undef OPENSSL_EXPORT_VAR_AS_FUNCTION
|
||||
|
||||
#if defined(HEADER_IDEA_H) && !defined(IDEA_INT)
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
/* $OpenBSD: crypto_internal.h,v 1.8 2024/03/26 04:11:42 jsing Exp $ */
|
||||
/* $OpenBSD: crypto_internal.h,v 1.9 2024/03/28 08:36:13 jsing Exp $ */
|
||||
/*
|
||||
* Copyright (c) 2023 Joel Sing <jsing@openbsd.org>
|
||||
*
|
||||
|
@ -17,6 +17,7 @@
|
|||
|
||||
#include <endian.h>
|
||||
#include <stddef.h>
|
||||
#include <stdint.h>
|
||||
#include <string.h>
|
||||
|
||||
#ifndef HEADER_CRYPTO_INTERNAL_H
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
/* $OpenBSD: cbc_cksm.c,v 1.10 2023/07/08 07:34:34 jsing Exp $ */
|
||||
/* $OpenBSD: cbc_cksm.c,v 1.11 2024/03/29 01:47:29 joshua Exp $ */
|
||||
/* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com)
|
||||
* All rights reserved.
|
||||
*
|
||||
|
@ -103,3 +103,4 @@ DES_cbc_cksum(const unsigned char *in, DES_cblock *output,
|
|||
((tout1 << 24L) & 0xFF000000);
|
||||
return (tout1);
|
||||
}
|
||||
LCRYPTO_ALIAS(DES_cbc_cksum);
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
/* $OpenBSD: cfb64ede.c,v 1.12 2023/07/08 07:34:34 jsing Exp $ */
|
||||
/* $OpenBSD: cfb64ede.c,v 1.13 2024/03/29 01:47:29 joshua Exp $ */
|
||||
/* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com)
|
||||
* All rights reserved.
|
||||
*
|
||||
|
@ -125,6 +125,7 @@ DES_ede3_cfb64_encrypt(const unsigned char *in, unsigned char *out,
|
|||
v0 = v1 = ti[0] = ti[1] = c = cc = 0;
|
||||
*num = n;
|
||||
}
|
||||
LCRYPTO_ALIAS(DES_ede3_cfb64_encrypt);
|
||||
|
||||
/* This is compatible with the single key CFB-r for DES, even thought that's
|
||||
* not what EVP needs.
|
||||
|
@ -238,3 +239,4 @@ DES_ede3_cfb_encrypt(const unsigned char *in, unsigned char *out,
|
|||
l2c(v1, iv);
|
||||
v0 = v1 = d0 = d1 = ti[0] = ti[1] = 0;
|
||||
}
|
||||
LCRYPTO_ALIAS(DES_ede3_cfb_encrypt);
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
/* $OpenBSD: cfb64enc.c,v 1.8 2023/07/08 07:11:07 beck Exp $ */
|
||||
/* $OpenBSD: cfb64enc.c,v 1.9 2024/03/29 01:47:29 joshua Exp $ */
|
||||
/* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com)
|
||||
* All rights reserved.
|
||||
*
|
||||
|
@ -120,3 +120,4 @@ DES_cfb64_encrypt(const unsigned char *in, unsigned char *out,
|
|||
v0 = v1 = ti[0] = ti[1] = c = cc = 0;
|
||||
*num = n;
|
||||
}
|
||||
LCRYPTO_ALIAS(DES_cfb64_encrypt);
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
/* $OpenBSD: cfb_enc.c,v 1.16 2023/07/08 07:11:07 beck Exp $ */
|
||||
/* $OpenBSD: cfb_enc.c,v 1.17 2024/03/29 01:47:29 joshua Exp $ */
|
||||
/* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com)
|
||||
* All rights reserved.
|
||||
*
|
||||
|
@ -187,3 +187,4 @@ DES_cfb_encrypt(const unsigned char *in, unsigned char *out, int numbits,
|
|||
l2c(v1, iv);
|
||||
v0 = v1 = d0 = d1 = ti[0] = ti[1] = 0;
|
||||
}
|
||||
LCRYPTO_ALIAS(DES_cfb_encrypt);
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
/* $OpenBSD: des_enc.c,v 1.15 2023/07/08 07:34:34 jsing Exp $ */
|
||||
/* $OpenBSD: des_enc.c,v 1.16 2024/03/29 01:47:29 joshua Exp $ */
|
||||
/* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com)
|
||||
* All rights reserved.
|
||||
*
|
||||
|
@ -150,6 +150,7 @@ DES_encrypt1(DES_LONG *data, DES_key_schedule *ks, int enc)
|
|||
data[1] = r;
|
||||
l = r = t = u = 0;
|
||||
}
|
||||
LCRYPTO_ALIAS(DES_encrypt1);
|
||||
|
||||
void
|
||||
DES_encrypt2(DES_LONG *data, DES_key_schedule *ks, int enc)
|
||||
|
@ -233,6 +234,7 @@ DES_encrypt2(DES_LONG *data, DES_key_schedule *ks, int enc)
|
|||
data[1] = ROTATE(r, 3) & 0xffffffffL;
|
||||
l = r = t = u = 0;
|
||||
}
|
||||
LCRYPTO_ALIAS(DES_encrypt2);
|
||||
|
||||
#endif /* OPENBSD_DES_ASM */
|
||||
|
||||
|
@ -256,6 +258,7 @@ DES_encrypt3(DES_LONG *data, DES_key_schedule *ks1,
|
|||
data[0] = l;
|
||||
data[1] = r;
|
||||
}
|
||||
LCRYPTO_ALIAS(DES_encrypt3);
|
||||
|
||||
void
|
||||
DES_decrypt3(DES_LONG *data, DES_key_schedule *ks1,
|
||||
|
@ -277,6 +280,7 @@ DES_decrypt3(DES_LONG *data, DES_key_schedule *ks1,
|
|||
data[0] = l;
|
||||
data[1] = r;
|
||||
}
|
||||
LCRYPTO_ALIAS(DES_decrypt3);
|
||||
|
||||
#ifndef DES_DEFAULT_OPTIONS
|
||||
|
||||
|
@ -388,5 +392,6 @@ DES_ede3_cbc_encrypt(const unsigned char *input, unsigned char *output,
|
|||
tin0 = tin1 = tout0 = tout1 = xor0 = xor1 = 0;
|
||||
tin[0] = tin[1] = 0;
|
||||
}
|
||||
LCRYPTO_ALIAS(DES_ede3_cbc_encrypt);
|
||||
|
||||
#endif /* DES_DEFAULT_OPTIONS */
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
/* $OpenBSD: ecb3_enc.c,v 1.9 2023/07/08 07:11:07 beck Exp $ */
|
||||
/* $OpenBSD: ecb3_enc.c,v 1.10 2024/03/29 01:47:29 joshua Exp $ */
|
||||
/* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com)
|
||||
* All rights reserved.
|
||||
*
|
||||
|
@ -82,3 +82,4 @@ DES_ecb3_encrypt(const_DES_cblock *input, DES_cblock *output,
|
|||
l2c(l0, out);
|
||||
l2c(l1, out);
|
||||
}
|
||||
LCRYPTO_ALIAS(DES_ecb3_encrypt);
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
/* $OpenBSD: ecb_enc.c,v 1.19 2023/07/31 05:04:06 tb Exp $ */
|
||||
/* $OpenBSD: ecb_enc.c,v 1.20 2024/03/29 01:47:29 joshua Exp $ */
|
||||
/* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com)
|
||||
* All rights reserved.
|
||||
*
|
||||
|
@ -80,3 +80,4 @@ DES_ecb_encrypt(const_DES_cblock *input, DES_cblock *output,
|
|||
l2c(l, out);
|
||||
l = ll[0] = ll[1] = 0;
|
||||
}
|
||||
LCRYPTO_ALIAS(DES_ecb_encrypt);
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
/* $OpenBSD: ede_cbcm_enc.c,v 1.9 2023/07/08 07:34:34 jsing Exp $ */
|
||||
/* $OpenBSD: ede_cbcm_enc.c,v 1.10 2024/03/29 01:47:29 joshua Exp $ */
|
||||
/* Written by Ben Laurie <ben@algroup.co.uk> for the OpenSSL
|
||||
* project 13 Feb 1999.
|
||||
*/
|
||||
|
@ -186,4 +186,5 @@ DES_ede3_cbcm_encrypt(const unsigned char *in, unsigned char *out,
|
|||
tin0 = tin1 = tout0 = tout1 = xor0 = xor1 = 0;
|
||||
tin[0] = tin[1] = 0;
|
||||
}
|
||||
LCRYPTO_ALIAS(DES_ede3_cbcm_encrypt);
|
||||
#endif
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
/* $OpenBSD: enc_read.c,v 1.17 2023/07/08 07:11:07 beck Exp $ */
|
||||
/* $OpenBSD: enc_read.c,v 1.18 2024/03/29 01:47:29 joshua Exp $ */
|
||||
/* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com)
|
||||
* All rights reserved.
|
||||
*
|
||||
|
@ -220,3 +220,4 @@ DES_enc_read(int fd, void *buf, int len, DES_key_schedule *sched,
|
|||
}
|
||||
return num;
|
||||
}
|
||||
LCRYPTO_ALIAS(DES_enc_read);
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
/* $OpenBSD: enc_writ.c,v 1.17 2023/07/08 07:34:34 jsing Exp $ */
|
||||
/* $OpenBSD: enc_writ.c,v 1.18 2024/03/29 01:47:29 joshua Exp $ */
|
||||
/* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com)
|
||||
* All rights reserved.
|
||||
*
|
||||
|
@ -165,3 +165,4 @@ DES_enc_write(int fd, const void *_buf, int len,
|
|||
|
||||
return (len);
|
||||
}
|
||||
LCRYPTO_ALIAS(DES_enc_write);
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
/* $OpenBSD: fcrypt.c,v 1.15 2023/07/08 07:34:34 jsing Exp $ */
|
||||
/* $OpenBSD: fcrypt.c,v 1.16 2024/03/29 01:47:29 joshua Exp $ */
|
||||
|
||||
#include <stdio.h>
|
||||
|
||||
|
@ -58,6 +58,7 @@ DES_crypt(const char *buf, const char *salt)
|
|||
|
||||
return (DES_fcrypt(buf, salt, buff));
|
||||
}
|
||||
LCRYPTO_ALIAS(DES_crypt);
|
||||
|
||||
char *
|
||||
DES_fcrypt(const char *buf, const char *salt, char *ret)
|
||||
|
@ -123,3 +124,4 @@ r=(r+7)/8;
|
|||
ret[13] = '\0';
|
||||
return (ret);
|
||||
}
|
||||
LCRYPTO_ALIAS(DES_fcrypt);
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
/* $OpenBSD: ncbc_enc.c,v 1.10 2023/07/08 07:34:34 jsing Exp $ */
|
||||
/* $OpenBSD: ncbc_enc.c,v 1.11 2024/03/29 01:47:29 joshua Exp $ */
|
||||
/*
|
||||
* #included by:
|
||||
* cbc_enc.c (DES_cbc_encrypt)
|
||||
|
@ -153,3 +153,8 @@ DES_ncbc_encrypt(const unsigned char *in, unsigned char *out, long length,
|
|||
tin0 = tin1 = tout0 = tout1 = xor0 = xor1 = 0;
|
||||
tin[0] = tin[1] = 0;
|
||||
}
|
||||
#ifdef CBC_ENC_C__DONT_UPDATE_IV
|
||||
LCRYPTO_ALIAS(DES_cbc_encrypt);
|
||||
#else
|
||||
LCRYPTO_ALIAS(DES_ncbc_encrypt);
|
||||
#endif
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
/* $OpenBSD: ofb64ede.c,v 1.8 2023/07/08 07:11:07 beck Exp $ */
|
||||
/* $OpenBSD: ofb64ede.c,v 1.9 2024/03/29 01:47:29 joshua Exp $ */
|
||||
/* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com)
|
||||
* All rights reserved.
|
||||
*
|
||||
|
@ -110,3 +110,4 @@ DES_ede3_ofb64_encrypt(const unsigned char *in,
|
|||
v0 = v1 = ti[0] = ti[1] = 0;
|
||||
*num = n;
|
||||
}
|
||||
LCRYPTO_ALIAS(DES_ede3_ofb64_encrypt);
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
/* $OpenBSD: ofb64enc.c,v 1.8 2023/07/08 07:11:07 beck Exp $ */
|
||||
/* $OpenBSD: ofb64enc.c,v 1.9 2024/03/29 01:47:29 joshua Exp $ */
|
||||
/* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com)
|
||||
* All rights reserved.
|
||||
*
|
||||
|
@ -107,3 +107,4 @@ DES_ofb64_encrypt(const unsigned char *in,
|
|||
t = v0 = v1 = ti[0] = ti[1] = 0;
|
||||
*num = n;
|
||||
}
|
||||
LCRYPTO_ALIAS(DES_ofb64_encrypt);
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
/* $OpenBSD: ofb_enc.c,v 1.8 2023/07/08 07:11:07 beck Exp $ */
|
||||
/* $OpenBSD: ofb_enc.c,v 1.9 2024/03/29 01:47:29 joshua Exp $ */
|
||||
/* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com)
|
||||
* All rights reserved.
|
||||
*
|
||||
|
@ -131,3 +131,4 @@ DES_ofb_encrypt(const unsigned char *in, unsigned char *out, int numbits,
|
|||
l2c(v1, iv);
|
||||
v0 = v1 = d0 = d1 = ti[0] = ti[1] = vv0 = vv1 = 0;
|
||||
}
|
||||
LCRYPTO_ALIAS(DES_ofb_encrypt);
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
/* $OpenBSD: pcbc_enc.c,v 1.9 2023/07/08 07:34:34 jsing Exp $ */
|
||||
/* $OpenBSD: pcbc_enc.c,v 1.10 2024/03/29 01:47:29 joshua Exp $ */
|
||||
/* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com)
|
||||
* All rights reserved.
|
||||
*
|
||||
|
@ -114,3 +114,4 @@ DES_pcbc_encrypt(const unsigned char *input, unsigned char *output,
|
|||
tin[0] = tin[1] = 0;
|
||||
sin0 = sin1 = xor0 = xor1 = tout0 = tout1 = 0;
|
||||
}
|
||||
LCRYPTO_ALIAS(DES_pcbc_encrypt);
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
/* $OpenBSD: qud_cksm.c,v 1.10 2023/07/08 07:34:34 jsing Exp $ */
|
||||
/* $OpenBSD: qud_cksm.c,v 1.11 2024/03/29 01:47:29 joshua Exp $ */
|
||||
/* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com)
|
||||
* All rights reserved.
|
||||
*
|
||||
|
@ -123,3 +123,4 @@ DES_quad_cksum(const unsigned char *input, DES_cblock output[],
|
|||
}
|
||||
return (z0);
|
||||
}
|
||||
LCRYPTO_ALIAS(DES_quad_cksum);
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
/* $OpenBSD: set_key.c,v 1.26 2023/12/20 06:30:04 tb Exp $ */
|
||||
/* $OpenBSD: set_key.c,v 1.27 2024/03/29 01:47:29 joshua Exp $ */
|
||||
/* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com)
|
||||
* All rights reserved.
|
||||
*
|
||||
|
@ -91,6 +91,7 @@ DES_set_odd_parity(DES_cblock *key)
|
|||
for (i = 0; i < DES_KEY_SZ; i++)
|
||||
(*key)[i] = odd_parity[(*key)[i]];
|
||||
}
|
||||
LCRYPTO_ALIAS(DES_set_odd_parity);
|
||||
|
||||
int
|
||||
DES_check_key_parity(const_DES_cblock *key)
|
||||
|
@ -103,6 +104,7 @@ DES_check_key_parity(const_DES_cblock *key)
|
|||
}
|
||||
return (1);
|
||||
}
|
||||
LCRYPTO_ALIAS(DES_check_key_parity);
|
||||
|
||||
/* Weak and semi weak keys as taken from
|
||||
* %A D.W. Davies
|
||||
|
@ -145,6 +147,7 @@ DES_is_weak_key(const_DES_cblock *key)
|
|||
return 1;
|
||||
return 0;
|
||||
}
|
||||
LCRYPTO_ALIAS(DES_is_weak_key);
|
||||
|
||||
/* NOW DEFINED IN des_local.h
|
||||
* See ecb_encrypt.c for a pseudo description of these macros.
|
||||
|
@ -314,6 +317,7 @@ DES_set_key(const_DES_cblock *key, DES_key_schedule *schedule)
|
|||
return 0;
|
||||
}
|
||||
}
|
||||
LCRYPTO_ALIAS(DES_set_key);
|
||||
|
||||
/* return 0 if key parity is odd (correct),
|
||||
* return -1 if key parity error,
|
||||
|
@ -329,6 +333,7 @@ DES_set_key_checked(const_DES_cblock *key, DES_key_schedule *schedule)
|
|||
DES_set_key_unchecked(key, schedule);
|
||||
return 0;
|
||||
}
|
||||
LCRYPTO_ALIAS(DES_set_key_checked);
|
||||
|
||||
void
|
||||
DES_set_key_unchecked(const_DES_cblock *key, DES_key_schedule *schedule)
|
||||
|
@ -388,12 +393,14 @@ DES_set_key_unchecked(const_DES_cblock *key, DES_key_schedule *schedule)
|
|||
*(k++) = ROTATE(t2, 26) & 0xffffffffL;
|
||||
}
|
||||
}
|
||||
LCRYPTO_ALIAS(DES_set_key_unchecked);
|
||||
|
||||
int
|
||||
DES_key_sched(const_DES_cblock *key, DES_key_schedule *schedule)
|
||||
{
|
||||
return (DES_set_key(key, schedule));
|
||||
}
|
||||
LCRYPTO_ALIAS(DES_key_sched);
|
||||
|
||||
int
|
||||
DES_random_key(DES_cblock *ret)
|
||||
|
@ -404,3 +411,4 @@ DES_random_key(DES_cblock *ret)
|
|||
} while (DES_is_weak_key(ret));
|
||||
return (1);
|
||||
}
|
||||
LCRYPTO_ALIAS(DES_random_key);
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
/* $OpenBSD: str2key.c,v 1.13 2023/07/08 07:34:34 jsing Exp $ */
|
||||
/* $OpenBSD: str2key.c,v 1.14 2024/03/29 01:47:29 joshua Exp $ */
|
||||
/* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com)
|
||||
* All rights reserved.
|
||||
*
|
||||
|
@ -97,6 +97,7 @@ DES_string_to_key(const char *str, DES_cblock *key)
|
|||
explicit_bzero(&ks, sizeof(ks));
|
||||
DES_set_odd_parity(key);
|
||||
}
|
||||
LCRYPTO_ALIAS(DES_string_to_key);
|
||||
|
||||
void
|
||||
DES_string_to_2keys(const char *str, DES_cblock *key1, DES_cblock *key2)
|
||||
|
@ -164,3 +165,4 @@ DES_string_to_2keys(const char *str, DES_cblock *key1, DES_cblock *key2)
|
|||
DES_set_odd_parity(key1);
|
||||
DES_set_odd_parity(key2);
|
||||
}
|
||||
LCRYPTO_ALIAS(DES_string_to_2keys);
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
/* $OpenBSD: xcbc_enc.c,v 1.12 2023/07/08 07:34:34 jsing Exp $ */
|
||||
/* $OpenBSD: xcbc_enc.c,v 1.13 2024/03/29 01:47:29 joshua Exp $ */
|
||||
/* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com)
|
||||
* All rights reserved.
|
||||
*
|
||||
|
@ -151,3 +151,4 @@ DES_xcbc_encrypt(const unsigned char *in, unsigned char *out,
|
|||
inW0 = inW1 = outW0 = outW1 = 0;
|
||||
tin[0] = tin[1] = 0;
|
||||
}
|
||||
LCRYPTO_ALIAS(DES_xcbc_encrypt);
|
||||
|
|
64
lib/libcrypto/hidden/openssl/des.h
Normal file
64
lib/libcrypto/hidden/openssl/des.h
Normal file
|
@ -0,0 +1,64 @@
|
|||
/* $OpenBSD: des.h,v 1.1 2024/03/29 01:47:29 joshua Exp $ */
|
||||
/*
|
||||
* Copyright (c) 2024 Joshua Sing <joshua@joshuasing.dev>
|
||||
*
|
||||
* Permission to use, copy, modify, and distribute this software for any
|
||||
* purpose with or without fee is hereby granted, provided that the above
|
||||
* copyright notice and this permission notice appear in all copies.
|
||||
*
|
||||
* THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
|
||||
* WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
|
||||
* MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
|
||||
* ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
|
||||
* WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
|
||||
* ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
|
||||
* OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
|
||||
*/
|
||||
|
||||
#ifndef _LIBCRYPTO_DES_H
|
||||
#define _LIBCRYPTO_DES_H
|
||||
|
||||
#ifndef _MSC_VER
|
||||
#include_next <openssl/des.h>
|
||||
#else
|
||||
#include "../include/openssl/des.h"
|
||||
#endif
|
||||
#include "crypto_namespace.h"
|
||||
|
||||
LCRYPTO_USED(DES_ecb3_encrypt);
|
||||
LCRYPTO_USED(DES_cbc_cksum);
|
||||
LCRYPTO_USED(DES_cbc_encrypt);
|
||||
LCRYPTO_USED(DES_ncbc_encrypt);
|
||||
LCRYPTO_USED(DES_xcbc_encrypt);
|
||||
LCRYPTO_USED(DES_cfb_encrypt);
|
||||
LCRYPTO_USED(DES_ecb_encrypt);
|
||||
LCRYPTO_USED(DES_encrypt1);
|
||||
LCRYPTO_USED(DES_encrypt2);
|
||||
LCRYPTO_USED(DES_encrypt3);
|
||||
LCRYPTO_USED(DES_decrypt3);
|
||||
LCRYPTO_USED(DES_ede3_cbc_encrypt);
|
||||
LCRYPTO_USED(DES_ede3_cbcm_encrypt);
|
||||
LCRYPTO_USED(DES_ede3_cfb64_encrypt);
|
||||
LCRYPTO_USED(DES_ede3_cfb_encrypt);
|
||||
LCRYPTO_USED(DES_ede3_ofb64_encrypt);
|
||||
LCRYPTO_USED(DES_enc_read);
|
||||
LCRYPTO_USED(DES_enc_write);
|
||||
LCRYPTO_USED(DES_fcrypt);
|
||||
LCRYPTO_USED(DES_crypt);
|
||||
LCRYPTO_USED(DES_ofb_encrypt);
|
||||
LCRYPTO_USED(DES_pcbc_encrypt);
|
||||
LCRYPTO_USED(DES_quad_cksum);
|
||||
LCRYPTO_USED(DES_random_key);
|
||||
LCRYPTO_USED(DES_set_odd_parity);
|
||||
LCRYPTO_USED(DES_check_key_parity);
|
||||
LCRYPTO_USED(DES_is_weak_key);
|
||||
LCRYPTO_USED(DES_set_key);
|
||||
LCRYPTO_USED(DES_key_sched);
|
||||
LCRYPTO_USED(DES_set_key_checked);
|
||||
LCRYPTO_USED(DES_set_key_unchecked);
|
||||
LCRYPTO_USED(DES_string_to_key);
|
||||
LCRYPTO_USED(DES_string_to_2keys);
|
||||
LCRYPTO_USED(DES_cfb64_encrypt);
|
||||
LCRYPTO_USED(DES_ofb64_encrypt);
|
||||
|
||||
#endif /* _LIBCRYPTO_DES_H */
|
31
lib/libcrypto/hidden/openssl/rc4.h
Normal file
31
lib/libcrypto/hidden/openssl/rc4.h
Normal file
|
@ -0,0 +1,31 @@
|
|||
/* $OpenBSD: rc4.h,v 1.1 2024/03/28 08:18:13 joshua Exp $ */
|
||||
/*
|
||||
* Copyright (c) 2024 Joshua Sing <joshua@joshuasing.dev>
|
||||
*
|
||||
* Permission to use, copy, modify, and distribute this software for any
|
||||
* purpose with or without fee is hereby granted, provided that the above
|
||||
* copyright notice and this permission notice appear in all copies.
|
||||
*
|
||||
* THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
|
||||
* WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
|
||||
* MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
|
||||
* ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
|
||||
* WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
|
||||
* ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
|
||||
* OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
|
||||
*/
|
||||
|
||||
#ifndef _LIBCRYPTO_RC4_H
|
||||
#define _LIBCRYPTO_RC4_H
|
||||
|
||||
#ifndef _MSC_VER
|
||||
#include_next <openssl/rc4.h>
|
||||
#else
|
||||
#include "../include/openssl/rc4.h"
|
||||
#endif
|
||||
#include "crypto_namespace.h"
|
||||
|
||||
LCRYPTO_USED(RC4_set_key);
|
||||
LCRYPTO_USED(RC4);
|
||||
|
||||
#endif /* _LIBCRYPTO_RC4_H */
|
34
lib/libcrypto/hidden/openssl/ripemd.h
Normal file
34
lib/libcrypto/hidden/openssl/ripemd.h
Normal file
|
@ -0,0 +1,34 @@
|
|||
/* $OpenBSD: ripemd.h,v 1.1 2024/03/28 23:54:15 joshua Exp $ */
|
||||
/*
|
||||
* Copyright (c) 2024 Joshua Sing <joshua@joshuasing.dev>
|
||||
*
|
||||
* Permission to use, copy, modify, and distribute this software for any
|
||||
* purpose with or without fee is hereby granted, provided that the above
|
||||
* copyright notice and this permission notice appear in all copies.
|
||||
*
|
||||
* THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
|
||||
* WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
|
||||
* MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
|
||||
* ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
|
||||
* WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
|
||||
* ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
|
||||
* OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
|
||||
*/
|
||||
|
||||
#ifndef _LIBCRYPTO_RIPEMD_H
|
||||
#define _LIBCRYPTO_RIPEMD_H
|
||||
|
||||
#ifndef _MSC_VER
|
||||
#include_next <openssl/ripemd.h>
|
||||
#else
|
||||
#include "../include/openssl/ripemd.h"
|
||||
#endif
|
||||
#include "crypto_namespace.h"
|
||||
|
||||
LCRYPTO_USED(RIPEMD160_Init);
|
||||
LCRYPTO_USED(RIPEMD160_Update);
|
||||
LCRYPTO_USED(RIPEMD160_Final);
|
||||
LCRYPTO_USED(RIPEMD160);
|
||||
LCRYPTO_USED(RIPEMD160_Transform);
|
||||
|
||||
#endif /* _LIBCRYPTO_RIPEMD_H */
|
|
@ -1,309 +0,0 @@
|
|||
/* $OpenBSD: md32_common.h,v 1.26 2023/08/10 07:15:23 jsing Exp $ */
|
||||
/* ====================================================================
|
||||
* Copyright (c) 1999-2007 The OpenSSL Project. All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
* modification, are permitted provided that the following conditions
|
||||
* are met:
|
||||
*
|
||||
* 1. Redistributions of source code must retain the above copyright
|
||||
* notice, this list of conditions and the following disclaimer.
|
||||
*
|
||||
* 2. Redistributions in binary form must reproduce the above copyright
|
||||
* notice, this list of conditions and the following disclaimer in
|
||||
* the documentation and/or other materials provided with the
|
||||
* distribution.
|
||||
*
|
||||
* 3. All advertising materials mentioning features or use of this
|
||||
* software must display the following acknowledgment:
|
||||
* "This product includes software developed by the OpenSSL Project
|
||||
* for use in the OpenSSL Toolkit. (http://www.OpenSSL.org/)"
|
||||
*
|
||||
* 4. The names "OpenSSL Toolkit" and "OpenSSL Project" must not be used to
|
||||
* endorse or promote products derived from this software without
|
||||
* prior written permission. For written permission, please contact
|
||||
* licensing@OpenSSL.org.
|
||||
*
|
||||
* 5. Products derived from this software may not be called "OpenSSL"
|
||||
* nor may "OpenSSL" appear in their names without prior written
|
||||
* permission of the OpenSSL Project.
|
||||
*
|
||||
* 6. Redistributions of any form whatsoever must retain the following
|
||||
* acknowledgment:
|
||||
* "This product includes software developed by the OpenSSL Project
|
||||
* for use in the OpenSSL Toolkit (http://www.OpenSSL.org/)"
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY THE OpenSSL PROJECT ``AS IS'' AND ANY
|
||||
* EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
||||
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
|
||||
* PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE OpenSSL PROJECT OR
|
||||
* ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
|
||||
* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
|
||||
* NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
|
||||
* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
|
||||
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
|
||||
* STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
|
||||
* ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
|
||||
* OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
* ====================================================================
|
||||
*
|
||||
*/
|
||||
|
||||
/*
|
||||
* This is a generic 32 bit "collector" for message digest algorithms.
|
||||
* Whenever needed it collects input character stream into chunks of
|
||||
* 32 bit values and invokes a block function that performs actual hash
|
||||
* calculations.
|
||||
*
|
||||
* Porting guide.
|
||||
*
|
||||
* Obligatory macros:
|
||||
*
|
||||
* DATA_ORDER_IS_BIG_ENDIAN or DATA_ORDER_IS_LITTLE_ENDIAN
|
||||
* this macro defines byte order of input stream.
|
||||
* HASH_CBLOCK
|
||||
* size of a unit chunk HASH_BLOCK operates on.
|
||||
* HASH_LONG
|
||||
* has to be at least 32 bit wide.
|
||||
* HASH_CTX
|
||||
* context structure that at least contains following
|
||||
* members:
|
||||
* typedef struct {
|
||||
* ...
|
||||
* HASH_LONG Nl,Nh;
|
||||
* either {
|
||||
* HASH_LONG data[HASH_LBLOCK];
|
||||
* unsigned char data[HASH_CBLOCK];
|
||||
* };
|
||||
* unsigned int num;
|
||||
* ...
|
||||
* } HASH_CTX;
|
||||
* data[] vector is expected to be zeroed upon first call to
|
||||
* HASH_UPDATE.
|
||||
* HASH_UPDATE
|
||||
* name of "Update" function, implemented here.
|
||||
* HASH_TRANSFORM
|
||||
* name of "Transform" function, implemented here.
|
||||
* HASH_FINAL
|
||||
* name of "Final" function, implemented here.
|
||||
* HASH_BLOCK_DATA_ORDER
|
||||
* name of "block" function capable of treating *unaligned* input
|
||||
* message in original (data) byte order, implemented externally.
|
||||
* HASH_MAKE_STRING
|
||||
* macro convering context variables to an ASCII hash string.
|
||||
*
|
||||
* MD5 example:
|
||||
*
|
||||
* #define DATA_ORDER_IS_LITTLE_ENDIAN
|
||||
*
|
||||
* #define HASH_LONG MD5_LONG
|
||||
* #define HASH_CTX MD5_CTX
|
||||
* #define HASH_CBLOCK MD5_CBLOCK
|
||||
* #define HASH_UPDATE MD5_Update
|
||||
* #define HASH_TRANSFORM MD5_Transform
|
||||
* #define HASH_FINAL MD5_Final
|
||||
* #define HASH_BLOCK_DATA_ORDER md5_block_data_order
|
||||
*
|
||||
* <appro@fy.chalmers.se>
|
||||
*/
|
||||
|
||||
#include <stdint.h>
|
||||
|
||||
#include <openssl/opensslconf.h>
|
||||
|
||||
#include "crypto_internal.h"
|
||||
|
||||
#if !defined(DATA_ORDER_IS_BIG_ENDIAN) && !defined(DATA_ORDER_IS_LITTLE_ENDIAN)
|
||||
#error "DATA_ORDER must be defined!"
|
||||
#endif
|
||||
|
||||
#ifndef HASH_CBLOCK
|
||||
#error "HASH_CBLOCK must be defined!"
|
||||
#endif
|
||||
#ifndef HASH_LONG
|
||||
#error "HASH_LONG must be defined!"
|
||||
#endif
|
||||
#ifndef HASH_CTX
|
||||
#error "HASH_CTX must be defined!"
|
||||
#endif
|
||||
|
||||
#if !defined(HASH_UPDATE) && !defined(HASH_NO_UPDATE)
|
||||
#error "HASH_UPDATE must be defined!"
|
||||
#endif
|
||||
#if !defined(HASH_TRANSFORM) && !defined(HASH_NO_TRANSFORM)
|
||||
#error "HASH_TRANSFORM must be defined!"
|
||||
#endif
|
||||
#if !defined(HASH_FINAL) && !defined(HASH_NO_FINAL)
|
||||
#error "HASH_FINAL or HASH_NO_FINAL must be defined!"
|
||||
#endif
|
||||
|
||||
#ifndef HASH_BLOCK_DATA_ORDER
|
||||
#error "HASH_BLOCK_DATA_ORDER must be defined!"
|
||||
#endif
|
||||
|
||||
#define ROTATE(a, n) crypto_rol_u32(a, n)
|
||||
|
||||
#if defined(DATA_ORDER_IS_BIG_ENDIAN)
|
||||
|
||||
#if defined(__GNUC__) && __GNUC__>=2 && !defined(OPENSSL_NO_ASM) && !defined(OPENSSL_NO_INLINE_ASM)
|
||||
# if (defined(__i386) || defined(__i386__) || \
|
||||
defined(__x86_64) || defined(__x86_64__))
|
||||
/*
|
||||
* This gives ~30-40% performance improvement in SHA-256 compiled
|
||||
* with gcc [on P4]. Well, first macro to be frank. We can pull
|
||||
* this trick on x86* platforms only, because these CPUs can fetch
|
||||
* unaligned data without raising an exception.
|
||||
*/
|
||||
# define HOST_c2l(c,l) ({ unsigned int r=*((const unsigned int *)(c)); \
|
||||
asm ("bswapl %0":"=r"(r):"0"(r)); \
|
||||
(c)+=4; (l)=r; })
|
||||
# define HOST_l2c(l,c) ({ unsigned int r=(l); \
|
||||
asm ("bswapl %0":"=r"(r):"0"(r)); \
|
||||
*((unsigned int *)(c))=r; (c)+=4; })
|
||||
# endif
|
||||
#endif
|
||||
|
||||
#ifndef HOST_c2l
|
||||
#define HOST_c2l(c,l) do {l =(((unsigned long)(*((c)++)))<<24); \
|
||||
l|=(((unsigned long)(*((c)++)))<<16); \
|
||||
l|=(((unsigned long)(*((c)++)))<< 8); \
|
||||
l|=(((unsigned long)(*((c)++))) ); \
|
||||
} while (0)
|
||||
#endif
|
||||
#ifndef HOST_l2c
|
||||
#define HOST_l2c(l,c) do {*((c)++)=(unsigned char)(((l)>>24)&0xff); \
|
||||
*((c)++)=(unsigned char)(((l)>>16)&0xff); \
|
||||
*((c)++)=(unsigned char)(((l)>> 8)&0xff); \
|
||||
*((c)++)=(unsigned char)(((l) )&0xff); \
|
||||
} while (0)
|
||||
#endif
|
||||
|
||||
#elif defined(DATA_ORDER_IS_LITTLE_ENDIAN)
|
||||
|
||||
#if defined(__i386) || defined(__i386__) || defined(__x86_64) || defined(__x86_64__)
|
||||
# define HOST_c2l(c,l) ((l)=*((const unsigned int *)(c)), (c)+=4)
|
||||
# define HOST_l2c(l,c) (*((unsigned int *)(c))=(l), (c)+=4)
|
||||
#endif
|
||||
|
||||
#ifndef HOST_c2l
|
||||
#define HOST_c2l(c,l) do {l =(((unsigned long)(*((c)++))) ); \
|
||||
l|=(((unsigned long)(*((c)++)))<< 8); \
|
||||
l|=(((unsigned long)(*((c)++)))<<16); \
|
||||
l|=(((unsigned long)(*((c)++)))<<24); \
|
||||
} while (0)
|
||||
#endif
|
||||
#ifndef HOST_l2c
|
||||
#define HOST_l2c(l,c) do {*((c)++)=(unsigned char)(((l) )&0xff); \
|
||||
*((c)++)=(unsigned char)(((l)>> 8)&0xff); \
|
||||
*((c)++)=(unsigned char)(((l)>>16)&0xff); \
|
||||
*((c)++)=(unsigned char)(((l)>>24)&0xff); \
|
||||
} while (0)
|
||||
#endif
|
||||
|
||||
#endif
|
||||
|
||||
/*
|
||||
* Time for some action:-)
|
||||
*/
|
||||
|
||||
#ifndef HASH_NO_UPDATE
|
||||
int
|
||||
HASH_UPDATE(HASH_CTX *c, const void *data_, size_t len)
|
||||
{
|
||||
const unsigned char *data = data_;
|
||||
unsigned char *p;
|
||||
HASH_LONG l;
|
||||
size_t n;
|
||||
|
||||
if (len == 0)
|
||||
return 1;
|
||||
|
||||
l = (c->Nl + (((HASH_LONG)len) << 3))&0xffffffffUL;
|
||||
/* 95-05-24 eay Fixed a bug with the overflow handling, thanks to
|
||||
* Wei Dai <weidai@eskimo.com> for pointing it out. */
|
||||
if (l < c->Nl) /* overflow */
|
||||
c->Nh++;
|
||||
c->Nh+=(HASH_LONG)(len>>29); /* might cause compiler warning on 16-bit */
|
||||
c->Nl = l;
|
||||
|
||||
n = c->num;
|
||||
if (n != 0) {
|
||||
p = (unsigned char *)c->data;
|
||||
|
||||
if (len >= HASH_CBLOCK || len + n >= HASH_CBLOCK) {
|
||||
memcpy (p + n, data, HASH_CBLOCK - n);
|
||||
HASH_BLOCK_DATA_ORDER (c, p, 1);
|
||||
n = HASH_CBLOCK - n;
|
||||
data += n;
|
||||
len -= n;
|
||||
c->num = 0;
|
||||
memset (p,0,HASH_CBLOCK); /* keep it zeroed */
|
||||
} else {
|
||||
memcpy (p + n, data, len);
|
||||
c->num += (unsigned int)len;
|
||||
return 1;
|
||||
}
|
||||
}
|
||||
|
||||
n = len/HASH_CBLOCK;
|
||||
if (n > 0) {
|
||||
HASH_BLOCK_DATA_ORDER (c, data, n);
|
||||
n *= HASH_CBLOCK;
|
||||
data += n;
|
||||
len -= n;
|
||||
}
|
||||
|
||||
if (len != 0) {
|
||||
p = (unsigned char *)c->data;
|
||||
c->num = (unsigned int)len;
|
||||
memcpy (p, data, len);
|
||||
}
|
||||
return 1;
|
||||
}
|
||||
#endif
|
||||
|
||||
#ifndef HASH_NO_TRANSFORM
|
||||
void HASH_TRANSFORM (HASH_CTX *c, const unsigned char *data)
|
||||
{
|
||||
HASH_BLOCK_DATA_ORDER (c, data, 1);
|
||||
}
|
||||
#endif
|
||||
|
||||
#ifndef HASH_NO_FINAL
|
||||
int HASH_FINAL (unsigned char *md, HASH_CTX *c)
|
||||
{
|
||||
unsigned char *p = (unsigned char *)c->data;
|
||||
size_t n = c->num;
|
||||
|
||||
p[n] = 0x80; /* there is always room for one */
|
||||
n++;
|
||||
|
||||
if (n > (HASH_CBLOCK - 8)) {
|
||||
memset (p + n, 0, HASH_CBLOCK - n);
|
||||
n = 0;
|
||||
HASH_BLOCK_DATA_ORDER (c, p, 1);
|
||||
}
|
||||
memset (p + n, 0, HASH_CBLOCK - 8 - n);
|
||||
|
||||
p += HASH_CBLOCK - 8;
|
||||
#if defined(DATA_ORDER_IS_BIG_ENDIAN)
|
||||
HOST_l2c(c->Nh, p);
|
||||
HOST_l2c(c->Nl, p);
|
||||
#elif defined(DATA_ORDER_IS_LITTLE_ENDIAN)
|
||||
HOST_l2c(c->Nl, p);
|
||||
HOST_l2c(c->Nh, p);
|
||||
#endif
|
||||
p -= HASH_CBLOCK;
|
||||
HASH_BLOCK_DATA_ORDER (c, p, 1);
|
||||
c->num = 0;
|
||||
memset (p, 0, HASH_CBLOCK);
|
||||
|
||||
#ifndef HASH_MAKE_STRING
|
||||
#error "HASH_MAKE_STRING must be defined!"
|
||||
#else
|
||||
HASH_MAKE_STRING(c, md);
|
||||
#endif
|
||||
|
||||
return 1;
|
||||
}
|
||||
#endif
|
|
@ -1,4 +1,4 @@
|
|||
/* $OpenBSD: md4.c,v 1.16 2024/03/27 06:15:18 jsing Exp $ */
|
||||
/* $OpenBSD: md4.c,v 1.17 2024/03/28 08:00:07 jsing Exp $ */
|
||||
/* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com)
|
||||
* All rights reserved.
|
||||
*
|
||||
|
@ -118,12 +118,12 @@ md4_block_data_order(MD4_CTX *c, const void *_in, size_t num)
|
|||
unsigned int X0, X1, X2, X3, X4, X5, X6, X7,
|
||||
X8, X9, X10, X11, X12, X13, X14, X15;
|
||||
|
||||
A = c->A;
|
||||
B = c->B;
|
||||
C = c->C;
|
||||
D = c->D;
|
||||
|
||||
while (num-- > 0) {
|
||||
A = c->A;
|
||||
B = c->B;
|
||||
C = c->C;
|
||||
D = c->D;
|
||||
|
||||
if ((uintptr_t)in % 4 == 0) {
|
||||
/* Input is 32 bit aligned. */
|
||||
in32 = (const MD4_LONG *)in;
|
||||
|
@ -217,10 +217,10 @@ md4_block_data_order(MD4_CTX *c, const void *_in, size_t num)
|
|||
md4_round3(&C, D, A, B, X7, 11);
|
||||
md4_round3(&B, C, D, A, X15, 15);
|
||||
|
||||
A = c->A += A;
|
||||
B = c->B += B;
|
||||
C = c->C += C;
|
||||
D = c->D += D;
|
||||
c->A += A;
|
||||
c->B += B;
|
||||
c->C += C;
|
||||
c->D += D;
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
/* $OpenBSD: md5.c,v 1.21 2024/03/26 05:55:15 jsing Exp $ */
|
||||
/* $OpenBSD: md5.c,v 1.22 2024/03/28 08:00:08 jsing Exp $ */
|
||||
/* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com)
|
||||
* All rights reserved.
|
||||
*
|
||||
|
@ -137,12 +137,12 @@ md5_block_data_order(MD5_CTX *c, const void *_in, size_t num)
|
|||
MD5_LONG X0, X1, X2, X3, X4, X5, X6, X7,
|
||||
X8, X9, X10, X11, X12, X13, X14, X15;
|
||||
|
||||
A = c->A;
|
||||
B = c->B;
|
||||
C = c->C;
|
||||
D = c->D;
|
||||
|
||||
while (num-- > 0) {
|
||||
A = c->A;
|
||||
B = c->B;
|
||||
C = c->C;
|
||||
D = c->D;
|
||||
|
||||
if ((uintptr_t)in % 4 == 0) {
|
||||
/* Input is 32 bit aligned. */
|
||||
in32 = (const MD5_LONG *)in;
|
||||
|
@ -251,10 +251,10 @@ md5_block_data_order(MD5_CTX *c, const void *_in, size_t num)
|
|||
md5_round4(&C, D, A, B, X2, 0x2ad7d2bbL, 15);
|
||||
md5_round4(&B, C, D, A, X9, 0xeb86d391L, 21);
|
||||
|
||||
A = c->A += A;
|
||||
B = c->B += B;
|
||||
C = c->C += C;
|
||||
D = c->D += D;
|
||||
c->A += A;
|
||||
c->B += B;
|
||||
c->C += C;
|
||||
c->D += D;
|
||||
}
|
||||
}
|
||||
#endif
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
/* $OpenBSD: rc4.c,v 1.9 2024/03/28 01:49:29 jsing Exp $ */
|
||||
/* $OpenBSD: rc4.c,v 1.11 2024/03/28 12:11:26 jsing Exp $ */
|
||||
/* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com)
|
||||
* All rights reserved.
|
||||
*
|
||||
|
@ -262,7 +262,7 @@ rc4_internal(RC4_KEY *key, size_t len, const unsigned char *indata,
|
|||
void rc4_set_key_internal(RC4_KEY *key, int len, const unsigned char *data);
|
||||
|
||||
#else
|
||||
static void
|
||||
static inline void
|
||||
rc4_set_key_internal(RC4_KEY *key, int len, const unsigned char *data)
|
||||
{
|
||||
RC4_INT tmp;
|
||||
|
@ -299,9 +299,11 @@ RC4(RC4_KEY *key, size_t len, const unsigned char *indata,
|
|||
{
|
||||
rc4_internal(key, len, indata, outdata);
|
||||
}
|
||||
LCRYPTO_ALIAS(RC4);
|
||||
|
||||
void
|
||||
RC4_set_key(RC4_KEY *key, int len, const unsigned char *data)
|
||||
{
|
||||
rc4_set_key_internal(key, len, data);
|
||||
}
|
||||
LCRYPTO_ALIAS(RC4_set_key);
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
/* $OpenBSD: ripemd.c,v 1.7 2023/08/10 12:27:35 jsing Exp $ */
|
||||
/* $OpenBSD: ripemd.c,v 1.18 2024/03/28 23:54:15 joshua Exp $ */
|
||||
/* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com)
|
||||
* All rights reserved.
|
||||
*
|
||||
|
@ -57,50 +57,18 @@
|
|||
*/
|
||||
|
||||
#include <stdio.h>
|
||||
#include <openssl/opensslv.h>
|
||||
#include <openssl/crypto.h>
|
||||
|
||||
#include <stdlib.h>
|
||||
#include <string.h>
|
||||
|
||||
#include <openssl/opensslconf.h>
|
||||
|
||||
#include <openssl/crypto.h>
|
||||
#include <openssl/ripemd.h>
|
||||
|
||||
/*
|
||||
* DO EXAMINE COMMENTS IN crypto/md5/md5_locl.h & crypto/md5/md5_dgst.c
|
||||
* FOR EXPLANATIONS ON FOLLOWING "CODE."
|
||||
* <appro@fy.chalmers.se>
|
||||
*/
|
||||
#ifdef RMD160_ASM
|
||||
# if defined(__i386) || defined(__i386__) || defined(_M_IX86) || defined(__INTEL__)
|
||||
# define ripemd160_block_data_order ripemd160_block_asm_data_order
|
||||
# endif
|
||||
#endif
|
||||
#include "crypto_internal.h"
|
||||
|
||||
__BEGIN_HIDDEN_DECLS
|
||||
|
||||
void ripemd160_block_data_order (RIPEMD160_CTX *c, const void *p, size_t num);
|
||||
|
||||
__END_HIDDEN_DECLS
|
||||
|
||||
#define DATA_ORDER_IS_LITTLE_ENDIAN
|
||||
|
||||
#define HASH_LONG RIPEMD160_LONG
|
||||
#define HASH_CTX RIPEMD160_CTX
|
||||
#define HASH_CBLOCK RIPEMD160_CBLOCK
|
||||
#define HASH_UPDATE RIPEMD160_Update
|
||||
#define HASH_TRANSFORM RIPEMD160_Transform
|
||||
#define HASH_FINAL RIPEMD160_Final
|
||||
#define HASH_MAKE_STRING(c,s) do { \
|
||||
unsigned long ll; \
|
||||
ll=(c)->A; HOST_l2c(ll,(s)); \
|
||||
ll=(c)->B; HOST_l2c(ll,(s)); \
|
||||
ll=(c)->C; HOST_l2c(ll,(s)); \
|
||||
ll=(c)->D; HOST_l2c(ll,(s)); \
|
||||
ll=(c)->E; HOST_l2c(ll,(s)); \
|
||||
} while (0)
|
||||
#define HASH_BLOCK_DATA_ORDER ripemd160_block_data_order
|
||||
|
||||
#include "md32_common.h"
|
||||
/* Ensure that SHA_LONG and uint32_t are equivalent sizes. */
|
||||
CTASSERT(sizeof(RIPEMD160_LONG) == sizeof(uint32_t));
|
||||
|
||||
#if 0
|
||||
#define F1(x,y,z) ((x)^(y)^(z))
|
||||
|
@ -119,12 +87,6 @@ __END_HIDDEN_DECLS
|
|||
#define F5(x,y,z) (((~(z)) | (y)) ^ (x))
|
||||
#endif
|
||||
|
||||
#define RIPEMD160_A 0x67452301L
|
||||
#define RIPEMD160_B 0xEFCDAB89L
|
||||
#define RIPEMD160_C 0x98BADCFEL
|
||||
#define RIPEMD160_D 0x10325476L
|
||||
#define RIPEMD160_E 0xC3D2E1F0L
|
||||
|
||||
#define KL0 0x00000000L
|
||||
#define KL1 0x5A827999L
|
||||
#define KL2 0x6ED9EBA1L
|
||||
|
@ -139,112 +101,100 @@ __END_HIDDEN_DECLS
|
|||
|
||||
#define RIP1(a,b,c,d,e,w,s) { \
|
||||
a+=F1(b,c,d)+w; \
|
||||
a=ROTATE(a,s)+e; \
|
||||
c=ROTATE(c,10); }
|
||||
a=crypto_rol_u32(a,s)+e; \
|
||||
c=crypto_rol_u32(c,10); }
|
||||
|
||||
#define RIP2(a,b,c,d,e,w,s,K) { \
|
||||
a+=F2(b,c,d)+w+K; \
|
||||
a=ROTATE(a,s)+e; \
|
||||
c=ROTATE(c,10); }
|
||||
a=crypto_rol_u32(a,s)+e; \
|
||||
c=crypto_rol_u32(c,10); }
|
||||
|
||||
#define RIP3(a,b,c,d,e,w,s,K) { \
|
||||
a+=F3(b,c,d)+w+K; \
|
||||
a=ROTATE(a,s)+e; \
|
||||
c=ROTATE(c,10); }
|
||||
a=crypto_rol_u32(a,s)+e; \
|
||||
c=crypto_rol_u32(c,10); }
|
||||
|
||||
#define RIP4(a,b,c,d,e,w,s,K) { \
|
||||
a+=F4(b,c,d)+w+K; \
|
||||
a=ROTATE(a,s)+e; \
|
||||
c=ROTATE(c,10); }
|
||||
a=crypto_rol_u32(a,s)+e; \
|
||||
c=crypto_rol_u32(c,10); }
|
||||
|
||||
#define RIP5(a,b,c,d,e,w,s,K) { \
|
||||
a+=F5(b,c,d)+w+K; \
|
||||
a=ROTATE(a,s)+e; \
|
||||
c=ROTATE(c,10); }
|
||||
a=crypto_rol_u32(a,s)+e; \
|
||||
c=crypto_rol_u32(c,10); }
|
||||
|
||||
# ifdef RMD160_ASM
|
||||
void ripemd160_block_x86(RIPEMD160_CTX *c, unsigned long *p, size_t num);
|
||||
# define ripemd160_block ripemd160_block_x86
|
||||
# else
|
||||
void ripemd160_block(RIPEMD160_CTX *c, unsigned long *p, size_t num);
|
||||
# endif
|
||||
|
||||
int
|
||||
RIPEMD160_Init(RIPEMD160_CTX *c)
|
||||
static void
|
||||
ripemd160_block_data_order(RIPEMD160_CTX *ctx, const void *_in, size_t num)
|
||||
{
|
||||
memset (c, 0, sizeof(*c));
|
||||
c->A = RIPEMD160_A;
|
||||
c->B = RIPEMD160_B;
|
||||
c->C = RIPEMD160_C;
|
||||
c->D = RIPEMD160_D;
|
||||
c->E = RIPEMD160_E;
|
||||
return 1;
|
||||
}
|
||||
|
||||
#ifndef ripemd160_block_data_order
|
||||
void
|
||||
ripemd160_block_data_order(RIPEMD160_CTX *ctx, const void *p, size_t num)
|
||||
{
|
||||
const unsigned char *data = p;
|
||||
const uint8_t *in = _in;
|
||||
const RIPEMD160_LONG *in32;
|
||||
unsigned int A, B, C, D, E;
|
||||
unsigned int a, b, c, d, e, l;
|
||||
unsigned int a, b, c, d, e;
|
||||
unsigned int X0, X1, X2, X3, X4, X5, X6, X7,
|
||||
X8, X9, X10, X11, X12, X13, X14, X15;
|
||||
|
||||
for (; num--; ) {
|
||||
|
||||
A = ctx->A;
|
||||
B = ctx->B;
|
||||
C = ctx->C;
|
||||
D = ctx->D;
|
||||
E = ctx->E;
|
||||
|
||||
HOST_c2l(data, l);
|
||||
X0 = l;
|
||||
HOST_c2l(data, l);
|
||||
X1 = l;
|
||||
if ((uintptr_t)in % 4 == 0) {
|
||||
/* Input is 32 bit aligned. */
|
||||
in32 = (const RIPEMD160_LONG *)in;
|
||||
X0 = le32toh(in32[0]);
|
||||
X1 = le32toh(in32[1]);
|
||||
X2 = le32toh(in32[2]);
|
||||
X3 = le32toh(in32[3]);
|
||||
X4 = le32toh(in32[4]);
|
||||
X5 = le32toh(in32[5]);
|
||||
X6 = le32toh(in32[6]);
|
||||
X7 = le32toh(in32[7]);
|
||||
X8 = le32toh(in32[8]);
|
||||
X9 = le32toh(in32[9]);
|
||||
X10 = le32toh(in32[10]);
|
||||
X11 = le32toh(in32[11]);
|
||||
X12 = le32toh(in32[12]);
|
||||
X13 = le32toh(in32[13]);
|
||||
X14 = le32toh(in32[14]);
|
||||
X15 = le32toh(in32[15]);
|
||||
} else {
|
||||
/* Input is not 32 bit aligned. */
|
||||
X0 = crypto_load_le32toh(&in[0 * 4]);
|
||||
X1 = crypto_load_le32toh(&in[1 * 4]);
|
||||
X2 = crypto_load_le32toh(&in[2 * 4]);
|
||||
X3 = crypto_load_le32toh(&in[3 * 4]);
|
||||
X4 = crypto_load_le32toh(&in[4 * 4]);
|
||||
X5 = crypto_load_le32toh(&in[5 * 4]);
|
||||
X6 = crypto_load_le32toh(&in[6 * 4]);
|
||||
X7 = crypto_load_le32toh(&in[7 * 4]);
|
||||
X8 = crypto_load_le32toh(&in[8 * 4]);
|
||||
X9 = crypto_load_le32toh(&in[9 * 4]);
|
||||
X10 = crypto_load_le32toh(&in[10 * 4]);
|
||||
X11 = crypto_load_le32toh(&in[11 * 4]);
|
||||
X12 = crypto_load_le32toh(&in[12 * 4]);
|
||||
X13 = crypto_load_le32toh(&in[13 * 4]);
|
||||
X14 = crypto_load_le32toh(&in[14 * 4]);
|
||||
X15 = crypto_load_le32toh(&in[15 * 4]);
|
||||
}
|
||||
in += RIPEMD160_CBLOCK;
|
||||
|
||||
RIP1(A, B, C, D, E, X0, 11);
|
||||
HOST_c2l(data, l);
|
||||
X2 = l;
|
||||
RIP1(E, A, B, C, D, X1, 14);
|
||||
HOST_c2l(data, l);
|
||||
X3 = l;
|
||||
RIP1(D, E, A, B, C, X2, 15);
|
||||
HOST_c2l(data, l);
|
||||
X4 = l;
|
||||
RIP1(C, D, E, A, B, X3, 12);
|
||||
HOST_c2l(data, l);
|
||||
X5 = l;
|
||||
RIP1(B, C, D, E, A, X4, 5);
|
||||
HOST_c2l(data, l);
|
||||
X6 = l;
|
||||
RIP1(A, B, C, D, E, X5, 8);
|
||||
HOST_c2l(data, l);
|
||||
X7 = l;
|
||||
RIP1(E, A, B, C, D, X6, 7);
|
||||
HOST_c2l(data, l);
|
||||
X8 = l;
|
||||
RIP1(D, E, A, B, C, X7, 9);
|
||||
HOST_c2l(data, l);
|
||||
X9 = l;
|
||||
RIP1(C, D, E, A, B, X8, 11);
|
||||
HOST_c2l(data, l);
|
||||
X10 = l;
|
||||
RIP1(B, C, D, E, A, X9, 13);
|
||||
HOST_c2l(data, l);
|
||||
X11 = l;
|
||||
RIP1(A, B, C, D, E, X10, 14);
|
||||
HOST_c2l(data, l);
|
||||
X12 = l;
|
||||
RIP1(E, A, B, C, D, X11, 15);
|
||||
HOST_c2l(data, l);
|
||||
X13 = l;
|
||||
RIP1(D, E, A, B, C, X12, 6);
|
||||
HOST_c2l(data, l);
|
||||
X14 = l;
|
||||
RIP1(C, D, E, A, B, X13, 7);
|
||||
HOST_c2l(data, l);
|
||||
X15 = l;
|
||||
RIP1(B, C, D, E, A, X14, 9);
|
||||
RIP1(A, B, C, D, E, X15, 8);
|
||||
|
||||
|
@ -419,10 +369,118 @@ ripemd160_block_data_order(RIPEMD160_CTX *ctx, const void *p, size_t num)
|
|||
ctx->D = ctx->E + a + B;
|
||||
ctx->E = ctx->A + b + C;
|
||||
ctx->A = D;
|
||||
|
||||
}
|
||||
}
|
||||
#endif
|
||||
|
||||
int
|
||||
RIPEMD160_Init(RIPEMD160_CTX *c)
|
||||
{
|
||||
memset(c, 0, sizeof(*c));
|
||||
|
||||
c->A = 0x67452301UL;
|
||||
c->B = 0xEFCDAB89UL;
|
||||
c->C = 0x98BADCFEUL;
|
||||
c->D = 0x10325476UL;
|
||||
c->E = 0xC3D2E1F0UL;
|
||||
|
||||
return 1;
|
||||
}
|
||||
LCRYPTO_ALIAS(RIPEMD160_Init);
|
||||
|
||||
int
|
||||
RIPEMD160_Update(RIPEMD160_CTX *c, const void *data_, size_t len)
|
||||
{
|
||||
const unsigned char *data = data_;
|
||||
unsigned char *p;
|
||||
RIPEMD160_LONG l;
|
||||
size_t n;
|
||||
|
||||
if (len == 0)
|
||||
return 1;
|
||||
|
||||
l = (c->Nl + (((RIPEMD160_LONG)len) << 3))&0xffffffffUL;
|
||||
/* 95-05-24 eay Fixed a bug with the overflow handling, thanks to
|
||||
* Wei Dai <weidai@eskimo.com> for pointing it out. */
|
||||
if (l < c->Nl) /* overflow */
|
||||
c->Nh++;
|
||||
c->Nh+=(RIPEMD160_LONG)(len>>29); /* might cause compiler warning on 16-bit */
|
||||
c->Nl = l;
|
||||
|
||||
n = c->num;
|
||||
if (n != 0) {
|
||||
p = (unsigned char *)c->data;
|
||||
|
||||
if (len >= RIPEMD160_CBLOCK || len + n >= RIPEMD160_CBLOCK) {
|
||||
memcpy(p + n, data, RIPEMD160_CBLOCK - n);
|
||||
ripemd160_block_data_order(c, p, 1);
|
||||
n = RIPEMD160_CBLOCK - n;
|
||||
data += n;
|
||||
len -= n;
|
||||
c->num = 0;
|
||||
memset(p, 0, RIPEMD160_CBLOCK); /* keep it zeroed */
|
||||
} else {
|
||||
memcpy(p + n, data, len);
|
||||
c->num += (unsigned int)len;
|
||||
return 1;
|
||||
}
|
||||
}
|
||||
|
||||
n = len/RIPEMD160_CBLOCK;
|
||||
if (n > 0) {
|
||||
ripemd160_block_data_order(c, data, n);
|
||||
n *= RIPEMD160_CBLOCK;
|
||||
data += n;
|
||||
len -= n;
|
||||
}
|
||||
|
||||
if (len != 0) {
|
||||
p = (unsigned char *)c->data;
|
||||
c->num = (unsigned int)len;
|
||||
memcpy(p, data, len);
|
||||
}
|
||||
return 1;
|
||||
}
|
||||
LCRYPTO_ALIAS(RIPEMD160_Update);
|
||||
|
||||
void
|
||||
RIPEMD160_Transform(RIPEMD160_CTX *c, const unsigned char *data)
|
||||
{
|
||||
ripemd160_block_data_order(c, data, 1);
|
||||
}
|
||||
LCRYPTO_ALIAS(RIPEMD160_Transform);
|
||||
|
||||
int
|
||||
RIPEMD160_Final(unsigned char *md, RIPEMD160_CTX *c)
|
||||
{
|
||||
unsigned char *p = (unsigned char *)c->data;
|
||||
size_t n = c->num;
|
||||
|
||||
p[n] = 0x80; /* there is always room for one */
|
||||
n++;
|
||||
|
||||
if (n > (RIPEMD160_CBLOCK - 8)) {
|
||||
memset(p + n, 0, RIPEMD160_CBLOCK - n);
|
||||
n = 0;
|
||||
ripemd160_block_data_order(c, p, 1);
|
||||
}
|
||||
|
||||
memset(p + n, 0, RIPEMD160_CBLOCK - 8 - n);
|
||||
c->data[RIPEMD160_LBLOCK - 2] = htole32(c->Nl);
|
||||
c->data[RIPEMD160_LBLOCK - 1] = htole32(c->Nh);
|
||||
|
||||
ripemd160_block_data_order(c, p, 1);
|
||||
c->num = 0;
|
||||
memset(p, 0, RIPEMD160_CBLOCK);
|
||||
|
||||
crypto_store_htole32(&md[0 * 4], c->A);
|
||||
crypto_store_htole32(&md[1 * 4], c->B);
|
||||
crypto_store_htole32(&md[2 * 4], c->C);
|
||||
crypto_store_htole32(&md[3 * 4], c->D);
|
||||
crypto_store_htole32(&md[4 * 4], c->E);
|
||||
|
||||
return 1;
|
||||
}
|
||||
LCRYPTO_ALIAS(RIPEMD160_Final);
|
||||
|
||||
unsigned char *
|
||||
RIPEMD160(const unsigned char *d, size_t n,
|
||||
|
@ -440,3 +498,4 @@ RIPEMD160(const unsigned char *d, size_t n,
|
|||
explicit_bzero(&c, sizeof(c));
|
||||
return (md);
|
||||
}
|
||||
LCRYPTO_ALIAS(RIPEMD160);
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
/* $OpenBSD: sha1.c,v 1.13 2024/03/26 12:54:22 jsing Exp $ */
|
||||
/* $OpenBSD: sha1.c,v 1.14 2024/03/28 07:06:12 jsing Exp $ */
|
||||
/* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com)
|
||||
* All rights reserved.
|
||||
*
|
||||
|
@ -71,92 +71,114 @@
|
|||
/* Ensure that SHA_LONG and uint32_t are equivalent sizes. */
|
||||
CTASSERT(sizeof(SHA_LONG) == sizeof(uint32_t));
|
||||
|
||||
#define DATA_ORDER_IS_BIG_ENDIAN
|
||||
|
||||
#define HASH_LONG SHA_LONG
|
||||
#define HASH_CTX SHA_CTX
|
||||
#define HASH_CBLOCK SHA_CBLOCK
|
||||
|
||||
#define HASH_BLOCK_DATA_ORDER sha1_block_data_order
|
||||
#define Xupdate(a, ix, ia, ib, ic, id) ( (a)=(ia^ib^ic^id), \
|
||||
ix=(a)=ROTATE((a),1) \
|
||||
)
|
||||
#ifdef SHA1_ASM
|
||||
void sha1_block_data_order(SHA_CTX *ctx, const void *p, size_t num);
|
||||
#endif
|
||||
|
||||
#ifndef SHA1_ASM
|
||||
static
|
||||
#endif
|
||||
void sha1_block_data_order(SHA_CTX *c, const void *p, size_t num);
|
||||
static inline SHA_LONG
|
||||
Ch(SHA_LONG x, SHA_LONG y, SHA_LONG z)
|
||||
{
|
||||
return (x & y) ^ (~x & z);
|
||||
}
|
||||
|
||||
#define HASH_NO_UPDATE
|
||||
#define HASH_NO_TRANSFORM
|
||||
#define HASH_NO_FINAL
|
||||
static inline SHA_LONG
|
||||
Parity(SHA_LONG x, SHA_LONG y, SHA_LONG z)
|
||||
{
|
||||
return x ^ y ^ z;
|
||||
}
|
||||
|
||||
#include "md32_common.h"
|
||||
static inline SHA_LONG
|
||||
Maj(SHA_LONG x, SHA_LONG y, SHA_LONG z)
|
||||
{
|
||||
return (x & y) ^ (x & z) ^ (y & z);
|
||||
}
|
||||
|
||||
#define K_00_19 0x5a827999UL
|
||||
#define K_20_39 0x6ed9eba1UL
|
||||
#define K_40_59 0x8f1bbcdcUL
|
||||
#define K_60_79 0xca62c1d6UL
|
||||
static inline void
|
||||
sha1_msg_schedule_update(SHA_LONG *W0, SHA_LONG W2, SHA_LONG W8, SHA_LONG W13)
|
||||
{
|
||||
*W0 = crypto_rol_u32(W13 ^ W8 ^ W2 ^ *W0, 1);
|
||||
}
|
||||
|
||||
/* As pointed out by Wei Dai <weidai@eskimo.com>, F() below can be
|
||||
* simplified to the code in F_00_19. Wei attributes these optimisations
|
||||
* to Peter Gutmann's SHS code, and he attributes it to Rich Schroeppel.
|
||||
* #define F(x,y,z) (((x) & (y)) | ((~(x)) & (z)))
|
||||
* I've just become aware of another tweak to be made, again from Wei Dai,
|
||||
* in F_40_59, (x&a)|(y&a) -> (x|y)&a
|
||||
*/
|
||||
#define F_00_19(b, c, d) ((((c) ^ (d)) & (b)) ^ (d))
|
||||
#define F_20_39(b, c, d) ((b) ^ (c) ^ (d))
|
||||
#define F_40_59(b, c, d) (((b) & (c)) | (((b)|(c)) & (d)))
|
||||
#define F_60_79(b, c, d) F_20_39(b, c, d)
|
||||
static inline void
|
||||
sha1_round1(SHA_LONG *a, SHA_LONG *b, SHA_LONG *c, SHA_LONG *d, SHA_LONG *e,
|
||||
SHA_LONG Wt)
|
||||
{
|
||||
SHA_LONG Kt, T;
|
||||
|
||||
Kt = 0x5a827999UL;
|
||||
T = crypto_rol_u32(*a, 5) + Ch(*b, *c, *d) + *e + Kt + Wt;
|
||||
|
||||
#define BODY_00_15(i, a, b, c, d, e, f, xi) \
|
||||
(f)=xi+(e)+K_00_19+ROTATE((a),5)+F_00_19((b),(c),(d)); \
|
||||
(b)=ROTATE((b),30);
|
||||
*e = *d;
|
||||
*d = *c;
|
||||
*c = crypto_rol_u32(*b, 30);
|
||||
*b = *a;
|
||||
*a = T;
|
||||
}
|
||||
|
||||
#define BODY_16_19(i, a, b, c, d, e, f, xi, xa, xb, xc, xd) \
|
||||
Xupdate(f, xi, xa, xb, xc, xd); \
|
||||
(f)+=(e)+K_00_19+ROTATE((a),5)+F_00_19((b),(c),(d)); \
|
||||
(b)=ROTATE((b),30);
|
||||
static inline void
|
||||
sha1_round2(SHA_LONG *a, SHA_LONG *b, SHA_LONG *c, SHA_LONG *d, SHA_LONG *e,
|
||||
SHA_LONG Wt)
|
||||
{
|
||||
SHA_LONG Kt, T;
|
||||
|
||||
#define BODY_20_31(i, a, b, c, d, e, f, xi, xa, xb, xc, xd) \
|
||||
Xupdate(f, xi, xa, xb, xc, xd); \
|
||||
(f)+=(e)+K_20_39+ROTATE((a),5)+F_20_39((b),(c),(d)); \
|
||||
(b)=ROTATE((b),30);
|
||||
Kt = 0x6ed9eba1UL;
|
||||
T = crypto_rol_u32(*a, 5) + Parity(*b, *c, *d) + *e + Kt + Wt;
|
||||
|
||||
#define BODY_32_39(i, a, b, c, d, e, f, xa, xb, xc, xd) \
|
||||
Xupdate(f, xa, xa, xb, xc, xd); \
|
||||
(f)+=(e)+K_20_39+ROTATE((a),5)+F_20_39((b),(c),(d)); \
|
||||
(b)=ROTATE((b),30);
|
||||
*e = *d;
|
||||
*d = *c;
|
||||
*c = crypto_rol_u32(*b, 30);
|
||||
*b = *a;
|
||||
*a = T;
|
||||
}
|
||||
|
||||
#define BODY_40_59(i, a, b, c, d, e, f, xa, xb, xc, xd) \
|
||||
Xupdate(f, xa, xa, xb, xc, xd); \
|
||||
(f)+=(e)+K_40_59+ROTATE((a),5)+F_40_59((b),(c),(d)); \
|
||||
(b)=ROTATE((b),30);
|
||||
static inline void
|
||||
sha1_round3(SHA_LONG *a, SHA_LONG *b, SHA_LONG *c, SHA_LONG *d, SHA_LONG *e,
|
||||
SHA_LONG Wt)
|
||||
{
|
||||
SHA_LONG Kt, T;
|
||||
|
||||
#define BODY_60_79(i, a, b, c, d, e, f, xa, xb, xc, xd) \
|
||||
Xupdate(f, xa, xa, xb, xc, xd); \
|
||||
(f)=xa+(e)+K_60_79+ROTATE((a),5)+F_60_79((b),(c),(d)); \
|
||||
(b)=ROTATE((b),30);
|
||||
Kt = 0x8f1bbcdcUL;
|
||||
T = crypto_rol_u32(*a, 5) + Maj(*b, *c, *d) + *e + Kt + Wt;
|
||||
|
||||
*e = *d;
|
||||
*d = *c;
|
||||
*c = crypto_rol_u32(*b, 30);
|
||||
*b = *a;
|
||||
*a = T;
|
||||
}
|
||||
|
||||
static inline void
|
||||
sha1_round4(SHA_LONG *a, SHA_LONG *b, SHA_LONG *c, SHA_LONG *d, SHA_LONG *e,
|
||||
SHA_LONG Wt)
|
||||
{
|
||||
SHA_LONG Kt, T;
|
||||
|
||||
Kt = 0xca62c1d6UL;
|
||||
T = crypto_rol_u32(*a, 5) + Parity(*b, *c, *d) + *e + Kt + Wt;
|
||||
|
||||
*e = *d;
|
||||
*d = *c;
|
||||
*c = crypto_rol_u32(*b, 30);
|
||||
*b = *a;
|
||||
*a = T;
|
||||
}
|
||||
|
||||
#if !defined(SHA1_ASM)
|
||||
#include <endian.h>
|
||||
static void
|
||||
sha1_block_data_order(SHA_CTX *c, const void *_in, size_t num)
|
||||
sha1_block_data_order(SHA_CTX *ctx, const void *_in, size_t num)
|
||||
{
|
||||
const uint8_t *in = _in;
|
||||
const SHA_LONG *in32;
|
||||
unsigned int A, B, C, D, E, T;
|
||||
unsigned int a, b, c, d, e;
|
||||
unsigned int X0, X1, X2, X3, X4, X5, X6, X7,
|
||||
X8, X9, X10, X11, X12, X13, X14, X15;
|
||||
|
||||
while (num--) {
|
||||
A = c->h0;
|
||||
B = c->h1;
|
||||
C = c->h2;
|
||||
D = c->h3;
|
||||
E = c->h4;
|
||||
a = ctx->h0;
|
||||
b = ctx->h1;
|
||||
c = ctx->h2;
|
||||
d = ctx->h3;
|
||||
e = ctx->h4;
|
||||
|
||||
if ((size_t)in % 4 == 0) {
|
||||
/* Input is 32 bit aligned. */
|
||||
|
@ -198,102 +220,168 @@ sha1_block_data_order(SHA_CTX *c, const void *_in, size_t num)
|
|||
}
|
||||
in += SHA_CBLOCK;
|
||||
|
||||
BODY_00_15( 0, A, B, C, D, E, T, X0);
|
||||
BODY_00_15( 1, T, A, B, C, D, E, X1);
|
||||
BODY_00_15( 2, E, T, A, B, C, D, X2);
|
||||
BODY_00_15( 3, D, E, T, A, B, C, X3);
|
||||
BODY_00_15( 4, C, D, E, T, A, B, X4);
|
||||
BODY_00_15( 5, B, C, D, E, T, A, X5);
|
||||
BODY_00_15( 6, A, B, C, D, E, T, X6);
|
||||
BODY_00_15( 7, T, A, B, C, D, E, X7);
|
||||
BODY_00_15( 8, E, T, A, B, C, D, X8);
|
||||
BODY_00_15( 9, D, E, T, A, B, C, X9);
|
||||
BODY_00_15(10, C, D, E, T, A, B, X10);
|
||||
BODY_00_15(11, B, C, D, E, T, A, X11);
|
||||
BODY_00_15(12, A, B, C, D, E, T, X12);
|
||||
BODY_00_15(13, T, A, B, C, D, E, X13);
|
||||
BODY_00_15(14, E, T, A, B, C, D, X14);
|
||||
BODY_00_15(15, D, E, T, A, B, C, X15);
|
||||
sha1_round1(&a, &b, &c, &d, &e, X0);
|
||||
sha1_round1(&a, &b, &c, &d, &e, X1);
|
||||
sha1_round1(&a, &b, &c, &d, &e, X2);
|
||||
sha1_round1(&a, &b, &c, &d, &e, X3);
|
||||
sha1_round1(&a, &b, &c, &d, &e, X4);
|
||||
sha1_round1(&a, &b, &c, &d, &e, X5);
|
||||
sha1_round1(&a, &b, &c, &d, &e, X6);
|
||||
sha1_round1(&a, &b, &c, &d, &e, X7);
|
||||
sha1_round1(&a, &b, &c, &d, &e, X8);
|
||||
sha1_round1(&a, &b, &c, &d, &e, X9);
|
||||
sha1_round1(&a, &b, &c, &d, &e, X10);
|
||||
sha1_round1(&a, &b, &c, &d, &e, X11);
|
||||
sha1_round1(&a, &b, &c, &d, &e, X12);
|
||||
sha1_round1(&a, &b, &c, &d, &e, X13);
|
||||
sha1_round1(&a, &b, &c, &d, &e, X14);
|
||||
sha1_round1(&a, &b, &c, &d, &e, X15);
|
||||
|
||||
BODY_16_19(16, C, D, E, T, A, B, X0, X0, X2, X8, X13);
|
||||
BODY_16_19(17, B, C, D, E, T, A, X1, X1, X3, X9, X14);
|
||||
BODY_16_19(18, A, B, C, D, E, T, X2, X2, X4, X10, X15);
|
||||
BODY_16_19(19, T, A, B, C, D, E, X3, X3, X5, X11, X0);
|
||||
sha1_msg_schedule_update(&X0, X2, X8, X13);
|
||||
sha1_msg_schedule_update(&X1, X3, X9, X14);
|
||||
sha1_msg_schedule_update(&X2, X4, X10, X15);
|
||||
sha1_msg_schedule_update(&X3, X5, X11, X0);
|
||||
sha1_msg_schedule_update(&X4, X6, X12, X1);
|
||||
sha1_msg_schedule_update(&X5, X7, X13, X2);
|
||||
sha1_msg_schedule_update(&X6, X8, X14, X3);
|
||||
sha1_msg_schedule_update(&X7, X9, X15, X4);
|
||||
sha1_msg_schedule_update(&X8, X10, X0, X5);
|
||||
sha1_msg_schedule_update(&X9, X11, X1, X6);
|
||||
sha1_msg_schedule_update(&X10, X12, X2, X7);
|
||||
sha1_msg_schedule_update(&X11, X13, X3, X8);
|
||||
sha1_msg_schedule_update(&X12, X14, X4, X9);
|
||||
sha1_msg_schedule_update(&X13, X15, X5, X10);
|
||||
sha1_msg_schedule_update(&X14, X0, X6, X11);
|
||||
sha1_msg_schedule_update(&X15, X1, X7, X12);
|
||||
|
||||
BODY_20_31(20, E, T, A, B, C, D, X4, X4, X6, X12, X1);
|
||||
BODY_20_31(21, D, E, T, A, B, C, X5, X5, X7, X13, X2);
|
||||
BODY_20_31(22, C, D, E, T, A, B, X6, X6, X8, X14, X3);
|
||||
BODY_20_31(23, B, C, D, E, T, A, X7, X7, X9, X15, X4);
|
||||
BODY_20_31(24, A, B, C, D, E, T, X8, X8, X10, X0, X5);
|
||||
BODY_20_31(25, T, A, B, C, D, E, X9, X9, X11, X1, X6);
|
||||
BODY_20_31(26, E, T, A, B, C, D, X10, X10, X12, X2, X7);
|
||||
BODY_20_31(27, D, E, T, A, B, C, X11, X11, X13, X3, X8);
|
||||
BODY_20_31(28, C, D, E, T, A, B, X12, X12, X14, X4, X9);
|
||||
BODY_20_31(29, B, C, D, E, T, A, X13, X13, X15, X5, X10);
|
||||
BODY_20_31(30, A, B, C, D, E, T, X14, X14, X0, X6, X11);
|
||||
BODY_20_31(31, T, A, B, C, D, E, X15, X15, X1, X7, X12);
|
||||
sha1_round1(&a, &b, &c, &d, &e, X0);
|
||||
sha1_round1(&a, &b, &c, &d, &e, X1);
|
||||
sha1_round1(&a, &b, &c, &d, &e, X2);
|
||||
sha1_round1(&a, &b, &c, &d, &e, X3);
|
||||
sha1_round2(&a, &b, &c, &d, &e, X4);
|
||||
sha1_round2(&a, &b, &c, &d, &e, X5);
|
||||
sha1_round2(&a, &b, &c, &d, &e, X6);
|
||||
sha1_round2(&a, &b, &c, &d, &e, X7);
|
||||
sha1_round2(&a, &b, &c, &d, &e, X8);
|
||||
sha1_round2(&a, &b, &c, &d, &e, X9);
|
||||
sha1_round2(&a, &b, &c, &d, &e, X10);
|
||||
sha1_round2(&a, &b, &c, &d, &e, X11);
|
||||
sha1_round2(&a, &b, &c, &d, &e, X12);
|
||||
sha1_round2(&a, &b, &c, &d, &e, X13);
|
||||
sha1_round2(&a, &b, &c, &d, &e, X14);
|
||||
sha1_round2(&a, &b, &c, &d, &e, X15);
|
||||
|
||||
BODY_32_39(32, E, T, A, B, C, D, X0, X2, X8, X13);
|
||||
BODY_32_39(33, D, E, T, A, B, C, X1, X3, X9, X14);
|
||||
BODY_32_39(34, C, D, E, T, A, B, X2, X4, X10, X15);
|
||||
BODY_32_39(35, B, C, D, E, T, A, X3, X5, X11, X0);
|
||||
BODY_32_39(36, A, B, C, D, E, T, X4, X6, X12, X1);
|
||||
BODY_32_39(37, T, A, B, C, D, E, X5, X7, X13, X2);
|
||||
BODY_32_39(38, E, T, A, B, C, D, X6, X8, X14, X3);
|
||||
BODY_32_39(39, D, E, T, A, B, C, X7, X9, X15, X4);
|
||||
sha1_msg_schedule_update(&X0, X2, X8, X13);
|
||||
sha1_msg_schedule_update(&X1, X3, X9, X14);
|
||||
sha1_msg_schedule_update(&X2, X4, X10, X15);
|
||||
sha1_msg_schedule_update(&X3, X5, X11, X0);
|
||||
sha1_msg_schedule_update(&X4, X6, X12, X1);
|
||||
sha1_msg_schedule_update(&X5, X7, X13, X2);
|
||||
sha1_msg_schedule_update(&X6, X8, X14, X3);
|
||||
sha1_msg_schedule_update(&X7, X9, X15, X4);
|
||||
sha1_msg_schedule_update(&X8, X10, X0, X5);
|
||||
sha1_msg_schedule_update(&X9, X11, X1, X6);
|
||||
sha1_msg_schedule_update(&X10, X12, X2, X7);
|
||||
sha1_msg_schedule_update(&X11, X13, X3, X8);
|
||||
sha1_msg_schedule_update(&X12, X14, X4, X9);
|
||||
sha1_msg_schedule_update(&X13, X15, X5, X10);
|
||||
sha1_msg_schedule_update(&X14, X0, X6, X11);
|
||||
sha1_msg_schedule_update(&X15, X1, X7, X12);
|
||||
|
||||
BODY_40_59(40, C, D, E, T, A, B, X8, X10, X0, X5);
|
||||
BODY_40_59(41, B, C, D, E, T, A, X9, X11, X1, X6);
|
||||
BODY_40_59(42, A, B, C, D, E, T, X10, X12, X2, X7);
|
||||
BODY_40_59(43, T, A, B, C, D, E, X11, X13, X3, X8);
|
||||
BODY_40_59(44, E, T, A, B, C, D, X12, X14, X4, X9);
|
||||
BODY_40_59(45, D, E, T, A, B, C, X13, X15, X5, X10);
|
||||
BODY_40_59(46, C, D, E, T, A, B, X14, X0, X6, X11);
|
||||
BODY_40_59(47, B, C, D, E, T, A, X15, X1, X7, X12);
|
||||
BODY_40_59(48, A, B, C, D, E, T, X0, X2, X8, X13);
|
||||
BODY_40_59(49, T, A, B, C, D, E, X1, X3, X9, X14);
|
||||
BODY_40_59(50, E, T, A, B, C, D, X2, X4, X10, X15);
|
||||
BODY_40_59(51, D, E, T, A, B, C, X3, X5, X11, X0);
|
||||
BODY_40_59(52, C, D, E, T, A, B, X4, X6, X12, X1);
|
||||
BODY_40_59(53, B, C, D, E, T, A, X5, X7, X13, X2);
|
||||
BODY_40_59(54, A, B, C, D, E, T, X6, X8, X14, X3);
|
||||
BODY_40_59(55, T, A, B, C, D, E, X7, X9, X15, X4);
|
||||
BODY_40_59(56, E, T, A, B, C, D, X8, X10, X0, X5);
|
||||
BODY_40_59(57, D, E, T, A, B, C, X9, X11, X1, X6);
|
||||
BODY_40_59(58, C, D, E, T, A, B, X10, X12, X2, X7);
|
||||
BODY_40_59(59, B, C, D, E, T, A, X11, X13, X3, X8);
|
||||
sha1_round2(&a, &b, &c, &d, &e, X0);
|
||||
sha1_round2(&a, &b, &c, &d, &e, X1);
|
||||
sha1_round2(&a, &b, &c, &d, &e, X2);
|
||||
sha1_round2(&a, &b, &c, &d, &e, X3);
|
||||
sha1_round2(&a, &b, &c, &d, &e, X4);
|
||||
sha1_round2(&a, &b, &c, &d, &e, X5);
|
||||
sha1_round2(&a, &b, &c, &d, &e, X6);
|
||||
sha1_round2(&a, &b, &c, &d, &e, X7);
|
||||
sha1_round3(&a, &b, &c, &d, &e, X8);
|
||||
sha1_round3(&a, &b, &c, &d, &e, X9);
|
||||
sha1_round3(&a, &b, &c, &d, &e, X10);
|
||||
sha1_round3(&a, &b, &c, &d, &e, X11);
|
||||
sha1_round3(&a, &b, &c, &d, &e, X12);
|
||||
sha1_round3(&a, &b, &c, &d, &e, X13);
|
||||
sha1_round3(&a, &b, &c, &d, &e, X14);
|
||||
sha1_round3(&a, &b, &c, &d, &e, X15);
|
||||
|
||||
BODY_60_79(60, A, B, C, D, E, T, X12, X14, X4, X9);
|
||||
BODY_60_79(61, T, A, B, C, D, E, X13, X15, X5, X10);
|
||||
BODY_60_79(62, E, T, A, B, C, D, X14, X0, X6, X11);
|
||||
BODY_60_79(63, D, E, T, A, B, C, X15, X1, X7, X12);
|
||||
BODY_60_79(64, C, D, E, T, A, B, X0, X2, X8, X13);
|
||||
BODY_60_79(65, B, C, D, E, T, A, X1, X3, X9, X14);
|
||||
BODY_60_79(66, A, B, C, D, E, T, X2, X4, X10, X15);
|
||||
BODY_60_79(67, T, A, B, C, D, E, X3, X5, X11, X0);
|
||||
BODY_60_79(68, E, T, A, B, C, D, X4, X6, X12, X1);
|
||||
BODY_60_79(69, D, E, T, A, B, C, X5, X7, X13, X2);
|
||||
BODY_60_79(70, C, D, E, T, A, B, X6, X8, X14, X3);
|
||||
BODY_60_79(71, B, C, D, E, T, A, X7, X9, X15, X4);
|
||||
BODY_60_79(72, A, B, C, D, E, T, X8, X10, X0, X5);
|
||||
BODY_60_79(73, T, A, B, C, D, E, X9, X11, X1, X6);
|
||||
BODY_60_79(74, E, T, A, B, C, D, X10, X12, X2, X7);
|
||||
BODY_60_79(75, D, E, T, A, B, C, X11, X13, X3, X8);
|
||||
BODY_60_79(76, C, D, E, T, A, B, X12, X14, X4, X9);
|
||||
BODY_60_79(77, B, C, D, E, T, A, X13, X15, X5, X10);
|
||||
BODY_60_79(78, A, B, C, D, E, T, X14, X0, X6, X11);
|
||||
BODY_60_79(79, T, A, B, C, D, E, X15, X1, X7, X12);
|
||||
sha1_msg_schedule_update(&X0, X2, X8, X13);
|
||||
sha1_msg_schedule_update(&X1, X3, X9, X14);
|
||||
sha1_msg_schedule_update(&X2, X4, X10, X15);
|
||||
sha1_msg_schedule_update(&X3, X5, X11, X0);
|
||||
sha1_msg_schedule_update(&X4, X6, X12, X1);
|
||||
sha1_msg_schedule_update(&X5, X7, X13, X2);
|
||||
sha1_msg_schedule_update(&X6, X8, X14, X3);
|
||||
sha1_msg_schedule_update(&X7, X9, X15, X4);
|
||||
sha1_msg_schedule_update(&X8, X10, X0, X5);
|
||||
sha1_msg_schedule_update(&X9, X11, X1, X6);
|
||||
sha1_msg_schedule_update(&X10, X12, X2, X7);
|
||||
sha1_msg_schedule_update(&X11, X13, X3, X8);
|
||||
sha1_msg_schedule_update(&X12, X14, X4, X9);
|
||||
sha1_msg_schedule_update(&X13, X15, X5, X10);
|
||||
sha1_msg_schedule_update(&X14, X0, X6, X11);
|
||||
sha1_msg_schedule_update(&X15, X1, X7, X12);
|
||||
|
||||
c->h0 = (c->h0 + E)&0xffffffffL;
|
||||
c->h1 = (c->h1 + T)&0xffffffffL;
|
||||
c->h2 = (c->h2 + A)&0xffffffffL;
|
||||
c->h3 = (c->h3 + B)&0xffffffffL;
|
||||
c->h4 = (c->h4 + C)&0xffffffffL;
|
||||
sha1_round3(&a, &b, &c, &d, &e, X0);
|
||||
sha1_round3(&a, &b, &c, &d, &e, X1);
|
||||
sha1_round3(&a, &b, &c, &d, &e, X2);
|
||||
sha1_round3(&a, &b, &c, &d, &e, X3);
|
||||
sha1_round3(&a, &b, &c, &d, &e, X4);
|
||||
sha1_round3(&a, &b, &c, &d, &e, X5);
|
||||
sha1_round3(&a, &b, &c, &d, &e, X6);
|
||||
sha1_round3(&a, &b, &c, &d, &e, X7);
|
||||
sha1_round3(&a, &b, &c, &d, &e, X8);
|
||||
sha1_round3(&a, &b, &c, &d, &e, X9);
|
||||
sha1_round3(&a, &b, &c, &d, &e, X10);
|
||||
sha1_round3(&a, &b, &c, &d, &e, X11);
|
||||
sha1_round4(&a, &b, &c, &d, &e, X12);
|
||||
sha1_round4(&a, &b, &c, &d, &e, X13);
|
||||
sha1_round4(&a, &b, &c, &d, &e, X14);
|
||||
sha1_round4(&a, &b, &c, &d, &e, X15);
|
||||
|
||||
sha1_msg_schedule_update(&X0, X2, X8, X13);
|
||||
sha1_msg_schedule_update(&X1, X3, X9, X14);
|
||||
sha1_msg_schedule_update(&X2, X4, X10, X15);
|
||||
sha1_msg_schedule_update(&X3, X5, X11, X0);
|
||||
sha1_msg_schedule_update(&X4, X6, X12, X1);
|
||||
sha1_msg_schedule_update(&X5, X7, X13, X2);
|
||||
sha1_msg_schedule_update(&X6, X8, X14, X3);
|
||||
sha1_msg_schedule_update(&X7, X9, X15, X4);
|
||||
sha1_msg_schedule_update(&X8, X10, X0, X5);
|
||||
sha1_msg_schedule_update(&X9, X11, X1, X6);
|
||||
sha1_msg_schedule_update(&X10, X12, X2, X7);
|
||||
sha1_msg_schedule_update(&X11, X13, X3, X8);
|
||||
sha1_msg_schedule_update(&X12, X14, X4, X9);
|
||||
sha1_msg_schedule_update(&X13, X15, X5, X10);
|
||||
sha1_msg_schedule_update(&X14, X0, X6, X11);
|
||||
sha1_msg_schedule_update(&X15, X1, X7, X12);
|
||||
|
||||
sha1_round4(&a, &b, &c, &d, &e, X0);
|
||||
sha1_round4(&a, &b, &c, &d, &e, X1);
|
||||
sha1_round4(&a, &b, &c, &d, &e, X2);
|
||||
sha1_round4(&a, &b, &c, &d, &e, X3);
|
||||
sha1_round4(&a, &b, &c, &d, &e, X4);
|
||||
sha1_round4(&a, &b, &c, &d, &e, X5);
|
||||
sha1_round4(&a, &b, &c, &d, &e, X6);
|
||||
sha1_round4(&a, &b, &c, &d, &e, X7);
|
||||
sha1_round4(&a, &b, &c, &d, &e, X8);
|
||||
sha1_round4(&a, &b, &c, &d, &e, X9);
|
||||
sha1_round4(&a, &b, &c, &d, &e, X10);
|
||||
sha1_round4(&a, &b, &c, &d, &e, X11);
|
||||
sha1_round4(&a, &b, &c, &d, &e, X12);
|
||||
sha1_round4(&a, &b, &c, &d, &e, X13);
|
||||
sha1_round4(&a, &b, &c, &d, &e, X14);
|
||||
sha1_round4(&a, &b, &c, &d, &e, X15);
|
||||
|
||||
ctx->h0 += a;
|
||||
ctx->h1 += b;
|
||||
ctx->h2 += c;
|
||||
ctx->h3 += d;
|
||||
ctx->h4 += e;
|
||||
}
|
||||
}
|
||||
#endif
|
||||
|
||||
|
||||
int
|
||||
SHA1_Init(SHA_CTX *c)
|
||||
{
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
/* $OpenBSD: sha256.c,v 1.30 2023/08/11 15:27:28 jsing Exp $ */
|
||||
/* $OpenBSD: sha256.c,v 1.31 2024/03/28 04:23:02 jsing Exp $ */
|
||||
/* ====================================================================
|
||||
* Copyright (c) 1998-2011 The OpenSSL Project. All rights reserved.
|
||||
*
|
||||
|
@ -131,16 +131,14 @@ Maj(SHA_LONG x, SHA_LONG y, SHA_LONG z)
|
|||
}
|
||||
|
||||
static inline void
|
||||
sha256_msg_schedule_update(SHA_LONG *W0, SHA_LONG W1,
|
||||
SHA_LONG W9, SHA_LONG W14)
|
||||
sha256_msg_schedule_update(SHA_LONG *W0, SHA_LONG W1, SHA_LONG W9, SHA_LONG W14)
|
||||
{
|
||||
*W0 = sigma1(W14) + W9 + sigma0(W1) + *W0;
|
||||
}
|
||||
|
||||
static inline void
|
||||
sha256_round(SHA_LONG *a, SHA_LONG *b, SHA_LONG *c, SHA_LONG *d,
|
||||
SHA_LONG *e, SHA_LONG *f, SHA_LONG *g, SHA_LONG *h,
|
||||
SHA_LONG Kt, SHA_LONG Wt)
|
||||
sha256_round(SHA_LONG *a, SHA_LONG *b, SHA_LONG *c, SHA_LONG *d, SHA_LONG *e,
|
||||
SHA_LONG *f, SHA_LONG *g, SHA_LONG *h, SHA_LONG Kt, SHA_LONG Wt)
|
||||
{
|
||||
SHA_LONG T1, T2;
|
||||
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
/* $OpenBSD: sm3.c,v 1.6 2023/07/08 06:36:55 jsing Exp $ */
|
||||
/* $OpenBSD: sm3.c,v 1.17 2024/03/28 12:09:09 jsing Exp $ */
|
||||
/*
|
||||
* Copyright (c) 2018, Ribose Inc
|
||||
*
|
||||
|
@ -15,42 +15,21 @@
|
|||
* OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
|
||||
*/
|
||||
|
||||
#ifndef OPENSSL_NO_SM3
|
||||
|
||||
#include <openssl/sm3.h>
|
||||
|
||||
#include <string.h>
|
||||
|
||||
#include <openssl/opensslconf.h>
|
||||
|
||||
#define DATA_ORDER_IS_BIG_ENDIAN
|
||||
#include <openssl/sm3.h>
|
||||
|
||||
#define HASH_LONG SM3_WORD
|
||||
#define HASH_CTX SM3_CTX
|
||||
#define HASH_CBLOCK SM3_CBLOCK
|
||||
#define HASH_UPDATE SM3_Update
|
||||
#define HASH_TRANSFORM SM3_Transform
|
||||
#define HASH_FINAL SM3_Final
|
||||
#define HASH_MAKE_STRING(c, s) do { \
|
||||
unsigned long ll; \
|
||||
ll = (c)->A; HOST_l2c(ll, (s)); \
|
||||
ll = (c)->B; HOST_l2c(ll, (s)); \
|
||||
ll = (c)->C; HOST_l2c(ll, (s)); \
|
||||
ll = (c)->D; HOST_l2c(ll, (s)); \
|
||||
ll = (c)->E; HOST_l2c(ll, (s)); \
|
||||
ll = (c)->F; HOST_l2c(ll, (s)); \
|
||||
ll = (c)->G; HOST_l2c(ll, (s)); \
|
||||
ll = (c)->H; HOST_l2c(ll, (s)); \
|
||||
} while (0)
|
||||
#define HASH_BLOCK_DATA_ORDER SM3_block_data_order
|
||||
#include "crypto_internal.h"
|
||||
|
||||
void SM3_block_data_order(SM3_CTX *c, const void *p, size_t num);
|
||||
void SM3_transform(SM3_CTX *c, const unsigned char *data);
|
||||
/* Ensure that SM3_WORD and uint32_t are equivalent size. */
|
||||
CTASSERT(sizeof(SM3_WORD) == sizeof(uint32_t));
|
||||
|
||||
#include "md32_common.h"
|
||||
#ifndef OPENSSL_NO_SM3
|
||||
|
||||
#define P0(X) (X ^ ROTATE(X, 9) ^ ROTATE(X, 17))
|
||||
#define P1(X) (X ^ ROTATE(X, 15) ^ ROTATE(X, 23))
|
||||
#define P0(X) (X ^ crypto_rol_u32(X, 9) ^ crypto_rol_u32(X, 17))
|
||||
#define P1(X) (X ^ crypto_rol_u32(X, 15) ^ crypto_rol_u32(X, 23))
|
||||
|
||||
#define FF0(X, Y, Z) (X ^ Y ^ Z)
|
||||
#define GG0(X, Y, Z) (X ^ Y ^ Z)
|
||||
|
@ -59,17 +38,17 @@ void SM3_transform(SM3_CTX *c, const unsigned char *data);
|
|||
#define GG1(X, Y, Z) ((Z ^ (X & (Y ^ Z))))
|
||||
|
||||
#define EXPAND(W0, W7, W13, W3, W10) \
|
||||
(P1(W0 ^ W7 ^ ROTATE(W13, 15)) ^ ROTATE(W3, 7) ^ W10)
|
||||
(P1(W0 ^ W7 ^ crypto_rol_u32(W13, 15)) ^ crypto_rol_u32(W3, 7) ^ W10)
|
||||
|
||||
#define ROUND(A, B, C, D, E, F, G, H, TJ, Wi, Wj, FF, GG) do { \
|
||||
const SM3_WORD A12 = ROTATE(A, 12); \
|
||||
const SM3_WORD A12 = crypto_rol_u32(A, 12); \
|
||||
const SM3_WORD A12_SM = A12 + E + TJ; \
|
||||
const SM3_WORD SS1 = ROTATE(A12_SM, 7); \
|
||||
const SM3_WORD SS1 = crypto_rol_u32(A12_SM, 7); \
|
||||
const SM3_WORD TT1 = FF(A, B, C) + D + (SS1 ^ A12) + (Wj); \
|
||||
const SM3_WORD TT2 = GG(E, F, G) + H + SS1 + Wi; \
|
||||
B = ROTATE(B, 9); \
|
||||
B = crypto_rol_u32(B, 9); \
|
||||
D = TT1; \
|
||||
F = ROTATE(F, 19); \
|
||||
F = crypto_rol_u32(F, 19); \
|
||||
H = P0(TT2); \
|
||||
} while(0)
|
||||
|
||||
|
@ -79,38 +58,11 @@ void SM3_transform(SM3_CTX *c, const unsigned char *data);
|
|||
#define R2(A, B, C, D, E, F, G, H, TJ, Wi, Wj) \
|
||||
ROUND(A, B, C, D, E, F, G, H, TJ, Wi, Wj, FF1, GG1)
|
||||
|
||||
#define SM3_A 0x7380166fUL
|
||||
#define SM3_B 0x4914b2b9UL
|
||||
#define SM3_C 0x172442d7UL
|
||||
#define SM3_D 0xda8a0600UL
|
||||
#define SM3_E 0xa96f30bcUL
|
||||
#define SM3_F 0x163138aaUL
|
||||
#define SM3_G 0xe38dee4dUL
|
||||
#define SM3_H 0xb0fb0e4eUL
|
||||
|
||||
LCRYPTO_ALIAS(SM3_Update);
|
||||
LCRYPTO_ALIAS(SM3_Final);
|
||||
|
||||
int
|
||||
SM3_Init(SM3_CTX *c)
|
||||
static void
|
||||
sm3_block_data_order(SM3_CTX *ctx, const void *_in, size_t num)
|
||||
{
|
||||
memset(c, 0, sizeof(*c));
|
||||
c->A = SM3_A;
|
||||
c->B = SM3_B;
|
||||
c->C = SM3_C;
|
||||
c->D = SM3_D;
|
||||
c->E = SM3_E;
|
||||
c->F = SM3_F;
|
||||
c->G = SM3_G;
|
||||
c->H = SM3_H;
|
||||
return 1;
|
||||
}
|
||||
LCRYPTO_ALIAS(SM3_Init);
|
||||
|
||||
void
|
||||
SM3_block_data_order(SM3_CTX *ctx, const void *p, size_t num)
|
||||
{
|
||||
const unsigned char *data = p;
|
||||
const uint8_t *in = _in;
|
||||
const SM3_WORD *in32;
|
||||
SM3_WORD A, B, C, D, E, F, G, H;
|
||||
SM3_WORD W00, W01, W02, W03, W04, W05, W06, W07;
|
||||
SM3_WORD W08, W09, W10, W11, W12, W13, W14, W15;
|
||||
|
@ -129,22 +81,45 @@ SM3_block_data_order(SM3_CTX *ctx, const void *p, size_t num)
|
|||
* We have to load all message bytes immediately since SM3 reads
|
||||
* them slightly out of order.
|
||||
*/
|
||||
HOST_c2l(data, W00);
|
||||
HOST_c2l(data, W01);
|
||||
HOST_c2l(data, W02);
|
||||
HOST_c2l(data, W03);
|
||||
HOST_c2l(data, W04);
|
||||
HOST_c2l(data, W05);
|
||||
HOST_c2l(data, W06);
|
||||
HOST_c2l(data, W07);
|
||||
HOST_c2l(data, W08);
|
||||
HOST_c2l(data, W09);
|
||||
HOST_c2l(data, W10);
|
||||
HOST_c2l(data, W11);
|
||||
HOST_c2l(data, W12);
|
||||
HOST_c2l(data, W13);
|
||||
HOST_c2l(data, W14);
|
||||
HOST_c2l(data, W15);
|
||||
if ((uintptr_t)in % 4 == 0) {
|
||||
/* Input is 32 bit aligned. */
|
||||
in32 = (const SM3_WORD *)in;
|
||||
W00 = be32toh(in32[0]);
|
||||
W01 = be32toh(in32[1]);
|
||||
W02 = be32toh(in32[2]);
|
||||
W03 = be32toh(in32[3]);
|
||||
W04 = be32toh(in32[4]);
|
||||
W05 = be32toh(in32[5]);
|
||||
W06 = be32toh(in32[6]);
|
||||
W07 = be32toh(in32[7]);
|
||||
W08 = be32toh(in32[8]);
|
||||
W09 = be32toh(in32[9]);
|
||||
W10 = be32toh(in32[10]);
|
||||
W11 = be32toh(in32[11]);
|
||||
W12 = be32toh(in32[12]);
|
||||
W13 = be32toh(in32[13]);
|
||||
W14 = be32toh(in32[14]);
|
||||
W15 = be32toh(in32[15]);
|
||||
} else {
|
||||
/* Input is not 32 bit aligned. */
|
||||
W00 = crypto_load_be32toh(&in[0 * 4]);
|
||||
W01 = crypto_load_be32toh(&in[1 * 4]);
|
||||
W02 = crypto_load_be32toh(&in[2 * 4]);
|
||||
W03 = crypto_load_be32toh(&in[3 * 4]);
|
||||
W04 = crypto_load_be32toh(&in[4 * 4]);
|
||||
W05 = crypto_load_be32toh(&in[5 * 4]);
|
||||
W06 = crypto_load_be32toh(&in[6 * 4]);
|
||||
W07 = crypto_load_be32toh(&in[7 * 4]);
|
||||
W08 = crypto_load_be32toh(&in[8 * 4]);
|
||||
W09 = crypto_load_be32toh(&in[9 * 4]);
|
||||
W10 = crypto_load_be32toh(&in[10 * 4]);
|
||||
W11 = crypto_load_be32toh(&in[11 * 4]);
|
||||
W12 = crypto_load_be32toh(&in[12 * 4]);
|
||||
W13 = crypto_load_be32toh(&in[13 * 4]);
|
||||
W14 = crypto_load_be32toh(&in[14 * 4]);
|
||||
W15 = crypto_load_be32toh(&in[15 * 4]);
|
||||
}
|
||||
in += SM3_CBLOCK;
|
||||
|
||||
R1(A, B, C, D, E, F, G, H, 0x79cc4519, W00, W00 ^ W04);
|
||||
W00 = EXPAND(W00, W07, W13, W03, W10);
|
||||
|
@ -274,4 +249,113 @@ SM3_block_data_order(SM3_CTX *ctx, const void *p, size_t num)
|
|||
}
|
||||
}
|
||||
|
||||
int
|
||||
SM3_Init(SM3_CTX *c)
|
||||
{
|
||||
memset(c, 0, sizeof(*c));
|
||||
|
||||
c->A = 0x7380166fUL;
|
||||
c->B = 0x4914b2b9UL;
|
||||
c->C = 0x172442d7UL;
|
||||
c->D = 0xda8a0600UL;
|
||||
c->E = 0xa96f30bcUL;
|
||||
c->F = 0x163138aaUL;
|
||||
c->G = 0xe38dee4dUL;
|
||||
c->H = 0xb0fb0e4eUL;
|
||||
|
||||
return 1;
|
||||
}
|
||||
LCRYPTO_ALIAS(SM3_Init);
|
||||
|
||||
int
|
||||
SM3_Update(SM3_CTX *c, const void *data_, size_t len)
|
||||
{
|
||||
const unsigned char *data = data_;
|
||||
unsigned char *p;
|
||||
SM3_WORD l;
|
||||
size_t n;
|
||||
|
||||
if (len == 0)
|
||||
return 1;
|
||||
|
||||
l = (c->Nl + (((SM3_WORD)len) << 3))&0xffffffffUL;
|
||||
/* 95-05-24 eay Fixed a bug with the overflow handling, thanks to
|
||||
* Wei Dai <weidai@eskimo.com> for pointing it out. */
|
||||
if (l < c->Nl) /* overflow */
|
||||
c->Nh++;
|
||||
c->Nh+=(SM3_WORD)(len>>29); /* might cause compiler warning on 16-bit */
|
||||
c->Nl = l;
|
||||
|
||||
n = c->num;
|
||||
if (n != 0) {
|
||||
p = (unsigned char *)c->data;
|
||||
|
||||
if (len >= SM3_CBLOCK || len + n >= SM3_CBLOCK) {
|
||||
memcpy(p + n, data, SM3_CBLOCK - n);
|
||||
sm3_block_data_order(c, p, 1);
|
||||
n = SM3_CBLOCK - n;
|
||||
data += n;
|
||||
len -= n;
|
||||
c->num = 0;
|
||||
memset(p, 0, SM3_CBLOCK); /* keep it zeroed */
|
||||
} else {
|
||||
memcpy(p + n, data, len);
|
||||
c->num += (unsigned int)len;
|
||||
return 1;
|
||||
}
|
||||
}
|
||||
|
||||
n = len / SM3_CBLOCK;
|
||||
if (n > 0) {
|
||||
sm3_block_data_order(c, data, n);
|
||||
n *= SM3_CBLOCK;
|
||||
data += n;
|
||||
len -= n;
|
||||
}
|
||||
|
||||
if (len != 0) {
|
||||
p = (unsigned char *)c->data;
|
||||
c->num = (unsigned int)len;
|
||||
memcpy(p, data, len);
|
||||
}
|
||||
return 1;
|
||||
}
|
||||
LCRYPTO_ALIAS(SM3_Update);
|
||||
|
||||
int
|
||||
SM3_Final(unsigned char *md, SM3_CTX *c)
|
||||
{
|
||||
unsigned char *p = (unsigned char *)c->data;
|
||||
size_t n = c->num;
|
||||
|
||||
p[n] = 0x80; /* there is always room for one */
|
||||
n++;
|
||||
|
||||
if (n > (SM3_CBLOCK - 8)) {
|
||||
memset(p + n, 0, SM3_CBLOCK - n);
|
||||
n = 0;
|
||||
sm3_block_data_order(c, p, 1);
|
||||
}
|
||||
|
||||
memset(p + n, 0, SM3_CBLOCK - 8 - n);
|
||||
c->data[SM3_LBLOCK - 2] = htobe32(c->Nh);
|
||||
c->data[SM3_LBLOCK - 1] = htobe32(c->Nl);
|
||||
|
||||
sm3_block_data_order(c, p, 1);
|
||||
c->num = 0;
|
||||
memset(p, 0, SM3_CBLOCK);
|
||||
|
||||
crypto_store_htobe32(&md[0 * 4], c->A);
|
||||
crypto_store_htobe32(&md[1 * 4], c->B);
|
||||
crypto_store_htobe32(&md[2 * 4], c->C);
|
||||
crypto_store_htobe32(&md[3 * 4], c->D);
|
||||
crypto_store_htobe32(&md[4 * 4], c->E);
|
||||
crypto_store_htobe32(&md[5 * 4], c->F);
|
||||
crypto_store_htobe32(&md[6 * 4], c->G);
|
||||
crypto_store_htobe32(&md[7 * 4], c->H);
|
||||
|
||||
return 1;
|
||||
}
|
||||
LCRYPTO_ALIAS(SM3_Final);
|
||||
|
||||
#endif /* !OPENSSL_NO_SM3 */
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
/* $OpenBSD: wp_dgst.c,v 1.7 2023/09/04 08:43:41 tb Exp $ */
|
||||
/* $OpenBSD: wp_dgst.c,v 1.8 2024/03/29 00:16:22 jsing Exp $ */
|
||||
/**
|
||||
* The Whirlpool hashing function.
|
||||
*
|
||||
|
@ -58,92 +58,88 @@
|
|||
|
||||
#include "wp_local.h"
|
||||
|
||||
int WHIRLPOOL_Init(WHIRLPOOL_CTX *c)
|
||||
{
|
||||
memset (c,0,sizeof(*c));
|
||||
return(1);
|
||||
}
|
||||
int
|
||||
WHIRLPOOL_Init(WHIRLPOOL_CTX *c)
|
||||
{
|
||||
memset (c, 0, sizeof(*c));
|
||||
return (1);
|
||||
}
|
||||
|
||||
int WHIRLPOOL_Update (WHIRLPOOL_CTX *c,const void *_inp,size_t bytes)
|
||||
{
|
||||
int
|
||||
WHIRLPOOL_Update(WHIRLPOOL_CTX *c, const void *_inp, size_t bytes)
|
||||
{
|
||||
/* Well, largest suitable chunk size actually is
|
||||
* (1<<(sizeof(size_t)*8-3))-64, but below number
|
||||
* is large enough for not to care about excessive
|
||||
* calls to WHIRLPOOL_BitUpdate... */
|
||||
size_t chunk = ((size_t)1)<<(sizeof(size_t)*8-4);
|
||||
size_t chunk = ((size_t)1) << (sizeof(size_t)*8 - 4);
|
||||
const unsigned char *inp = _inp;
|
||||
|
||||
while (bytes>=chunk)
|
||||
{
|
||||
WHIRLPOOL_BitUpdate(c,inp,chunk*8);
|
||||
while (bytes >= chunk) {
|
||||
WHIRLPOOL_BitUpdate(c, inp, chunk*8);
|
||||
bytes -= chunk;
|
||||
inp += chunk;
|
||||
}
|
||||
if (bytes)
|
||||
WHIRLPOOL_BitUpdate(c,inp,bytes*8);
|
||||
|
||||
return(1);
|
||||
inp += chunk;
|
||||
}
|
||||
if (bytes)
|
||||
WHIRLPOOL_BitUpdate(c, inp, bytes*8);
|
||||
|
||||
void WHIRLPOOL_BitUpdate(WHIRLPOOL_CTX *c,const void *_inp,size_t bits)
|
||||
{
|
||||
return (1);
|
||||
}
|
||||
|
||||
void
|
||||
WHIRLPOOL_BitUpdate(WHIRLPOOL_CTX *c, const void *_inp, size_t bits)
|
||||
{
|
||||
size_t n;
|
||||
unsigned int bitoff = c->bitoff,
|
||||
bitrem = bitoff%8,
|
||||
inpgap = (8-(unsigned int)bits%8)&7;
|
||||
const unsigned char *inp=_inp;
|
||||
bitrem = bitoff % 8,
|
||||
inpgap = (8 - (unsigned int)bits % 8)&7;
|
||||
const unsigned char *inp = _inp;
|
||||
|
||||
/* This 256-bit increment procedure relies on the size_t
|
||||
* being natural size of CPU register, so that we don't
|
||||
* have to mask the value in order to detect overflows. */
|
||||
c->bitlen[0] += bits;
|
||||
if (c->bitlen[0] < bits) /* overflow */
|
||||
{
|
||||
{
|
||||
n = 1;
|
||||
do { c->bitlen[n]++;
|
||||
} while(c->bitlen[n]==0
|
||||
&& ++n<(WHIRLPOOL_COUNTER/sizeof(size_t)));
|
||||
}
|
||||
do {
|
||||
c->bitlen[n]++;
|
||||
} while (c->bitlen[n]==0 &&
|
||||
++n < (WHIRLPOOL_COUNTER/sizeof(size_t)));
|
||||
}
|
||||
|
||||
#ifndef OPENSSL_SMALL_FOOTPRINT
|
||||
reconsider:
|
||||
reconsider:
|
||||
if (inpgap==0 && bitrem==0) /* byte-oriented loop */
|
||||
{
|
||||
while (bits)
|
||||
{
|
||||
if (bitoff==0 && (n=bits/WHIRLPOOL_BBLOCK))
|
||||
{
|
||||
whirlpool_block(c,inp,n);
|
||||
inp += n*WHIRLPOOL_BBLOCK/8;
|
||||
{
|
||||
while (bits) {
|
||||
if (bitoff == 0 && (n = bits/WHIRLPOOL_BBLOCK)) {
|
||||
whirlpool_block(c, inp, n);
|
||||
inp += n*WHIRLPOOL_BBLOCK/8;
|
||||
bits %= WHIRLPOOL_BBLOCK;
|
||||
}
|
||||
else
|
||||
{
|
||||
} else {
|
||||
unsigned int byteoff = bitoff/8;
|
||||
|
||||
bitrem = WHIRLPOOL_BBLOCK - bitoff;/* re-use bitrem */
|
||||
if (bits >= bitrem)
|
||||
{
|
||||
if (bits >= bitrem) {
|
||||
bits -= bitrem;
|
||||
bitrem /= 8;
|
||||
memcpy(c->data+byteoff,inp,bitrem);
|
||||
inp += bitrem;
|
||||
whirlpool_block(c,c->data,1);
|
||||
memcpy(c->data + byteoff, inp, bitrem);
|
||||
inp += bitrem;
|
||||
whirlpool_block(c, c->data, 1);
|
||||
bitoff = 0;
|
||||
}
|
||||
else
|
||||
{
|
||||
memcpy(c->data+byteoff,inp,bits/8);
|
||||
} else {
|
||||
memcpy(c->data + byteoff, inp, bits/8);
|
||||
bitoff += (unsigned int)bits;
|
||||
bits = 0;
|
||||
}
|
||||
c->bitoff = bitoff;
|
||||
}
|
||||
c->bitoff = bitoff;
|
||||
}
|
||||
}
|
||||
}
|
||||
else /* bit-oriented loop */
|
||||
#endif
|
||||
{
|
||||
{
|
||||
/*
|
||||
inp
|
||||
|
|
||||
|
@ -156,113 +152,116 @@ void WHIRLPOOL_BitUpdate(WHIRLPOOL_CTX *c,const void *_inp,size_t bits)
|
|||
|
|
||||
c->bitoff/8
|
||||
*/
|
||||
while (bits)
|
||||
{
|
||||
unsigned int byteoff = bitoff/8;
|
||||
while (bits) {
|
||||
unsigned int byteoff = bitoff/8;
|
||||
unsigned char b;
|
||||
|
||||
#ifndef OPENSSL_SMALL_FOOTPRINT
|
||||
if (bitrem==inpgap)
|
||||
{
|
||||
c->data[byteoff++] |= inp[0] & (0xff>>inpgap);
|
||||
inpgap = 8-inpgap;
|
||||
if (bitrem == inpgap) {
|
||||
c->data[byteoff++] |= inp[0] & (0xff >> inpgap);
|
||||
inpgap = 8 - inpgap;
|
||||
bitoff += inpgap; bitrem = 0; /* bitoff%8 */
|
||||
bits -= inpgap; inpgap = 0; /* bits%8 */
|
||||
inp++;
|
||||
if (bitoff==WHIRLPOOL_BBLOCK)
|
||||
{
|
||||
whirlpool_block(c,c->data,1);
|
||||
if (bitoff == WHIRLPOOL_BBLOCK) {
|
||||
whirlpool_block(c, c->data, 1);
|
||||
bitoff = 0;
|
||||
}
|
||||
}
|
||||
c->bitoff = bitoff;
|
||||
goto reconsider;
|
||||
}
|
||||
else
|
||||
} else
|
||||
#endif
|
||||
if (bits>=8)
|
||||
{
|
||||
b = ((inp[0]<<inpgap) | (inp[1]>>(8-inpgap)));
|
||||
if (bits >= 8) {
|
||||
b = ((inp[0]<<inpgap) | (inp[1]>>(8 - inpgap)));
|
||||
b &= 0xff;
|
||||
if (bitrem) c->data[byteoff++] |= b>>bitrem;
|
||||
else c->data[byteoff++] = b;
|
||||
if (bitrem)
|
||||
c->data[byteoff++] |= b >> bitrem;
|
||||
else
|
||||
c->data[byteoff++] = b;
|
||||
bitoff += 8;
|
||||
bits -= 8;
|
||||
bits -= 8;
|
||||
inp++;
|
||||
if (bitoff>=WHIRLPOOL_BBLOCK)
|
||||
{
|
||||
whirlpool_block(c,c->data,1);
|
||||
byteoff = 0;
|
||||
if (bitoff >= WHIRLPOOL_BBLOCK) {
|
||||
whirlpool_block(c, c->data, 1);
|
||||
byteoff = 0;
|
||||
bitoff %= WHIRLPOOL_BBLOCK;
|
||||
}
|
||||
if (bitrem) c->data[byteoff] = b<<(8-bitrem);
|
||||
}
|
||||
else /* remaining less than 8 bits */
|
||||
{
|
||||
b = (inp[0]<<inpgap)&0xff;
|
||||
if (bitrem) c->data[byteoff++] |= b>>bitrem;
|
||||
else c->data[byteoff++] = b;
|
||||
bitoff += (unsigned int)bits;
|
||||
if (bitoff==WHIRLPOOL_BBLOCK)
|
||||
{
|
||||
whirlpool_block(c,c->data,1);
|
||||
byteoff = 0;
|
||||
bitoff %= WHIRLPOOL_BBLOCK;
|
||||
}
|
||||
if (bitrem) c->data[byteoff] = b<<(8-bitrem);
|
||||
bits = 0;
|
||||
}
|
||||
c->bitoff = bitoff;
|
||||
if (bitrem)
|
||||
c->data[byteoff] = b << (8 - bitrem);
|
||||
}
|
||||
else /* remaining less than 8 bits */
|
||||
{
|
||||
b = (inp[0]<<inpgap)&0xff;
|
||||
if (bitrem)
|
||||
c->data[byteoff++] |= b >> bitrem;
|
||||
else
|
||||
c->data[byteoff++] = b;
|
||||
bitoff += (unsigned int)bits;
|
||||
if (bitoff == WHIRLPOOL_BBLOCK) {
|
||||
whirlpool_block(c, c->data, 1);
|
||||
byteoff = 0;
|
||||
bitoff %= WHIRLPOOL_BBLOCK;
|
||||
}
|
||||
if (bitrem)
|
||||
c->data[byteoff] = b << (8 - bitrem);
|
||||
bits = 0;
|
||||
}
|
||||
c->bitoff = bitoff;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
int WHIRLPOOL_Final (unsigned char *md,WHIRLPOOL_CTX *c)
|
||||
{
|
||||
unsigned int bitoff = c->bitoff,
|
||||
byteoff = bitoff/8;
|
||||
size_t i,j,v;
|
||||
int
|
||||
WHIRLPOOL_Final(unsigned char *md, WHIRLPOOL_CTX *c)
|
||||
{
|
||||
unsigned int bitoff = c->bitoff,
|
||||
byteoff = bitoff/8;
|
||||
size_t i, j, v;
|
||||
unsigned char *p;
|
||||
|
||||
bitoff %= 8;
|
||||
if (bitoff) c->data[byteoff] |= 0x80>>bitoff;
|
||||
else c->data[byteoff] = 0x80;
|
||||
if (bitoff)
|
||||
c->data[byteoff] |= 0x80 >> bitoff;
|
||||
else
|
||||
c->data[byteoff] = 0x80;
|
||||
byteoff++;
|
||||
|
||||
/* pad with zeros */
|
||||
if (byteoff > (WHIRLPOOL_BBLOCK/8-WHIRLPOOL_COUNTER))
|
||||
{
|
||||
if (byteoff<WHIRLPOOL_BBLOCK/8)
|
||||
memset(&c->data[byteoff],0,WHIRLPOOL_BBLOCK/8-byteoff);
|
||||
whirlpool_block(c,c->data,1);
|
||||
if (byteoff > (WHIRLPOOL_BBLOCK/8 - WHIRLPOOL_COUNTER)) {
|
||||
if (byteoff < WHIRLPOOL_BBLOCK/8)
|
||||
memset(&c->data[byteoff], 0, WHIRLPOOL_BBLOCK/8 - byteoff);
|
||||
whirlpool_block(c, c->data, 1);
|
||||
byteoff = 0;
|
||||
}
|
||||
if (byteoff < (WHIRLPOOL_BBLOCK/8-WHIRLPOOL_COUNTER))
|
||||
memset(&c->data[byteoff],0,
|
||||
(WHIRLPOOL_BBLOCK/8-WHIRLPOOL_COUNTER)-byteoff);
|
||||
}
|
||||
if (byteoff < (WHIRLPOOL_BBLOCK/8 - WHIRLPOOL_COUNTER))
|
||||
memset(&c->data[byteoff], 0,
|
||||
(WHIRLPOOL_BBLOCK/8 - WHIRLPOOL_COUNTER) - byteoff);
|
||||
/* smash 256-bit c->bitlen in big-endian order */
|
||||
p = &c->data[WHIRLPOOL_BBLOCK/8-1]; /* last byte in c->data */
|
||||
for(i=0;i<WHIRLPOOL_COUNTER/sizeof(size_t);i++)
|
||||
for(v=c->bitlen[i],j=0;j<sizeof(size_t);j++,v>>=8)
|
||||
for (i = 0; i < WHIRLPOOL_COUNTER/sizeof(size_t); i++)
|
||||
for (v = c->bitlen[i], j = 0; j < sizeof(size_t); j++, v >>= 8)
|
||||
*p-- = (unsigned char)(v&0xff);
|
||||
|
||||
whirlpool_block(c,c->data,1);
|
||||
whirlpool_block(c, c->data, 1);
|
||||
|
||||
if (md) {
|
||||
memcpy(md,c->H.c,WHIRLPOOL_DIGEST_LENGTH);
|
||||
memset(c,0,sizeof(*c));
|
||||
return(1);
|
||||
}
|
||||
return(0);
|
||||
memcpy(md, c->H.c, WHIRLPOOL_DIGEST_LENGTH);
|
||||
memset(c, 0, sizeof(*c));
|
||||
return (1);
|
||||
}
|
||||
return (0);
|
||||
}
|
||||
|
||||
unsigned char *WHIRLPOOL(const void *inp, size_t bytes,unsigned char *md)
|
||||
{
|
||||
unsigned char *
|
||||
WHIRLPOOL(const void *inp, size_t bytes, unsigned char *md)
|
||||
{
|
||||
WHIRLPOOL_CTX ctx;
|
||||
static unsigned char m[WHIRLPOOL_DIGEST_LENGTH];
|
||||
|
||||
if (md == NULL) md=m;
|
||||
if (md == NULL)
|
||||
md = m;
|
||||
WHIRLPOOL_Init(&ctx);
|
||||
WHIRLPOOL_Update(&ctx,inp,bytes);
|
||||
WHIRLPOOL_Final(md,&ctx);
|
||||
return(md);
|
||||
}
|
||||
WHIRLPOOL_Update(&ctx, inp, bytes);
|
||||
WHIRLPOOL_Final(md, &ctx);
|
||||
return (md);
|
||||
}
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
/* $OpenBSD: x509_vpm.c,v 1.42 2024/01/08 09:51:09 tb Exp $ */
|
||||
/* $OpenBSD: x509_vpm.c,v 1.43 2024/03/29 00:25:32 tb Exp $ */
|
||||
/* Written by Dr Stephen N Henson (steve@openssl.org) for the OpenSSL
|
||||
* project 2004.
|
||||
*/
|
||||
|
@ -82,7 +82,7 @@ int X509_VERIFY_PARAM_set1_ip(X509_VERIFY_PARAM *param, const unsigned char *ip,
|
|||
static void
|
||||
str_free(char *s)
|
||||
{
|
||||
free(s);
|
||||
free(s);
|
||||
}
|
||||
|
||||
static STACK_OF(OPENSSL_STRING) *
|
||||
|
|
|
@ -15,17 +15,7 @@ open OUT,"| \"$^X\" $xlate $flavour $output";
|
|||
($arg1,$arg2,$arg3,$arg4)=("%rdi","%rsi","%rdx","%rcx"); # Unix order
|
||||
|
||||
print<<___;
|
||||
.extern OPENSSL_cpuid_setup
|
||||
.hidden OPENSSL_cpuid_setup
|
||||
.section .init
|
||||
_CET_ENDBR
|
||||
call OPENSSL_cpuid_setup
|
||||
|
||||
.extern OPENSSL_ia32cap_P
|
||||
.hidden OPENSSL_ia32cap_P
|
||||
|
||||
.text
|
||||
|
||||
.globl OPENSSL_ia32_cpuid
|
||||
.type OPENSSL_ia32_cpuid,\@abi-omnipotent
|
||||
.align 16
|
||||
|
|
|
@ -150,8 +150,4 @@ for (@ARGV) { $sse2=1 if (/-DOPENSSL_IA32_SSE2/); }
|
|||
&set_label("nocpuid");
|
||||
&function_end("OPENSSL_ia32_cpuid");
|
||||
|
||||
&external_label("OPENSSL_ia32cap_P");
|
||||
|
||||
&initseg("OPENSSL_cpuid_setup");
|
||||
|
||||
&asm_finish();
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
/* $OpenBSD: tls_config.c,v 1.69 2024/03/27 07:35:30 joshua Exp $ */
|
||||
/* $OpenBSD: tls_config.c,v 1.70 2024/03/28 06:55:02 joshua Exp $ */
|
||||
/*
|
||||
* Copyright (c) 2014 Joel Sing <jsing@openbsd.org>
|
||||
*
|
||||
|
@ -301,7 +301,8 @@ tls_config_parse_alpn(struct tls_config *config, const char *alpn,
|
|||
*alpn_len = 0;
|
||||
|
||||
if ((buf_len = strlen(alpn) + 1) > 65535) {
|
||||
tls_config_set_errorx(config, TLS_ERROR_UNKNOWN, "alpn too large");
|
||||
tls_config_set_errorx(config, TLS_ERROR_INVALID_ARGUMENT,
|
||||
"alpn too large");
|
||||
goto err;
|
||||
}
|
||||
|
||||
|
@ -865,7 +866,7 @@ tls_config_set_session_id(struct tls_config *config,
|
|||
const unsigned char *session_id, size_t len)
|
||||
{
|
||||
if (len > TLS_MAX_SESSION_ID_LENGTH) {
|
||||
tls_config_set_errorx(config, TLS_ERROR_UNKNOWN,
|
||||
tls_config_set_errorx(config, TLS_ERROR_INVALID_ARGUMENT,
|
||||
"session ID too large");
|
||||
return (-1);
|
||||
}
|
||||
|
@ -878,12 +879,12 @@ int
|
|||
tls_config_set_session_lifetime(struct tls_config *config, int lifetime)
|
||||
{
|
||||
if (lifetime > TLS_MAX_SESSION_TIMEOUT) {
|
||||
tls_config_set_errorx(config, TLS_ERROR_UNKNOWN,
|
||||
tls_config_set_errorx(config, TLS_ERROR_INVALID_ARGUMENT,
|
||||
"session lifetime too large");
|
||||
return (-1);
|
||||
}
|
||||
if (lifetime != 0 && lifetime < TLS_MIN_SESSION_TIMEOUT) {
|
||||
tls_config_set_errorx(config, TLS_ERROR_UNKNOWN,
|
||||
tls_config_set_errorx(config, TLS_ERROR_INVALID_ARGUMENT,
|
||||
"session lifetime too small");
|
||||
return (-1);
|
||||
}
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
/* $OpenBSD: tls_signer.c,v 1.11 2024/03/28 02:08:24 joshua Exp $ */
|
||||
/* $OpenBSD: tls_signer.c,v 1.12 2024/03/28 06:55:02 joshua Exp $ */
|
||||
/*
|
||||
* Copyright (c) 2021 Eric Faurot <eric@openbsd.org>
|
||||
*
|
||||
|
@ -204,7 +204,7 @@ tls_sign_rsa(struct tls_signer *signer, struct tls_signer_key *skey,
|
|||
}
|
||||
|
||||
if (input_len > INT_MAX) {
|
||||
tls_error_setx(&signer->error, TLS_ERROR_UNKNOWN,
|
||||
tls_error_setx(&signer->error, TLS_ERROR_INVALID_ARGUMENT,
|
||||
"input too large");
|
||||
return (-1);
|
||||
}
|
||||
|
@ -252,7 +252,7 @@ tls_sign_ecdsa(struct tls_signer *signer, struct tls_signer_key *skey,
|
|||
}
|
||||
|
||||
if (input_len > INT_MAX) {
|
||||
tls_error_setx(&signer->error, TLS_ERROR_UNKNOWN,
|
||||
tls_error_setx(&signer->error, TLS_ERROR_INVALID_ARGUMENT,
|
||||
"digest too large");
|
||||
return (-1);
|
||||
}
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
# $OpenBSD: Makefile,v 1.54 2023/12/27 12:34:32 jsing Exp $
|
||||
# $OpenBSD: Makefile,v 1.55 2024/03/28 06:45:36 beck Exp $
|
||||
|
||||
SUBDIR += aead
|
||||
SUBDIR += aes
|
||||
|
@ -26,7 +26,6 @@ SUBDIR += evp
|
|||
SUBDIR += exdata
|
||||
SUBDIR += free
|
||||
SUBDIR += gcm128
|
||||
SUBDIR += gost
|
||||
SUBDIR += hkdf
|
||||
SUBDIR += hmac
|
||||
SUBDIR += idea
|
||||
|
|
|
@ -1,9 +0,0 @@
|
|||
# $OpenBSD: Makefile,v 1.1 2014/11/09 19:45:26 miod Exp $
|
||||
|
||||
PROG= gost2814789t
|
||||
LDADD= -lcrypto
|
||||
DPADD= ${LIBCRYPTO}
|
||||
WARNINGS= Yes
|
||||
CFLAGS+= -DLIBRESSL_INTERNAL -Werror
|
||||
|
||||
.include <bsd.regress.mk>
|
File diff suppressed because it is too large
Load diff
|
@ -141,8 +141,6 @@ static u32 guc_ads_blob_size(struct intel_guc *guc)
|
|||
|
||||
static void guc_policies_init(struct intel_guc *guc)
|
||||
{
|
||||
STUB();
|
||||
#ifdef notyet
|
||||
struct intel_gt *gt = guc_to_gt(guc);
|
||||
struct drm_i915_private *i915 = gt->i915;
|
||||
u32 global_flags = 0;
|
||||
|
@ -157,14 +155,11 @@ static void guc_policies_init(struct intel_guc *guc)
|
|||
|
||||
ads_blob_write(guc, policies.global_flags, global_flags);
|
||||
ads_blob_write(guc, policies.is_valid, 1);
|
||||
#endif
|
||||
}
|
||||
|
||||
void intel_guc_ads_print_policy_info(struct intel_guc *guc,
|
||||
struct drm_printer *dp)
|
||||
{
|
||||
STUB();
|
||||
#ifdef notyet
|
||||
if (unlikely(iosys_map_is_null(&guc->ads_map)))
|
||||
return;
|
||||
|
||||
|
@ -175,7 +170,6 @@ void intel_guc_ads_print_policy_info(struct intel_guc *guc,
|
|||
ads_blob_read(guc, policies.max_num_work_items));
|
||||
drm_printf(dp, " Flags = %u\n",
|
||||
ads_blob_read(guc, policies.global_flags));
|
||||
#endif
|
||||
}
|
||||
|
||||
static int guc_action_policies_update(struct intel_guc *guc, u32 policy_offset)
|
||||
|
@ -190,9 +184,6 @@ static int guc_action_policies_update(struct intel_guc *guc, u32 policy_offset)
|
|||
|
||||
int intel_guc_global_policies_update(struct intel_guc *guc)
|
||||
{
|
||||
STUB();
|
||||
return -ENOSYS;
|
||||
#ifdef notyet
|
||||
struct intel_gt *gt = guc_to_gt(guc);
|
||||
u32 scheduler_policies;
|
||||
intel_wakeref_t wakeref;
|
||||
|
@ -213,14 +204,11 @@ int intel_guc_global_policies_update(struct intel_guc *guc)
|
|||
ret = guc_action_policies_update(guc, scheduler_policies);
|
||||
|
||||
return ret;
|
||||
#endif
|
||||
}
|
||||
|
||||
static void guc_mapping_table_init(struct intel_gt *gt,
|
||||
struct iosys_map *info_map)
|
||||
{
|
||||
STUB();
|
||||
#ifdef notyet
|
||||
unsigned int i, j;
|
||||
struct intel_engine_cs *engine;
|
||||
enum intel_engine_id id;
|
||||
|
@ -237,7 +225,6 @@ static void guc_mapping_table_init(struct intel_gt *gt,
|
|||
info_map_write(info_map, mapping_table[guc_class][ilog2(engine->logical_mask)],
|
||||
engine->instance);
|
||||
}
|
||||
#endif
|
||||
}
|
||||
|
||||
/*
|
||||
|
@ -267,14 +254,12 @@ static int guc_mmio_reg_cmp(const void *a, const void *b)
|
|||
static struct guc_mmio_reg * __must_check
|
||||
__mmio_reg_add(struct temp_regset *regset, struct guc_mmio_reg *reg)
|
||||
{
|
||||
STUB();
|
||||
return ERR_PTR(-ENOSYS);
|
||||
#ifdef notyet
|
||||
u32 pos = regset->storage_used;
|
||||
struct guc_mmio_reg *slot;
|
||||
|
||||
if (pos >= regset->storage_max) {
|
||||
size_t size = ALIGN((pos + 1) * sizeof(*slot), PAGE_SIZE);
|
||||
#ifdef ___linux__
|
||||
struct guc_mmio_reg *r = krealloc(regset->storage,
|
||||
size, GFP_KERNEL);
|
||||
if (!r) {
|
||||
|
@ -282,6 +267,17 @@ __mmio_reg_add(struct temp_regset *regset, struct guc_mmio_reg *reg)
|
|||
-ENOMEM);
|
||||
return ERR_PTR(-ENOMEM);
|
||||
}
|
||||
#else
|
||||
struct guc_mmio_reg *r = kmalloc(size, GFP_KERNEL);
|
||||
if (!r) {
|
||||
WARN_ONCE(1, "Incomplete regset list: can't add register (%d)\n",
|
||||
-ENOMEM);
|
||||
return ERR_PTR(-ENOMEM);
|
||||
}
|
||||
memcpy(r, regset->storage,
|
||||
ALIGN((pos) * sizeof(*slot), PAGE_SIZE));
|
||||
kfree(regset->storage);
|
||||
#endif
|
||||
|
||||
regset->registers = r + (regset->registers - regset->storage);
|
||||
regset->storage = r;
|
||||
|
@ -293,7 +289,6 @@ __mmio_reg_add(struct temp_regset *regset, struct guc_mmio_reg *reg)
|
|||
*slot = *reg;
|
||||
|
||||
return slot;
|
||||
#endif
|
||||
}
|
||||
|
||||
static long __must_check guc_mmio_reg_add(struct intel_gt *gt,
|
||||
|
@ -457,8 +452,6 @@ fail_regset_init:
|
|||
|
||||
static void guc_mmio_reg_state_init(struct intel_guc *guc)
|
||||
{
|
||||
STUB();
|
||||
#ifdef notyet
|
||||
struct intel_gt *gt = guc_to_gt(guc);
|
||||
struct intel_engine_cs *engine;
|
||||
enum intel_engine_id id;
|
||||
|
@ -498,14 +491,11 @@ static void guc_mmio_reg_state_init(struct intel_guc *guc)
|
|||
|
||||
addr_ggtt += count * sizeof(struct guc_mmio_reg);
|
||||
}
|
||||
#endif
|
||||
}
|
||||
|
||||
static void fill_engine_enable_masks(struct intel_gt *gt,
|
||||
struct iosys_map *info_map)
|
||||
{
|
||||
STUB();
|
||||
#ifdef notyet
|
||||
info_map_write(info_map, engine_enabled_masks[GUC_RENDER_CLASS], RCS_MASK(gt));
|
||||
info_map_write(info_map, engine_enabled_masks[GUC_COMPUTE_CLASS], CCS_MASK(gt));
|
||||
info_map_write(info_map, engine_enabled_masks[GUC_BLITTER_CLASS], BCS_MASK(gt));
|
||||
|
@ -516,7 +506,6 @@ static void fill_engine_enable_masks(struct intel_gt *gt,
|
|||
if (gt->engine[GSC0])
|
||||
info_map_write(info_map, engine_enabled_masks[GUC_GSC_OTHER_CLASS],
|
||||
BIT(gt->engine[GSC0]->instance));
|
||||
#endif
|
||||
}
|
||||
|
||||
#define LR_HW_CONTEXT_SIZE (80 * sizeof(u32))
|
||||
|
@ -527,9 +516,6 @@ static void fill_engine_enable_masks(struct intel_gt *gt,
|
|||
#define LRC_SKIP_SIZE(i915) (LRC_PPHWSP_SZ * PAGE_SIZE + LR_HW_CONTEXT_SZ(i915))
|
||||
static int guc_prep_golden_context(struct intel_guc *guc)
|
||||
{
|
||||
STUB();
|
||||
return -ENOSYS;
|
||||
#ifdef notyet
|
||||
struct intel_gt *gt = guc_to_gt(guc);
|
||||
u32 addr_ggtt, offset;
|
||||
u32 total_size = 0, alloc_size, real_size;
|
||||
|
@ -597,7 +583,6 @@ static int guc_prep_golden_context(struct intel_guc *guc)
|
|||
GEM_BUG_ON(guc->ads_golden_ctxt_size != total_size);
|
||||
|
||||
return total_size;
|
||||
#endif
|
||||
}
|
||||
|
||||
static struct intel_engine_cs *find_engine_state(struct intel_gt *gt, u8 engine_class)
|
||||
|
@ -629,10 +614,6 @@ static void guc_init_golden_context(struct intel_guc *guc)
|
|||
if (!intel_uc_uses_guc_submission(>->uc))
|
||||
return;
|
||||
|
||||
STUB();
|
||||
return;
|
||||
#ifdef notyet
|
||||
|
||||
GEM_BUG_ON(iosys_map_is_null(&guc->ads_map));
|
||||
|
||||
/*
|
||||
|
@ -666,20 +647,16 @@ static void guc_init_golden_context(struct intel_guc *guc)
|
|||
|
||||
addr_ggtt += alloc_size;
|
||||
|
||||
shmem_read_to_iosys_map(engine->default_state, 0, &guc->ads_map,
|
||||
uao_read_to_iosys_map(engine->default_state, 0, &guc->ads_map,
|
||||
offset, real_size);
|
||||
offset += alloc_size;
|
||||
}
|
||||
|
||||
GEM_BUG_ON(guc->ads_golden_ctxt_size != total_size);
|
||||
#endif
|
||||
}
|
||||
|
||||
static u32 guc_get_capture_engine_mask(struct iosys_map *info_map, u32 capture_class)
|
||||
{
|
||||
STUB();
|
||||
return 0;
|
||||
#ifdef notyet
|
||||
u32 mask;
|
||||
|
||||
switch (capture_class) {
|
||||
|
@ -709,15 +686,11 @@ static u32 guc_get_capture_engine_mask(struct iosys_map *info_map, u32 capture_c
|
|||
}
|
||||
|
||||
return mask;
|
||||
#endif
|
||||
}
|
||||
|
||||
static int
|
||||
guc_capture_prep_lists(struct intel_guc *guc)
|
||||
{
|
||||
STUB();
|
||||
return -ENOSYS;
|
||||
#ifdef notyet
|
||||
struct intel_gt *gt = guc_to_gt(guc);
|
||||
u32 ads_ggtt, capture_offset, null_ggtt, total_size = 0;
|
||||
struct guc_gt_system_info local_info;
|
||||
|
@ -828,13 +801,10 @@ engine_instance_list:
|
|||
guc->ads_capture_size, PAGE_ALIGN(total_size));
|
||||
|
||||
return PAGE_ALIGN(total_size);
|
||||
#endif
|
||||
}
|
||||
|
||||
static void __guc_ads_init(struct intel_guc *guc)
|
||||
{
|
||||
STUB();
|
||||
#ifdef notyet
|
||||
struct intel_gt *gt = guc_to_gt(guc);
|
||||
struct drm_i915_private *i915 = gt->i915;
|
||||
struct iosys_map info_map = IOSYS_MAP_INIT_OFFSET(&guc->ads_map,
|
||||
|
@ -885,7 +855,6 @@ static void __guc_ads_init(struct intel_guc *guc)
|
|||
guc_ads_private_data_offset(guc));
|
||||
|
||||
i915_gem_object_flush_map(guc->ads_vma->obj);
|
||||
#endif
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -963,8 +932,6 @@ void intel_guc_ads_destroy(struct intel_guc *guc)
|
|||
|
||||
static void guc_ads_private_data_reset(struct intel_guc *guc)
|
||||
{
|
||||
STUB();
|
||||
#ifdef notyet
|
||||
u32 size;
|
||||
|
||||
size = guc_ads_private_data_size(guc);
|
||||
|
@ -973,7 +940,6 @@ static void guc_ads_private_data_reset(struct intel_guc *guc)
|
|||
|
||||
iosys_map_memset(&guc->ads_map, guc_ads_private_data_offset(guc),
|
||||
0, size);
|
||||
#endif
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -1002,15 +968,10 @@ u32 intel_guc_engine_usage_offset(struct intel_guc *guc)
|
|||
|
||||
struct iosys_map intel_guc_engine_usage_record_map(struct intel_engine_cs *engine)
|
||||
{
|
||||
STUB();
|
||||
struct iosys_map x = {};
|
||||
return x;
|
||||
#ifdef notyet
|
||||
struct intel_guc *guc = &engine->gt->uc.guc;
|
||||
u8 guc_class = engine_class_to_guc_class(engine->class);
|
||||
size_t offset = offsetof(struct __guc_ads_blob,
|
||||
engine_usage.engines[guc_class][ilog2(engine->logical_mask)]);
|
||||
|
||||
return IOSYS_MAP_INIT_OFFSET(&guc->ads_map, offset);
|
||||
#endif
|
||||
}
|
||||
|
|
|
@ -1214,8 +1214,6 @@ __extend_last_switch(struct intel_guc *guc, u64 *prev_start, u32 new_start)
|
|||
static void __get_engine_usage_record(struct intel_engine_cs *engine,
|
||||
u32 *last_in, u32 *id, u32 *total)
|
||||
{
|
||||
STUB();
|
||||
#ifdef notyet
|
||||
struct iosys_map rec_map = intel_guc_engine_usage_record_map(engine);
|
||||
int i = 0;
|
||||
|
||||
|
@ -1229,7 +1227,6 @@ static void __get_engine_usage_record(struct intel_engine_cs *engine,
|
|||
record_read(&rec_map, total_runtime) == *total)
|
||||
break;
|
||||
} while (++i < 6);
|
||||
#endif
|
||||
}
|
||||
|
||||
static void guc_update_engine_gt_clks(struct intel_engine_cs *engine)
|
||||
|
@ -2068,9 +2065,6 @@ static void guc_submit_request(struct i915_request *rq)
|
|||
|
||||
static int new_guc_id(struct intel_guc *guc, struct intel_context *ce)
|
||||
{
|
||||
STUB();
|
||||
return -ENOSYS;
|
||||
#ifdef notyet
|
||||
int ret;
|
||||
|
||||
GEM_BUG_ON(intel_context_is_child(ce));
|
||||
|
@ -2094,13 +2088,10 @@ static int new_guc_id(struct intel_guc *guc, struct intel_context *ce)
|
|||
|
||||
ce->guc_id.id = ret;
|
||||
return 0;
|
||||
#endif
|
||||
}
|
||||
|
||||
static void __release_guc_id(struct intel_guc *guc, struct intel_context *ce)
|
||||
{
|
||||
STUB();
|
||||
#ifdef notyet
|
||||
GEM_BUG_ON(intel_context_is_child(ce));
|
||||
|
||||
if (!context_guc_id_invalid(ce)) {
|
||||
|
@ -2119,7 +2110,6 @@ static void __release_guc_id(struct intel_guc *guc, struct intel_context *ce)
|
|||
}
|
||||
if (!list_empty(&ce->guc_id.link))
|
||||
list_del_init(&ce->guc_id.link);
|
||||
#endif
|
||||
}
|
||||
|
||||
static void release_guc_id(struct intel_guc *guc, struct intel_context *ce)
|
||||
|
|
|
@ -35,6 +35,15 @@ iosys_map_memcpy_to(struct iosys_map *ism, size_t off, const void *src,
|
|||
memcpy(ism->vaddr + off, src, len);
|
||||
}
|
||||
|
||||
static inline void
|
||||
iosys_map_memset(struct iosys_map *ism, size_t off, int c, size_t len)
|
||||
{
|
||||
if (ism->is_iomem)
|
||||
memset_io(ism->vaddr_iomem + off, c, len);
|
||||
else
|
||||
memset(ism->vaddr + off, c, len);
|
||||
}
|
||||
|
||||
static inline bool
|
||||
iosys_map_is_null(const struct iosys_map *ism)
|
||||
{
|
||||
|
@ -78,4 +87,53 @@ iosys_map_set_vaddr(struct iosys_map *ism, void *addr)
|
|||
ism->is_iomem = false;
|
||||
}
|
||||
|
||||
static inline struct iosys_map
|
||||
IOSYS_MAP_INIT_OFFSET(struct iosys_map *ism, size_t off)
|
||||
{
|
||||
struct iosys_map nism = *ism;
|
||||
iosys_map_incr(&nism, off);
|
||||
return nism;
|
||||
}
|
||||
|
||||
#if defined(__STDC_VERSION__) && __STDC_VERSION__ >= 201112
|
||||
|
||||
#define iosys_map_rd(_ism, _o, _t) ({ \
|
||||
_t v; \
|
||||
if ((_ism)->is_iomem) { \
|
||||
void *addr = (_ism)->vaddr_iomem + (_o); \
|
||||
v = _Generic(v, \
|
||||
uint8_t : ioread8(addr), \
|
||||
uint16_t: ioread16(addr), \
|
||||
uint32_t: ioread32(addr), \
|
||||
uint64_t: ioread64(addr)); \
|
||||
} else \
|
||||
v = READ_ONCE(*(_t *)((_ism)->vaddr + (_o))); \
|
||||
v; \
|
||||
})
|
||||
|
||||
#define iosys_map_wr(_ism, _o, _t, _v) ({ \
|
||||
_t v = (_v); \
|
||||
if ((_ism)->is_iomem) { \
|
||||
void *addr = (_ism)->vaddr_iomem + (_o); \
|
||||
_Generic(v, \
|
||||
uint8_t : iowrite8(v, addr), \
|
||||
uint16_t: iowrite16(v, addr), \
|
||||
uint32_t: iowrite32(v, addr), \
|
||||
uint64_t: iowrite64(v, addr)); \
|
||||
} else \
|
||||
WRITE_ONCE(*(_t *)((_ism)->vaddr + (_o)), v); \
|
||||
})
|
||||
|
||||
#define iosys_map_rd_field(_ism, _o, _t, _f) ({ \
|
||||
_t *t; \
|
||||
iosys_map_rd(_ism, _o + offsetof(_t, _f), __typeof(t->_f)); \
|
||||
})
|
||||
|
||||
#define iosys_map_wr_field(_ism, _o, _t, _f, _v) ({ \
|
||||
_t *t; \
|
||||
iosys_map_wr(_ism, _o + offsetof(_t, _f), __typeof(t->_f), _v); \
|
||||
})
|
||||
|
||||
#endif /* C11 */
|
||||
|
||||
#endif
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
/* $OpenBSD: sdhc_pci.c,v 1.24 2022/03/11 18:00:51 mpi Exp $ */
|
||||
/* $OpenBSD: sdhc_pci.c,v 1.25 2024/03/28 23:38:54 jsg Exp $ */
|
||||
|
||||
/*
|
||||
* Copyright (c) 2006 Uwe Stuehler <uwe@openbsd.org>
|
||||
|
@ -131,7 +131,8 @@ sdhc_pci_attach(struct device *parent, struct device *self, void *aux)
|
|||
(PCI_PRODUCT(pa->pa_id) == PCI_PRODUCT_INTEL_100SERIES_LP_EMMC ||
|
||||
PCI_PRODUCT(pa->pa_id) == PCI_PRODUCT_INTEL_APOLLOLAKE_EMMC ||
|
||||
PCI_PRODUCT(pa->pa_id) == PCI_PRODUCT_INTEL_GLK_EMMC ||
|
||||
PCI_PRODUCT(pa->pa_id) == PCI_PRODUCT_INTEL_JSL_EMMC))
|
||||
PCI_PRODUCT(pa->pa_id) == PCI_PRODUCT_INTEL_JSL_EMMC ||
|
||||
PCI_PRODUCT(pa->pa_id) == PCI_PRODUCT_INTEL_ADL_N_EMMC))
|
||||
sc->sc.sc_flags |= SDHC_F_NOPWR0;
|
||||
|
||||
/* Some RICOH controllers need to be bumped into the right mode. */
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
/* $OpenBSD: main.c,v 1.263 2023/09/04 13:08:11 schwarze Exp $ */
|
||||
/* $OpenBSD: main.c,v 1.265 2024/03/29 01:16:30 millert Exp $ */
|
||||
/*
|
||||
* Copyright (c) 2010-2012, 2014-2021 Ingo Schwarze <schwarze@openbsd.org>
|
||||
* Copyright (c) 2008-2012 Kristaps Dzonsons <kristaps@bsd.lv>
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue