sync with OpenBSD -current
This commit is contained in:
parent
9419b92700
commit
b62220995a
133 changed files with 2000 additions and 5128 deletions
|
@ -729,7 +729,7 @@
|
|||
./usr/lib/libagentx.so.1.1
|
||||
./usr/lib/libc.so.100.3
|
||||
./usr/lib/libcbor.so.2.0
|
||||
./usr/lib/libcrypto.so.54.0
|
||||
./usr/lib/libcrypto.so.55.0
|
||||
./usr/lib/libcurses.so.15.0
|
||||
./usr/lib/libedit.so.6.0
|
||||
./usr/lib/libelf.so.3.0
|
||||
|
@ -758,10 +758,10 @@
|
|||
./usr/lib/librpcsvc.so.3.0
|
||||
./usr/lib/libskey.so.6.0
|
||||
./usr/lib/libsndio.so.7.3
|
||||
./usr/lib/libssl.so.57.1
|
||||
./usr/lib/libssl.so.58.0
|
||||
./usr/lib/libtermcap.so.15.0
|
||||
./usr/lib/libtermlib.so.15.0
|
||||
./usr/lib/libtls.so.30.1
|
||||
./usr/lib/libtls.so.31.0
|
||||
./usr/lib/libusbhid.so.7.1
|
||||
./usr/lib/libutil.so.18.0
|
||||
./usr/lib/libz.so.7.1
|
||||
|
@ -2978,7 +2978,7 @@
|
|||
./usr/share/relink/usr/bin/ssh-agent/ssh-agent.tar
|
||||
./usr/share/relink/usr/lib
|
||||
./usr/share/relink/usr/lib/libc.so.100.3.a
|
||||
./usr/share/relink/usr/lib/libcrypto.so.54.0.a
|
||||
./usr/share/relink/usr/lib/libcrypto.so.55.0.a
|
||||
./usr/share/relink/usr/libexec
|
||||
./usr/share/relink/usr/libexec/ld.so.a
|
||||
./usr/share/relink/usr/libexec/sshd-session
|
||||
|
|
|
@ -1117,7 +1117,6 @@
|
|||
./usr/include/openssl/cms.h
|
||||
./usr/include/openssl/comp.h
|
||||
./usr/include/openssl/conf.h
|
||||
./usr/include/openssl/conf_api.h
|
||||
./usr/include/openssl/crypto.h
|
||||
./usr/include/openssl/ct.h
|
||||
./usr/include/openssl/curve25519.h
|
||||
|
@ -1168,7 +1167,6 @@
|
|||
./usr/include/openssl/ts.h
|
||||
./usr/include/openssl/txt_db.h
|
||||
./usr/include/openssl/ui.h
|
||||
./usr/include/openssl/whrlpool.h
|
||||
./usr/include/openssl/x509.h
|
||||
./usr/include/openssl/x509_vfy.h
|
||||
./usr/include/openssl/x509v3.h
|
||||
|
|
|
@ -1919,6 +1919,7 @@
|
|||
./usr/share/man/man4/rl.4
|
||||
./usr/share/man/man4/rlphy.4
|
||||
./usr/share/man/man4/route.4
|
||||
./usr/share/man/man4/rport.4
|
||||
./usr/share/man/man4/rsu.4
|
||||
./usr/share/man/man4/rtsx.4
|
||||
./usr/share/man/man4/rtw.4
|
||||
|
|
|
@ -1 +1 @@
|
|||
# SecBSD 1.6-1361d16: Wed Aug 21 00:00:00 UTC 2024 (Yatagarasu)
|
||||
# SecBSD 1.6-dcc2b9c: Sun Sep 1 00:00:00 UTC 2024 (Yatagarasu)
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
.\" $OpenBSD: strfile.8,v 1.17 2022/08/04 06:20:24 jsg Exp $
|
||||
.\" $OpenBSD: strfile.8,v 1.18 2024/08/31 13:41:13 jmc Exp $
|
||||
.\" $NetBSD: strfile.8,v 1.3 1995/03/23 08:28:45 cgd Exp $
|
||||
.\"
|
||||
.\" Copyright (c) 1989, 1991, 1993
|
||||
|
@ -34,7 +34,7 @@
|
|||
.\"
|
||||
.\" @(#)strfile.8 8.1 (Berkeley) 6/9/93
|
||||
.\"
|
||||
.Dd $Mdocdate: August 4 2022 $
|
||||
.Dd $Mdocdate: August 31 2024 $
|
||||
.Dt STRFILE 8
|
||||
.Os
|
||||
.Sh NAME
|
||||
|
@ -100,17 +100,17 @@ field to be set.
|
|||
.Pp
|
||||
The format of the header is:
|
||||
.Bd -literal -offset indent
|
||||
#define VERSION 2
|
||||
u_int32_t str_version; /* version number */
|
||||
u_int32_t str_numstr; /* # of strings in the file */
|
||||
u_int32_t str_longlen; /* length of longest string */
|
||||
u_int32_t str_shortlen; /* length of shortest string */
|
||||
#define STR_RANDOM 0x1 /* randomized pointers */
|
||||
#define STR_ORDERED 0x2 /* ordered pointers */
|
||||
#define STR_ROTATED 0x4 /* rot-13'd text */
|
||||
u_int32_t str_flags; /* bit field for flags */
|
||||
u_int8_t str_delim; /* delimiting character */
|
||||
u_int8_t str_pad[3]; /* padding */
|
||||
#define VERSION 2
|
||||
u_int32_t str_version; /* version number */
|
||||
u_int32_t str_numstr; /* # of strings in the file */
|
||||
u_int32_t str_longlen; /* length of longest string */
|
||||
u_int32_t str_shortlen; /* length of shortest string */
|
||||
#define STR_RANDOM 0x1 /* randomized pointers */
|
||||
#define STR_ORDERED 0x2 /* ordered pointers */
|
||||
#define STR_ROTATED 0x4 /* rot-13'd text */
|
||||
u_int32_t str_flags; /* bit field for flags */
|
||||
u_int8_t stuff[4]; /* long aligned space */
|
||||
#define str_delim stuff[0] /* delimiting character */
|
||||
.Ed
|
||||
.Pp
|
||||
All fields are written in network byte order.
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
# $OpenBSD: Makefile,v 1.203 2024/08/28 07:15:04 tb Exp $
|
||||
# $OpenBSD: Makefile,v 1.211 2024/08/31 15:56:09 jsing Exp $
|
||||
|
||||
LIB= crypto
|
||||
LIBREBUILD=y
|
||||
|
@ -31,6 +31,7 @@ CFLAGS+= -I${LCRYPTO_SRC}/bio
|
|||
CFLAGS+= -I${LCRYPTO_SRC}/bn
|
||||
CFLAGS+= -I${LCRYPTO_SRC}/bn/arch/${MACHINE_CPU}
|
||||
CFLAGS+= -I${LCRYPTO_SRC}/bytestring
|
||||
CFLAGS+= -I${LCRYPTO_SRC}/conf
|
||||
CFLAGS+= -I${LCRYPTO_SRC}/curve25519
|
||||
CFLAGS+= -I${LCRYPTO_SRC}/dh
|
||||
CFLAGS+= -I${LCRYPTO_SRC}/dsa
|
||||
|
@ -54,10 +55,6 @@ CFLAGS+= -I${LCRYPTO_SRC}/x509
|
|||
VERSION_SCRIPT= Symbols.map
|
||||
SYMBOL_LIST= ${.CURDIR}/Symbols.list
|
||||
|
||||
.if (${MACHINE_CPU} == "amd64") || (${MACHINE_CPU} == "i386")
|
||||
SYMBOL_LIST+= ${.CURDIR}/arch/${MACHINE_CPU}/Symbols.list
|
||||
.endif
|
||||
|
||||
# crypto/
|
||||
SRCS+= cpt_err.c
|
||||
SRCS+= cryptlib.c
|
||||
|
@ -254,26 +251,11 @@ SRCS+= curve25519-generic.c
|
|||
SRCS+= curve25519.c
|
||||
|
||||
# des/
|
||||
SRCS+= cbc_cksm.c
|
||||
SRCS+= cbc_enc.c
|
||||
SRCS+= cfb64ede.c
|
||||
SRCS+= cfb64enc.c
|
||||
SRCS+= cfb_enc.c
|
||||
SRCS+= des.c
|
||||
SRCS+= des_cksum.c
|
||||
SRCS+= des_enc.c
|
||||
SRCS+= ecb3_enc.c
|
||||
SRCS+= ecb_enc.c
|
||||
SRCS+= ede_cbcm_enc.c
|
||||
SRCS+= enc_read.c
|
||||
SRCS+= fcrypt.c
|
||||
SRCS+= fcrypt_b.c
|
||||
SRCS+= ofb64ede.c
|
||||
SRCS+= ofb64enc.c
|
||||
SRCS+= ofb_enc.c
|
||||
SRCS+= pcbc_enc.c
|
||||
SRCS+= qud_cksm.c
|
||||
SRCS+= set_key.c
|
||||
SRCS+= str2key.c
|
||||
SRCS+= xcbc_enc.c
|
||||
SRCS+= des_fcrypt.c
|
||||
SRCS+= des_key.c
|
||||
|
||||
# dh/
|
||||
SRCS+= dh_ameth.c
|
||||
|
@ -367,7 +349,6 @@ SRCS+= m_sha1.c
|
|||
SRCS+= m_sha3.c
|
||||
SRCS+= m_sigver.c
|
||||
SRCS+= m_sm3.c
|
||||
SRCS+= m_wp.c
|
||||
SRCS+= p_legacy.c
|
||||
SRCS+= p_lib.c
|
||||
SRCS+= p_sign.c
|
||||
|
@ -543,10 +524,6 @@ SRCS+= ui_err.c
|
|||
SRCS+= ui_lib.c
|
||||
SRCS+= ui_null.c
|
||||
SRCS+= ui_openssl.c
|
||||
SRCS+= ui_util.c
|
||||
|
||||
# whrlpool/
|
||||
SRCS+= whirlpool.c
|
||||
|
||||
# x509/
|
||||
SRCS+= by_dir.c
|
||||
|
@ -662,7 +639,6 @@ SRCS+= x_all.c
|
|||
${LCRYPTO_SRC}/ts \
|
||||
${LCRYPTO_SRC}/txt_db \
|
||||
${LCRYPTO_SRC}/ui \
|
||||
${LCRYPTO_SRC}/whrlpool \
|
||||
${LCRYPTO_SRC}/x509
|
||||
|
||||
HDRS=\
|
||||
|
@ -681,7 +657,6 @@ HDRS=\
|
|||
${LCRYPTO_SRC}/cms/cms.h \
|
||||
${LCRYPTO_SRC}/comp/comp.h \
|
||||
${LCRYPTO_SRC}/conf/conf.h \
|
||||
${LCRYPTO_SRC}/conf/conf_api.h \
|
||||
${LCRYPTO_SRC}/crypto.h \
|
||||
${LCRYPTO_SRC}/ct/ct.h \
|
||||
${LCRYPTO_SRC}/curve25519/curve25519.h \
|
||||
|
@ -724,7 +699,6 @@ HDRS=\
|
|||
${LCRYPTO_SRC}/ts/ts.h \
|
||||
${LCRYPTO_SRC}/txt_db/txt_db.h \
|
||||
${LCRYPTO_SRC}/ui/ui.h \
|
||||
${LCRYPTO_SRC}/whrlpool/whrlpool.h \
|
||||
${LCRYPTO_SRC}/x509/x509.h \
|
||||
${LCRYPTO_SRC}/x509/x509_vfy.h \
|
||||
${LCRYPTO_SRC}/x509/x509v3.h
|
||||
|
|
|
@ -589,34 +589,12 @@ CMS_unsigned_get_attr_by_OBJ
|
|||
CMS_unsigned_get_attr_count
|
||||
CMS_verify
|
||||
CMS_verify_receipt
|
||||
CONF_dump_bio
|
||||
CONF_dump_fp
|
||||
CONF_free
|
||||
CONF_get1_default_config_file
|
||||
CONF_get_number
|
||||
CONF_get_section
|
||||
CONF_get_string
|
||||
CONF_imodule_get_flags
|
||||
CONF_imodule_get_module
|
||||
CONF_imodule_get_name
|
||||
CONF_imodule_get_usr_data
|
||||
CONF_imodule_get_value
|
||||
CONF_imodule_set_flags
|
||||
CONF_imodule_set_usr_data
|
||||
CONF_load
|
||||
CONF_load_bio
|
||||
CONF_load_fp
|
||||
CONF_module_add
|
||||
CONF_module_get_usr_data
|
||||
CONF_module_set_usr_data
|
||||
CONF_modules_finish
|
||||
CONF_modules_free
|
||||
CONF_modules_load
|
||||
CONF_modules_load_file
|
||||
CONF_modules_unload
|
||||
CONF_parse_list
|
||||
CONF_set_default_method
|
||||
CONF_set_nconf
|
||||
CRL_DIST_POINTS_free
|
||||
CRL_DIST_POINTS_it
|
||||
CRL_DIST_POINTS_new
|
||||
|
@ -742,8 +720,6 @@ DES_ede3_cbcm_encrypt
|
|||
DES_ede3_cfb64_encrypt
|
||||
DES_ede3_cfb_encrypt
|
||||
DES_ede3_ofb64_encrypt
|
||||
DES_enc_read
|
||||
DES_enc_write
|
||||
DES_encrypt1
|
||||
DES_encrypt2
|
||||
DES_encrypt3
|
||||
|
@ -756,7 +732,6 @@ DES_ofb_encrypt
|
|||
DES_pcbc_encrypt
|
||||
DES_quad_cksum
|
||||
DES_random_key
|
||||
DES_rw_mode
|
||||
DES_set_key
|
||||
DES_set_key_checked
|
||||
DES_set_key_unchecked
|
||||
|
@ -1028,8 +1003,6 @@ ENGINE_new
|
|||
ENGINE_register_all_complete
|
||||
ENGINE_set_default
|
||||
ENGINE_set_default_RSA
|
||||
ERR_add_error_data
|
||||
ERR_add_error_vdata
|
||||
ERR_asprintf_error_data
|
||||
ERR_clear_error
|
||||
ERR_error_string
|
||||
|
@ -1233,10 +1206,6 @@ EVP_PKEY_CTX_set0_keygen_info
|
|||
EVP_PKEY_CTX_set_app_data
|
||||
EVP_PKEY_CTX_set_cb
|
||||
EVP_PKEY_CTX_set_data
|
||||
EVP_PKEY_add1_attr
|
||||
EVP_PKEY_add1_attr_by_NID
|
||||
EVP_PKEY_add1_attr_by_OBJ
|
||||
EVP_PKEY_add1_attr_by_txt
|
||||
EVP_PKEY_asn1_find
|
||||
EVP_PKEY_asn1_find_str
|
||||
EVP_PKEY_asn1_get0
|
||||
|
@ -1245,14 +1214,12 @@ EVP_PKEY_asn1_get_count
|
|||
EVP_PKEY_assign
|
||||
EVP_PKEY_base_id
|
||||
EVP_PKEY_bits
|
||||
EVP_PKEY_check
|
||||
EVP_PKEY_cmp
|
||||
EVP_PKEY_cmp_parameters
|
||||
EVP_PKEY_copy_parameters
|
||||
EVP_PKEY_decrypt
|
||||
EVP_PKEY_decrypt_init
|
||||
EVP_PKEY_decrypt_old
|
||||
EVP_PKEY_delete_attr
|
||||
EVP_PKEY_derive
|
||||
EVP_PKEY_derive_init
|
||||
EVP_PKEY_derive_set_peer
|
||||
|
@ -1271,10 +1238,6 @@ EVP_PKEY_get1_DH
|
|||
EVP_PKEY_get1_DSA
|
||||
EVP_PKEY_get1_EC_KEY
|
||||
EVP_PKEY_get1_RSA
|
||||
EVP_PKEY_get_attr
|
||||
EVP_PKEY_get_attr_by_NID
|
||||
EVP_PKEY_get_attr_by_OBJ
|
||||
EVP_PKEY_get_attr_count
|
||||
EVP_PKEY_get_default_digest_nid
|
||||
EVP_PKEY_get_raw_private_key
|
||||
EVP_PKEY_get_raw_public_key
|
||||
|
@ -1287,13 +1250,11 @@ EVP_PKEY_new_CMAC_key
|
|||
EVP_PKEY_new_mac_key
|
||||
EVP_PKEY_new_raw_private_key
|
||||
EVP_PKEY_new_raw_public_key
|
||||
EVP_PKEY_param_check
|
||||
EVP_PKEY_paramgen
|
||||
EVP_PKEY_paramgen_init
|
||||
EVP_PKEY_print_params
|
||||
EVP_PKEY_print_private
|
||||
EVP_PKEY_print_public
|
||||
EVP_PKEY_public_check
|
||||
EVP_PKEY_save_parameters
|
||||
EVP_PKEY_security_bits
|
||||
EVP_PKEY_set1_DH
|
||||
|
@ -1440,7 +1401,6 @@ EVP_sm4_cfb128
|
|||
EVP_sm4_ctr
|
||||
EVP_sm4_ecb
|
||||
EVP_sm4_ofb
|
||||
EVP_whirlpool
|
||||
EXTENDED_KEY_USAGE_free
|
||||
EXTENDED_KEY_USAGE_it
|
||||
EXTENDED_KEY_USAGE_new
|
||||
|
@ -1473,7 +1433,6 @@ HMAC_CTX_new
|
|||
HMAC_CTX_reset
|
||||
HMAC_CTX_set_flags
|
||||
HMAC_Final
|
||||
HMAC_Init
|
||||
HMAC_Init_ex
|
||||
HMAC_Update
|
||||
IPAddressChoice_free
|
||||
|
@ -1506,18 +1465,12 @@ NAME_CONSTRAINTS_check
|
|||
NAME_CONSTRAINTS_free
|
||||
NAME_CONSTRAINTS_it
|
||||
NAME_CONSTRAINTS_new
|
||||
NCONF_WIN32
|
||||
NCONF_default
|
||||
NCONF_dump_bio
|
||||
NCONF_dump_fp
|
||||
NCONF_free
|
||||
NCONF_free_data
|
||||
NCONF_get_number_e
|
||||
NCONF_get_section
|
||||
NCONF_get_string
|
||||
NCONF_load
|
||||
NCONF_load_bio
|
||||
NCONF_load_fp
|
||||
NCONF_new
|
||||
NETSCAPE_SPKAC_free
|
||||
NETSCAPE_SPKAC_it
|
||||
|
@ -1700,11 +1653,9 @@ OPENSSL_cleanse
|
|||
OPENSSL_cleanup
|
||||
OPENSSL_config
|
||||
OPENSSL_cpu_caps
|
||||
OPENSSL_cpuid_setup
|
||||
OPENSSL_gmtime
|
||||
OPENSSL_init
|
||||
OPENSSL_init_crypto
|
||||
OPENSSL_load_builtin_modules
|
||||
OPENSSL_no_config
|
||||
OPENSSL_posix_to_tm
|
||||
OPENSSL_timegm
|
||||
|
@ -2322,8 +2273,6 @@ TXT_DB_insert
|
|||
TXT_DB_read
|
||||
TXT_DB_write
|
||||
UI_OpenSSL
|
||||
UI_UTIL_read_pw
|
||||
UI_UTIL_read_pw_string
|
||||
UI_add_error_string
|
||||
UI_add_info_string
|
||||
UI_add_input_boolean
|
||||
|
@ -2377,18 +2326,10 @@ UI_set_result
|
|||
USERNOTICE_free
|
||||
USERNOTICE_it
|
||||
USERNOTICE_new
|
||||
WHIRLPOOL
|
||||
WHIRLPOOL_BitUpdate
|
||||
WHIRLPOOL_Final
|
||||
WHIRLPOOL_Init
|
||||
WHIRLPOOL_Update
|
||||
X25519
|
||||
X25519_keypair
|
||||
X509V3_EXT_CRL_add_conf
|
||||
X509V3_EXT_CRL_add_nconf
|
||||
X509V3_EXT_REQ_add_conf
|
||||
X509V3_EXT_REQ_add_nconf
|
||||
X509V3_EXT_add_conf
|
||||
X509V3_EXT_add_nconf
|
||||
X509V3_EXT_add_nconf_sk
|
||||
X509V3_EXT_conf
|
||||
|
@ -2405,24 +2346,12 @@ X509V3_EXT_val_prn
|
|||
X509V3_NAME_from_section
|
||||
X509V3_add1_i2d
|
||||
X509V3_add_standard_extensions
|
||||
X509V3_add_value
|
||||
X509V3_add_value_bool
|
||||
X509V3_add_value_bool_nf
|
||||
X509V3_add_value_int
|
||||
X509V3_add_value_uchar
|
||||
X509V3_conf_free
|
||||
X509V3_extensions_print
|
||||
X509V3_get_d2i
|
||||
X509V3_get_section
|
||||
X509V3_get_string
|
||||
X509V3_get_value_bool
|
||||
X509V3_get_value_int
|
||||
X509V3_parse_list
|
||||
X509V3_section_free
|
||||
X509V3_set_conf_lhash
|
||||
X509V3_set_ctx
|
||||
X509V3_set_nconf
|
||||
X509V3_string_free
|
||||
X509_ALGORS_it
|
||||
X509_ALGOR_cmp
|
||||
X509_ALGOR_dup
|
||||
|
@ -2598,7 +2527,6 @@ X509_REQ_get_attr
|
|||
X509_REQ_get_attr_by_NID
|
||||
X509_REQ_get_attr_by_OBJ
|
||||
X509_REQ_get_attr_count
|
||||
X509_REQ_get_extension_nids
|
||||
X509_REQ_get_extensions
|
||||
X509_REQ_get_pubkey
|
||||
X509_REQ_get_signature_nid
|
||||
|
@ -2609,7 +2537,6 @@ X509_REQ_new
|
|||
X509_REQ_print
|
||||
X509_REQ_print_ex
|
||||
X509_REQ_print_fp
|
||||
X509_REQ_set_extension_nids
|
||||
X509_REQ_set_pubkey
|
||||
X509_REQ_set_subject_name
|
||||
X509_REQ_set_version
|
||||
|
@ -2763,7 +2690,6 @@ X509_check_ip_asc
|
|||
X509_check_issued
|
||||
X509_check_private_key
|
||||
X509_check_purpose
|
||||
X509_check_trust
|
||||
X509_cmp
|
||||
X509_cmp_current_time
|
||||
X509_cmp_time
|
||||
|
@ -2807,6 +2733,7 @@ X509_get_key_usage
|
|||
X509_get_pubkey
|
||||
X509_get_pubkey_parameters
|
||||
X509_get_serialNumber
|
||||
X509_get_signature_info
|
||||
X509_get_signature_nid
|
||||
X509_get_signature_type
|
||||
X509_get_subject_name
|
||||
|
@ -2859,16 +2786,6 @@ X509_up_ref
|
|||
X509_verify
|
||||
X509_verify_cert
|
||||
X509_verify_cert_error_string
|
||||
X509at_add1_attr
|
||||
X509at_add1_attr_by_NID
|
||||
X509at_add1_attr_by_OBJ
|
||||
X509at_add1_attr_by_txt
|
||||
X509at_delete_attr
|
||||
X509at_get0_data_by_OBJ
|
||||
X509at_get_attr
|
||||
X509at_get_attr_by_NID
|
||||
X509at_get_attr_by_OBJ
|
||||
X509at_get_attr_count
|
||||
X509v3_add_ext
|
||||
X509v3_addr_add_inherit
|
||||
X509v3_addr_add_prefix
|
||||
|
@ -2896,13 +2813,6 @@ X509v3_get_ext_by_OBJ
|
|||
X509v3_get_ext_by_critical
|
||||
X509v3_get_ext_count
|
||||
ZLONG_it
|
||||
_CONF_add_string
|
||||
_CONF_free_data
|
||||
_CONF_get_section
|
||||
_CONF_get_section_values
|
||||
_CONF_get_string
|
||||
_CONF_new_data
|
||||
_CONF_new_section
|
||||
a2d_ASN1_OBJECT
|
||||
a2i_ASN1_ENUMERATED
|
||||
a2i_ASN1_INTEGER
|
||||
|
|
|
@ -1 +0,0 @@
|
|||
OPENSSL_ia32cap_P
|
|
@ -1 +0,0 @@
|
|||
OPENSSL_ia32cap_P
|
|
@ -1,4 +1,4 @@
|
|||
/* $OpenBSD: asn1_gen.c,v 1.22 2024/05/17 02:57:26 tb Exp $ */
|
||||
/* $OpenBSD: asn1_gen.c,v 1.24 2024/08/31 10:03:03 tb Exp $ */
|
||||
/* Written by Dr Stephen N Henson (steve@openssl.org) for the OpenSSL
|
||||
* project 2002.
|
||||
*/
|
||||
|
@ -63,6 +63,8 @@
|
|||
#include <openssl/x509v3.h>
|
||||
|
||||
#include "asn1_local.h"
|
||||
#include "conf_local.h"
|
||||
#include "x509_local.h"
|
||||
|
||||
#define ASN1_GEN_FLAG 0x10000
|
||||
#define ASN1_GEN_FLAG_IMP (ASN1_GEN_FLAG|1)
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
/* $OpenBSD: asn_moid.c,v 1.17 2024/03/02 09:02:04 tb Exp $ */
|
||||
/* $OpenBSD: asn_moid.c,v 1.18 2024/08/31 09:26:18 tb Exp $ */
|
||||
/* Written by Stephen Henson (steve@openssl.org) for the OpenSSL
|
||||
* project 2001.
|
||||
*/
|
||||
|
@ -66,6 +66,7 @@
|
|||
#include <openssl/x509.h>
|
||||
|
||||
#include "asn1_local.h"
|
||||
#include "conf_local.h"
|
||||
|
||||
/* Simple ASN1 OID module: add all objects in a given section */
|
||||
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
/* $OpenBSD: x_val.c,v 1.15 2024/07/08 14:48:49 beck Exp $ */
|
||||
/* $OpenBSD: x_val.c,v 1.16 2024/08/31 10:14:17 tb Exp $ */
|
||||
/* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com)
|
||||
* All rights reserved.
|
||||
*
|
||||
|
@ -61,6 +61,8 @@
|
|||
#include <openssl/asn1t.h>
|
||||
#include <openssl/x509.h>
|
||||
|
||||
#include "x509_local.h"
|
||||
|
||||
static const ASN1_TEMPLATE X509_VAL_seq_tt[] = {
|
||||
{
|
||||
.offset = offsetof(X509_VAL, notBefore),
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
/* $OpenBSD: conf.h,v 1.16 2022/07/12 14:42:48 kn Exp $ */
|
||||
/* $OpenBSD: conf.h,v 1.27 2024/08/31 09:54:31 tb Exp $ */
|
||||
/* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com)
|
||||
* All rights reserved.
|
||||
*
|
||||
|
@ -85,19 +85,6 @@ struct conf_st;
|
|||
struct conf_method_st;
|
||||
typedef struct conf_method_st CONF_METHOD;
|
||||
|
||||
struct conf_method_st {
|
||||
const char *name;
|
||||
CONF *(*create)(CONF_METHOD *meth);
|
||||
int (*init)(CONF *conf);
|
||||
int (*destroy)(CONF *conf);
|
||||
int (*destroy_data)(CONF *conf);
|
||||
int (*load_bio)(CONF *conf, BIO *bp, long *eline);
|
||||
int (*dump)(const CONF *conf, BIO *bp);
|
||||
int (*is_number)(const CONF *conf, char c);
|
||||
int (*to_int)(const CONF *conf, char c);
|
||||
int (*load)(CONF *conf, const char *name, long *eline);
|
||||
};
|
||||
|
||||
/* Module definitions */
|
||||
|
||||
typedef struct conf_imodule_st CONF_IMODULE;
|
||||
|
@ -117,23 +104,6 @@ typedef void conf_finish_func(CONF_IMODULE *md);
|
|||
#define CONF_MFLAGS_IGNORE_MISSING_FILE 0x10
|
||||
#define CONF_MFLAGS_DEFAULT_SECTION 0x20
|
||||
|
||||
int CONF_set_default_method(CONF_METHOD *meth);
|
||||
void CONF_set_nconf(CONF *conf, LHASH_OF(CONF_VALUE) *hash);
|
||||
LHASH_OF(CONF_VALUE) *CONF_load(LHASH_OF(CONF_VALUE) *conf, const char *file,
|
||||
long *eline);
|
||||
LHASH_OF(CONF_VALUE) *CONF_load_fp(LHASH_OF(CONF_VALUE) *conf, FILE *fp,
|
||||
long *eline);
|
||||
LHASH_OF(CONF_VALUE) *CONF_load_bio(LHASH_OF(CONF_VALUE) *conf, BIO *bp, long *eline);
|
||||
STACK_OF(CONF_VALUE) *CONF_get_section(LHASH_OF(CONF_VALUE) *conf,
|
||||
const char *section);
|
||||
char *CONF_get_string(LHASH_OF(CONF_VALUE) *conf, const char *group,
|
||||
const char *name);
|
||||
long CONF_get_number(LHASH_OF(CONF_VALUE) *conf, const char *group,
|
||||
const char *name);
|
||||
void CONF_free(LHASH_OF(CONF_VALUE) *conf);
|
||||
int CONF_dump_fp(LHASH_OF(CONF_VALUE) *conf, FILE *out);
|
||||
int CONF_dump_bio(LHASH_OF(CONF_VALUE) *conf, BIO *out);
|
||||
|
||||
void OPENSSL_config(const char *config_name);
|
||||
void OPENSSL_no_config(void);
|
||||
|
||||
|
@ -141,26 +111,19 @@ void OPENSSL_no_config(void);
|
|||
If that wasn't the case, the above functions would have been replaced */
|
||||
|
||||
struct conf_st {
|
||||
CONF_METHOD *meth;
|
||||
void *meth_data;
|
||||
const CONF_METHOD *meth;
|
||||
LHASH_OF(CONF_VALUE) *data;
|
||||
};
|
||||
|
||||
CONF *NCONF_new(CONF_METHOD *meth);
|
||||
CONF_METHOD *NCONF_default(void);
|
||||
CONF_METHOD *NCONF_WIN32(void);
|
||||
CONF *NCONF_new(const CONF_METHOD *meth);
|
||||
void NCONF_free(CONF *conf);
|
||||
void NCONF_free_data(CONF *conf);
|
||||
|
||||
int NCONF_load(CONF *conf, const char *file, long *eline);
|
||||
int NCONF_load_fp(CONF *conf, FILE *fp, long *eline);
|
||||
int NCONF_load_bio(CONF *conf, BIO *bp, long *eline);
|
||||
STACK_OF(CONF_VALUE) *NCONF_get_section(const CONF *conf, const char *section);
|
||||
char *NCONF_get_string(const CONF *conf, const char *group, const char *name);
|
||||
int NCONF_get_number_e(const CONF *conf, const char *group, const char *name,
|
||||
long *result);
|
||||
int NCONF_dump_fp(const CONF *conf, FILE *out);
|
||||
int NCONF_dump_bio(const CONF *conf, BIO *out);
|
||||
|
||||
#define NCONF_get_number(c,g,n,r) NCONF_get_number_e(c,g,n,r)
|
||||
|
||||
|
@ -173,26 +136,9 @@ int CONF_modules_load_file(const char *filename, const char *appname,
|
|||
void CONF_modules_unload(int all);
|
||||
void CONF_modules_finish(void);
|
||||
void CONF_modules_free(void);
|
||||
int CONF_module_add(const char *name, conf_init_func *ifunc,
|
||||
conf_finish_func *ffunc);
|
||||
|
||||
const char *CONF_imodule_get_name(const CONF_IMODULE *md);
|
||||
const char *CONF_imodule_get_value(const CONF_IMODULE *md);
|
||||
void *CONF_imodule_get_usr_data(const CONF_IMODULE *md);
|
||||
void CONF_imodule_set_usr_data(CONF_IMODULE *md, void *usr_data);
|
||||
CONF_MODULE *CONF_imodule_get_module(const CONF_IMODULE *md);
|
||||
unsigned long CONF_imodule_get_flags(const CONF_IMODULE *md);
|
||||
void CONF_imodule_set_flags(CONF_IMODULE *md, unsigned long flags);
|
||||
void *CONF_module_get_usr_data(CONF_MODULE *pmod);
|
||||
void CONF_module_set_usr_data(CONF_MODULE *pmod, void *usr_data);
|
||||
|
||||
char *CONF_get1_default_config_file(void);
|
||||
|
||||
int CONF_parse_list(const char *list, int sep, int nospc,
|
||||
int (*list_cb)(const char *elem, int len, void *usr), void *arg);
|
||||
|
||||
void OPENSSL_load_builtin_modules(void);
|
||||
|
||||
void ERR_load_CONF_strings(void);
|
||||
|
||||
/* Error codes for the CONF functions. */
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
/* $OpenBSD: conf_api.c,v 1.19 2024/07/14 14:32:45 jsing Exp $ */
|
||||
/* $OpenBSD: conf_api.c,v 1.21 2024/08/31 09:29:03 tb Exp $ */
|
||||
/* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com)
|
||||
* All rights reserved.
|
||||
*
|
||||
|
@ -67,7 +67,8 @@
|
|||
#include <string.h>
|
||||
#include <unistd.h>
|
||||
#include <openssl/conf.h>
|
||||
#include <openssl/conf_api.h>
|
||||
|
||||
#include "conf_local.h"
|
||||
|
||||
static void value_free_hash_doall_arg(CONF_VALUE *a,
|
||||
LHASH_OF(CONF_VALUE) *conf);
|
||||
|
@ -89,7 +90,6 @@ _CONF_get_section(const CONF *conf, const char *section)
|
|||
v = lh_CONF_VALUE_retrieve(conf->data, &vv);
|
||||
return (v);
|
||||
}
|
||||
LCRYPTO_ALIAS(_CONF_get_section);
|
||||
|
||||
/* Up until OpenSSL 0.9.5a, this was CONF_get_section */
|
||||
STACK_OF(CONF_VALUE) *
|
||||
|
@ -103,7 +103,6 @@ _CONF_get_section_values(const CONF *conf, const char *section)
|
|||
else
|
||||
return (NULL);
|
||||
}
|
||||
LCRYPTO_ALIAS(_CONF_get_section_values);
|
||||
|
||||
int
|
||||
_CONF_add_string(CONF *conf, CONF_VALUE *section, CONF_VALUE *value)
|
||||
|
@ -127,7 +126,6 @@ _CONF_add_string(CONF *conf, CONF_VALUE *section, CONF_VALUE *value)
|
|||
}
|
||||
return 1;
|
||||
}
|
||||
LCRYPTO_ALIAS(_CONF_add_string);
|
||||
|
||||
char *
|
||||
_CONF_get_string(const CONF *conf, const char *section, const char *name)
|
||||
|
@ -154,7 +152,6 @@ _CONF_get_string(const CONF *conf, const char *section, const char *name)
|
|||
} else
|
||||
return (NULL);
|
||||
}
|
||||
LCRYPTO_ALIAS(_CONF_get_string);
|
||||
|
||||
static unsigned long
|
||||
conf_value_hash(const CONF_VALUE *v)
|
||||
|
@ -197,7 +194,6 @@ _CONF_new_data(CONF *conf)
|
|||
}
|
||||
return 1;
|
||||
}
|
||||
LCRYPTO_ALIAS(_CONF_new_data);
|
||||
|
||||
void
|
||||
_CONF_free_data(CONF *conf)
|
||||
|
@ -215,7 +211,6 @@ _CONF_free_data(CONF *conf)
|
|||
lh_CONF_VALUE_doall(conf->data, LHASH_DOALL_FN(value_free_stack));
|
||||
lh_CONF_VALUE_free(conf->data);
|
||||
}
|
||||
LCRYPTO_ALIAS(_CONF_free_data);
|
||||
|
||||
static void
|
||||
value_free_hash_doall_arg(CONF_VALUE *a, LHASH_OF(CONF_VALUE) *conf)
|
||||
|
@ -280,4 +275,3 @@ err:
|
|||
}
|
||||
return (v);
|
||||
}
|
||||
LCRYPTO_ALIAS(_CONF_new_section);
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
/* $OpenBSD: conf_def.c,v 1.37 2024/08/28 15:48:33 tb Exp $ */
|
||||
/* $OpenBSD: conf_def.c,v 1.44 2024/08/31 09:46:17 tb Exp $ */
|
||||
/* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com)
|
||||
* All rights reserved.
|
||||
*
|
||||
|
@ -63,12 +63,12 @@
|
|||
|
||||
#include <openssl/buffer.h>
|
||||
#include <openssl/conf.h>
|
||||
#include <openssl/conf_api.h>
|
||||
#include <openssl/err.h>
|
||||
#include <openssl/lhash.h>
|
||||
#include <openssl/stack.h>
|
||||
|
||||
#include "conf_def.h"
|
||||
#include "conf_local.h"
|
||||
|
||||
#define MAX_CONF_VALUE_LENGTH 65536
|
||||
|
||||
|
@ -81,7 +81,7 @@ static char *scan_dquote(CONF *conf, char *p);
|
|||
#define scan_esc(conf,p) (((IS_EOF((conf),(p)[1]))?((p)+1):((p)+2)))
|
||||
|
||||
static CONF *
|
||||
def_create(CONF_METHOD *meth)
|
||||
def_create(const CONF_METHOD *meth)
|
||||
{
|
||||
CONF *ret;
|
||||
|
||||
|
@ -101,20 +101,6 @@ def_init_default(CONF *conf)
|
|||
return 0;
|
||||
|
||||
conf->meth = NCONF_default();
|
||||
conf->meth_data = CONF_type_default;
|
||||
conf->data = NULL;
|
||||
|
||||
return 1;
|
||||
}
|
||||
|
||||
static int
|
||||
def_init_WIN32(CONF *conf)
|
||||
{
|
||||
if (conf == NULL)
|
||||
return 0;
|
||||
|
||||
conf->meth = NCONF_WIN32();
|
||||
conf->meth_data = (void *)CONF_type_win32;
|
||||
conf->data = NULL;
|
||||
|
||||
return 1;
|
||||
|
@ -333,7 +319,10 @@ err:
|
|||
*line = eline;
|
||||
ERR_asprintf_error_data("line %ld", eline);
|
||||
if ((h != conf->data) && (conf->data != NULL)) {
|
||||
CONF_free(conf->data);
|
||||
CONF ctmp;
|
||||
|
||||
CONF_set_nconf(&ctmp, conf->data);
|
||||
ctmp.meth->destroy_data(&ctmp);
|
||||
conf->data = NULL;
|
||||
}
|
||||
if (v != NULL) {
|
||||
|
@ -648,7 +637,7 @@ def_to_int(const CONF *conf, char c)
|
|||
return c - '0';
|
||||
}
|
||||
|
||||
static CONF_METHOD default_method = {
|
||||
static const CONF_METHOD default_method = {
|
||||
.name = "OpenSSL default",
|
||||
.create = def_create,
|
||||
.init = def_init_default,
|
||||
|
@ -661,29 +650,8 @@ static CONF_METHOD default_method = {
|
|||
.load = def_load,
|
||||
};
|
||||
|
||||
static CONF_METHOD WIN32_method = {
|
||||
"WIN32",
|
||||
def_create,
|
||||
def_init_WIN32,
|
||||
def_destroy,
|
||||
def_destroy_data,
|
||||
def_load_bio,
|
||||
def_dump,
|
||||
def_is_number,
|
||||
def_to_int,
|
||||
def_load,
|
||||
};
|
||||
|
||||
CONF_METHOD *
|
||||
const CONF_METHOD *
|
||||
NCONF_default(void)
|
||||
{
|
||||
return &default_method;
|
||||
}
|
||||
LCRYPTO_ALIAS(NCONF_default);
|
||||
|
||||
CONF_METHOD *
|
||||
NCONF_WIN32(void)
|
||||
{
|
||||
return &WIN32_method;
|
||||
}
|
||||
LCRYPTO_ALIAS(NCONF_WIN32);
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
/* $OpenBSD: conf_def.h,v 1.6 2016/12/21 15:49:29 jsing Exp $ */
|
||||
/* $OpenBSD: conf_def.h,v 1.8 2024/08/31 09:36:38 tb Exp $ */
|
||||
/* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com)
|
||||
* All rights reserved.
|
||||
*
|
||||
|
@ -79,7 +79,9 @@ __BEGIN_HIDDEN_DECLS
|
|||
#define CONF_ALPHA_NUMERIC_PUNCT (CONF_ALPHA|CONF_NUMBER|CONF_UNDER| \
|
||||
CONF_PUNCTUATION)
|
||||
|
||||
#define KEYTYPES(c) ((unsigned short *)((c)->meth_data))
|
||||
static const unsigned short CONF_type_default[256];
|
||||
|
||||
#define KEYTYPES(c) (CONF_type_default)
|
||||
#define IS_COMMENT(c,a) (KEYTYPES(c)[(a)&0xff]&CONF_COMMENT)
|
||||
#define IS_FCOMMENT(c,a) (KEYTYPES(c)[(a)&0xff]&CONF_FCOMMENT)
|
||||
#define IS_EOF(c,a) (KEYTYPES(c)[(a)&0xff]&CONF_EOF)
|
||||
|
@ -93,7 +95,7 @@ __BEGIN_HIDDEN_DECLS
|
|||
#define IS_DQUOTE(c,a) (KEYTYPES(c)[(a)&0xff]&CONF_DQUOTE)
|
||||
#define IS_HIGHBIT(c,a) (KEYTYPES(c)[(a)&0xff]&CONF_HIGHBIT)
|
||||
|
||||
static unsigned short CONF_type_default[256] = {
|
||||
static const unsigned short CONF_type_default[256] = {
|
||||
0x0008, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
|
||||
0x0000, 0x0010, 0x0010, 0x0000, 0x0000, 0x0010, 0x0000, 0x0000,
|
||||
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
|
||||
|
@ -128,39 +130,4 @@ static unsigned short CONF_type_default[256] = {
|
|||
0x1000, 0x1000, 0x1000, 0x1000, 0x1000, 0x1000, 0x1000, 0x1000,
|
||||
};
|
||||
|
||||
static unsigned short CONF_type_win32[256] = {
|
||||
0x0008, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
|
||||
0x0000, 0x0010, 0x0010, 0x0000, 0x0000, 0x0010, 0x0000, 0x0000,
|
||||
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
|
||||
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
|
||||
0x0010, 0x0200, 0x0400, 0x0000, 0x0000, 0x0200, 0x0200, 0x0000,
|
||||
0x0000, 0x0000, 0x0200, 0x0200, 0x0200, 0x0200, 0x0200, 0x0200,
|
||||
0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001,
|
||||
0x0001, 0x0001, 0x0000, 0x0A00, 0x0000, 0x0000, 0x0000, 0x0200,
|
||||
0x0200, 0x0002, 0x0002, 0x0002, 0x0002, 0x0002, 0x0002, 0x0002,
|
||||
0x0002, 0x0002, 0x0002, 0x0002, 0x0002, 0x0002, 0x0002, 0x0002,
|
||||
0x0002, 0x0002, 0x0002, 0x0002, 0x0002, 0x0002, 0x0002, 0x0002,
|
||||
0x0002, 0x0002, 0x0002, 0x0000, 0x0000, 0x0000, 0x0200, 0x0100,
|
||||
0x0000, 0x0004, 0x0004, 0x0004, 0x0004, 0x0004, 0x0004, 0x0004,
|
||||
0x0004, 0x0004, 0x0004, 0x0004, 0x0004, 0x0004, 0x0004, 0x0004,
|
||||
0x0004, 0x0004, 0x0004, 0x0004, 0x0004, 0x0004, 0x0004, 0x0004,
|
||||
0x0004, 0x0004, 0x0004, 0x0000, 0x0200, 0x0000, 0x0200, 0x0000,
|
||||
0x1000, 0x1000, 0x1000, 0x1000, 0x1000, 0x1000, 0x1000, 0x1000,
|
||||
0x1000, 0x1000, 0x1000, 0x1000, 0x1000, 0x1000, 0x1000, 0x1000,
|
||||
0x1000, 0x1000, 0x1000, 0x1000, 0x1000, 0x1000, 0x1000, 0x1000,
|
||||
0x1000, 0x1000, 0x1000, 0x1000, 0x1000, 0x1000, 0x1000, 0x1000,
|
||||
0x1000, 0x1000, 0x1000, 0x1000, 0x1000, 0x1000, 0x1000, 0x1000,
|
||||
0x1000, 0x1000, 0x1000, 0x1000, 0x1000, 0x1000, 0x1000, 0x1000,
|
||||
0x1000, 0x1000, 0x1000, 0x1000, 0x1000, 0x1000, 0x1000, 0x1000,
|
||||
0x1000, 0x1000, 0x1000, 0x1000, 0x1000, 0x1000, 0x1000, 0x1000,
|
||||
0x1000, 0x1000, 0x1000, 0x1000, 0x1000, 0x1000, 0x1000, 0x1000,
|
||||
0x1000, 0x1000, 0x1000, 0x1000, 0x1000, 0x1000, 0x1000, 0x1000,
|
||||
0x1000, 0x1000, 0x1000, 0x1000, 0x1000, 0x1000, 0x1000, 0x1000,
|
||||
0x1000, 0x1000, 0x1000, 0x1000, 0x1000, 0x1000, 0x1000, 0x1000,
|
||||
0x1000, 0x1000, 0x1000, 0x1000, 0x1000, 0x1000, 0x1000, 0x1000,
|
||||
0x1000, 0x1000, 0x1000, 0x1000, 0x1000, 0x1000, 0x1000, 0x1000,
|
||||
0x1000, 0x1000, 0x1000, 0x1000, 0x1000, 0x1000, 0x1000, 0x1000,
|
||||
0x1000, 0x1000, 0x1000, 0x1000, 0x1000, 0x1000, 0x1000, 0x1000,
|
||||
};
|
||||
|
||||
__END_HIDDEN_DECLS
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
/* $OpenBSD: conf_lib.c,v 1.17 2024/04/09 13:56:30 beck Exp $ */
|
||||
/* $OpenBSD: conf_lib.c,v 1.24 2024/08/31 09:50:52 tb Exp $ */
|
||||
/* Written by Richard Levitte (richard@levitte.org) for the OpenSSL
|
||||
* project 2000.
|
||||
*/
|
||||
|
@ -60,10 +60,11 @@
|
|||
#include <openssl/crypto.h>
|
||||
#include <openssl/err.h>
|
||||
#include <openssl/conf.h>
|
||||
#include <openssl/conf_api.h>
|
||||
#include <openssl/lhash.h>
|
||||
|
||||
static CONF_METHOD *default_CONF_method = NULL;
|
||||
#include "conf_local.h"
|
||||
|
||||
static const CONF_METHOD *default_CONF_method = NULL;
|
||||
|
||||
/* Init a 'CONF' structure from an old LHASH */
|
||||
|
||||
|
@ -75,163 +76,9 @@ CONF_set_nconf(CONF *conf, LHASH_OF(CONF_VALUE) *hash)
|
|||
default_CONF_method->init(conf);
|
||||
conf->data = hash;
|
||||
}
|
||||
LCRYPTO_ALIAS(CONF_set_nconf);
|
||||
|
||||
/* The following section contains the "CONF classic" functions,
|
||||
rewritten in terms of the new CONF interface. */
|
||||
|
||||
int
|
||||
CONF_set_default_method(CONF_METHOD *meth)
|
||||
{
|
||||
default_CONF_method = meth;
|
||||
return 1;
|
||||
}
|
||||
LCRYPTO_ALIAS(CONF_set_default_method);
|
||||
|
||||
LHASH_OF(CONF_VALUE) *
|
||||
CONF_load(LHASH_OF(CONF_VALUE) *conf, const char *file, long *eline)
|
||||
{
|
||||
LHASH_OF(CONF_VALUE) *ltmp;
|
||||
BIO *in = NULL;
|
||||
|
||||
in = BIO_new_file(file, "rb");
|
||||
if (in == NULL) {
|
||||
CONFerror(ERR_R_SYS_LIB);
|
||||
return NULL;
|
||||
}
|
||||
|
||||
ltmp = CONF_load_bio(conf, in, eline);
|
||||
BIO_free(in);
|
||||
|
||||
return ltmp;
|
||||
}
|
||||
LCRYPTO_ALIAS(CONF_load);
|
||||
|
||||
LHASH_OF(CONF_VALUE) *
|
||||
CONF_load_fp(LHASH_OF(CONF_VALUE) *conf, FILE *fp, long *eline)
|
||||
{
|
||||
BIO *btmp;
|
||||
LHASH_OF(CONF_VALUE) *ltmp;
|
||||
|
||||
if (!(btmp = BIO_new_fp(fp, BIO_NOCLOSE))) {
|
||||
CONFerror(ERR_R_BUF_LIB);
|
||||
return NULL;
|
||||
}
|
||||
ltmp = CONF_load_bio(conf, btmp, eline);
|
||||
BIO_free(btmp);
|
||||
return ltmp;
|
||||
}
|
||||
LCRYPTO_ALIAS(CONF_load_fp);
|
||||
|
||||
LHASH_OF(CONF_VALUE) *
|
||||
CONF_load_bio(LHASH_OF(CONF_VALUE) *conf, BIO *bp, long *eline)
|
||||
{
|
||||
CONF ctmp;
|
||||
int ret;
|
||||
|
||||
CONF_set_nconf(&ctmp, conf);
|
||||
|
||||
ret = NCONF_load_bio(&ctmp, bp, eline);
|
||||
if (ret)
|
||||
return ctmp.data;
|
||||
return NULL;
|
||||
}
|
||||
LCRYPTO_ALIAS(CONF_load_bio);
|
||||
|
||||
STACK_OF(CONF_VALUE) *
|
||||
CONF_get_section(LHASH_OF(CONF_VALUE) *conf, const char *section)
|
||||
{
|
||||
if (conf == NULL) {
|
||||
return NULL;
|
||||
} else {
|
||||
CONF ctmp;
|
||||
CONF_set_nconf(&ctmp, conf);
|
||||
return NCONF_get_section(&ctmp, section);
|
||||
}
|
||||
}
|
||||
LCRYPTO_ALIAS(CONF_get_section);
|
||||
|
||||
char *
|
||||
CONF_get_string(LHASH_OF(CONF_VALUE) *conf, const char *group,
|
||||
const char *name)
|
||||
{
|
||||
if (conf == NULL) {
|
||||
return NCONF_get_string(NULL, group, name);
|
||||
} else {
|
||||
CONF ctmp;
|
||||
CONF_set_nconf(&ctmp, conf);
|
||||
return NCONF_get_string(&ctmp, group, name);
|
||||
}
|
||||
}
|
||||
LCRYPTO_ALIAS(CONF_get_string);
|
||||
|
||||
long
|
||||
CONF_get_number(LHASH_OF(CONF_VALUE) *conf, const char *group,
|
||||
const char *name)
|
||||
{
|
||||
int status;
|
||||
long result = 0;
|
||||
|
||||
if (conf == NULL) {
|
||||
status = NCONF_get_number_e(NULL, group, name, &result);
|
||||
} else {
|
||||
CONF ctmp;
|
||||
CONF_set_nconf(&ctmp, conf);
|
||||
status = NCONF_get_number_e(&ctmp, group, name, &result);
|
||||
}
|
||||
|
||||
if (status == 0) {
|
||||
/* This function does not believe in errors... */
|
||||
ERR_clear_error();
|
||||
}
|
||||
return result;
|
||||
}
|
||||
LCRYPTO_ALIAS(CONF_get_number);
|
||||
|
||||
void
|
||||
CONF_free(LHASH_OF(CONF_VALUE) *conf)
|
||||
{
|
||||
CONF ctmp;
|
||||
|
||||
CONF_set_nconf(&ctmp, conf);
|
||||
NCONF_free_data(&ctmp);
|
||||
}
|
||||
LCRYPTO_ALIAS(CONF_free);
|
||||
|
||||
int
|
||||
CONF_dump_fp(LHASH_OF(CONF_VALUE) *conf, FILE *out)
|
||||
{
|
||||
BIO *btmp;
|
||||
int ret;
|
||||
|
||||
if (!(btmp = BIO_new_fp(out, BIO_NOCLOSE))) {
|
||||
CONFerror(ERR_R_BUF_LIB);
|
||||
return 0;
|
||||
}
|
||||
ret = CONF_dump_bio(conf, btmp);
|
||||
BIO_free(btmp);
|
||||
return ret;
|
||||
}
|
||||
LCRYPTO_ALIAS(CONF_dump_fp);
|
||||
|
||||
int
|
||||
CONF_dump_bio(LHASH_OF(CONF_VALUE) *conf, BIO *out)
|
||||
{
|
||||
CONF ctmp;
|
||||
|
||||
CONF_set_nconf(&ctmp, conf);
|
||||
return NCONF_dump_bio(&ctmp, out);
|
||||
}
|
||||
LCRYPTO_ALIAS(CONF_dump_bio);
|
||||
|
||||
/* The following section contains the "New CONF" functions. They are
|
||||
completely centralised around a new CONF structure that may contain
|
||||
basically anything, but at least a method pointer and a table of data.
|
||||
These functions are also written in terms of the bridge functions used
|
||||
by the "CONF classic" functions, for consistency. */
|
||||
|
||||
CONF *
|
||||
NCONF_new(CONF_METHOD *meth)
|
||||
NCONF_new(const CONF_METHOD *meth)
|
||||
{
|
||||
CONF *ret;
|
||||
|
||||
|
@ -257,15 +104,6 @@ NCONF_free(CONF *conf)
|
|||
}
|
||||
LCRYPTO_ALIAS(NCONF_free);
|
||||
|
||||
void
|
||||
NCONF_free_data(CONF *conf)
|
||||
{
|
||||
if (conf == NULL)
|
||||
return;
|
||||
conf->meth->destroy_data(conf);
|
||||
}
|
||||
LCRYPTO_ALIAS(NCONF_free_data);
|
||||
|
||||
int
|
||||
NCONF_load(CONF *conf, const char *file, long *eline)
|
||||
{
|
||||
|
@ -278,22 +116,6 @@ NCONF_load(CONF *conf, const char *file, long *eline)
|
|||
}
|
||||
LCRYPTO_ALIAS(NCONF_load);
|
||||
|
||||
int
|
||||
NCONF_load_fp(CONF *conf, FILE *fp, long *eline)
|
||||
{
|
||||
BIO *btmp;
|
||||
int ret;
|
||||
|
||||
if (!(btmp = BIO_new_fp(fp, BIO_NOCLOSE))) {
|
||||
CONFerror(ERR_R_BUF_LIB);
|
||||
return 0;
|
||||
}
|
||||
ret = NCONF_load_bio(conf, btmp, eline);
|
||||
BIO_free(btmp);
|
||||
return ret;
|
||||
}
|
||||
LCRYPTO_ALIAS(NCONF_load_fp);
|
||||
|
||||
int
|
||||
NCONF_load_bio(CONF *conf, BIO *bp, long *eline)
|
||||
{
|
||||
|
@ -368,30 +190,3 @@ NCONF_get_number_e(const CONF *conf, const char *group, const char *name,
|
|||
return 1;
|
||||
}
|
||||
LCRYPTO_ALIAS(NCONF_get_number_e);
|
||||
|
||||
int
|
||||
NCONF_dump_fp(const CONF *conf, FILE *out)
|
||||
{
|
||||
BIO *btmp;
|
||||
int ret;
|
||||
if (!(btmp = BIO_new_fp(out, BIO_NOCLOSE))) {
|
||||
CONFerror(ERR_R_BUF_LIB);
|
||||
return 0;
|
||||
}
|
||||
ret = NCONF_dump_bio(conf, btmp);
|
||||
BIO_free(btmp);
|
||||
return ret;
|
||||
}
|
||||
LCRYPTO_ALIAS(NCONF_dump_fp);
|
||||
|
||||
int
|
||||
NCONF_dump_bio(const CONF *conf, BIO *out)
|
||||
{
|
||||
if (conf == NULL) {
|
||||
CONFerror(CONF_R_NO_CONF);
|
||||
return 0;
|
||||
}
|
||||
|
||||
return conf->meth->dump(conf, out);
|
||||
}
|
||||
LCRYPTO_ALIAS(NCONF_dump_bio);
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
/* $OpenBSD: conf_api.h,v 1.5 2024/05/19 07:12:50 jsg Exp $ */
|
||||
/* $OpenBSD: conf_local.h,v 1.7 2024/08/31 09:54:31 tb Exp $ */
|
||||
/* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com)
|
||||
* All rights reserved.
|
||||
*
|
||||
|
@ -56,21 +56,46 @@
|
|||
* [including the GNU Public Licence.]
|
||||
*/
|
||||
|
||||
#ifndef HEADER_CONF_API_H
|
||||
#define HEADER_CONF_API_H
|
||||
#ifndef HEADER_CONF_LOCAL_H
|
||||
#define HEADER_CONF_LOCAL_H
|
||||
|
||||
#include <openssl/lhash.h>
|
||||
#include <openssl/conf.h>
|
||||
__BEGIN_HIDDEN_DECLS
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
const CONF_METHOD *NCONF_default(void);
|
||||
|
||||
struct conf_method_st {
|
||||
const char *name;
|
||||
CONF *(*create)(const CONF_METHOD *meth);
|
||||
int (*init)(CONF *conf);
|
||||
int (*destroy)(CONF *conf);
|
||||
int (*destroy_data)(CONF *conf);
|
||||
int (*load_bio)(CONF *conf, BIO *bp, long *eline);
|
||||
int (*dump)(const CONF *conf, BIO *bp);
|
||||
int (*is_number)(const CONF *conf, char c);
|
||||
int (*to_int)(const CONF *conf, char c);
|
||||
int (*load)(CONF *conf, const char *name, long *eline);
|
||||
};
|
||||
|
||||
int CONF_module_add(const char *name, conf_init_func *ifunc,
|
||||
conf_finish_func *ffunc);
|
||||
|
||||
const char *CONF_imodule_get_name(const CONF_IMODULE *md);
|
||||
const char *CONF_imodule_get_value(const CONF_IMODULE *md);
|
||||
void *CONF_imodule_get_usr_data(const CONF_IMODULE *md);
|
||||
void CONF_imodule_set_usr_data(CONF_IMODULE *md, void *usr_data);
|
||||
CONF_MODULE *CONF_imodule_get_module(const CONF_IMODULE *md);
|
||||
unsigned long CONF_imodule_get_flags(const CONF_IMODULE *md);
|
||||
void CONF_imodule_set_flags(CONF_IMODULE *md, unsigned long flags);
|
||||
void *CONF_module_get_usr_data(CONF_MODULE *pmod);
|
||||
void CONF_module_set_usr_data(CONF_MODULE *pmod, void *usr_data);
|
||||
|
||||
int CONF_parse_list(const char *list, int sep, int nospc,
|
||||
int (*list_cb)(const char *elem, int len, void *usr), void *arg);
|
||||
|
||||
void CONF_set_nconf(CONF *conf, LHASH_OF(CONF_VALUE) *hash);
|
||||
|
||||
/* Up until OpenSSL 0.9.5a, this was new_section */
|
||||
CONF_VALUE *_CONF_new_section(CONF *conf, const char *section);
|
||||
/* Up until OpenSSL 0.9.5a, this was get_section */
|
||||
CONF_VALUE *_CONF_get_section(const CONF *conf, const char *section);
|
||||
/* Up until OpenSSL 0.9.5a, this was CONF_get_section */
|
||||
STACK_OF(CONF_VALUE) *_CONF_get_section_values(const CONF *conf,
|
||||
const char *section);
|
||||
|
||||
|
@ -81,7 +106,8 @@ char *_CONF_get_string(const CONF *conf, const char *section,
|
|||
int _CONF_new_data(CONF *conf);
|
||||
void _CONF_free_data(CONF *conf);
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
#endif
|
||||
void OPENSSL_load_builtin_modules(void);
|
||||
|
||||
__END_HIDDEN_DECLS
|
||||
|
||||
#endif /* HEADER_CONF_LOCAL_H */
|
|
@ -1,4 +1,4 @@
|
|||
/* $OpenBSD: conf_mall.c,v 1.12 2024/04/09 13:56:30 beck Exp $ */
|
||||
/* $OpenBSD: conf_mall.c,v 1.13 2024/08/31 09:54:31 tb Exp $ */
|
||||
/* Written by Stephen Henson (steve@openssl.org) for the OpenSSL
|
||||
* project 2001.
|
||||
*/
|
||||
|
@ -67,4 +67,3 @@ OPENSSL_load_builtin_modules(void)
|
|||
/* Add builtin modules here */
|
||||
ASN1_add_oid_module();
|
||||
}
|
||||
LCRYPTO_ALIAS(OPENSSL_load_builtin_modules);
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
/* $OpenBSD: conf_mod.c,v 1.38 2024/04/09 13:56:30 beck Exp $ */
|
||||
/* $OpenBSD: conf_mod.c,v 1.39 2024/08/31 09:26:18 tb Exp $ */
|
||||
/* Written by Stephen Henson (steve@openssl.org) for the OpenSSL
|
||||
* project 2001.
|
||||
*/
|
||||
|
@ -413,7 +413,6 @@ CONF_module_add(const char *name, conf_init_func *ifunc, conf_finish_func *ffunc
|
|||
{
|
||||
return module_add(name, ifunc, ffunc);
|
||||
}
|
||||
LCRYPTO_ALIAS(CONF_module_add);
|
||||
|
||||
void
|
||||
CONF_modules_free(void)
|
||||
|
@ -430,63 +429,54 @@ CONF_imodule_get_name(const CONF_IMODULE *imod)
|
|||
{
|
||||
return imod->name;
|
||||
}
|
||||
LCRYPTO_ALIAS(CONF_imodule_get_name);
|
||||
|
||||
const char *
|
||||
CONF_imodule_get_value(const CONF_IMODULE *imod)
|
||||
{
|
||||
return imod->value;
|
||||
}
|
||||
LCRYPTO_ALIAS(CONF_imodule_get_value);
|
||||
|
||||
void *
|
||||
CONF_imodule_get_usr_data(const CONF_IMODULE *imod)
|
||||
{
|
||||
return imod->usr_data;
|
||||
}
|
||||
LCRYPTO_ALIAS(CONF_imodule_get_usr_data);
|
||||
|
||||
void
|
||||
CONF_imodule_set_usr_data(CONF_IMODULE *imod, void *usr_data)
|
||||
{
|
||||
imod->usr_data = usr_data;
|
||||
}
|
||||
LCRYPTO_ALIAS(CONF_imodule_set_usr_data);
|
||||
|
||||
CONF_MODULE *
|
||||
CONF_imodule_get_module(const CONF_IMODULE *imod)
|
||||
{
|
||||
return imod->mod;
|
||||
}
|
||||
LCRYPTO_ALIAS(CONF_imodule_get_module);
|
||||
|
||||
unsigned long
|
||||
CONF_imodule_get_flags(const CONF_IMODULE *imod)
|
||||
{
|
||||
return imod->flags;
|
||||
}
|
||||
LCRYPTO_ALIAS(CONF_imodule_get_flags);
|
||||
|
||||
void
|
||||
CONF_imodule_set_flags(CONF_IMODULE *imod, unsigned long flags)
|
||||
{
|
||||
imod->flags = flags;
|
||||
}
|
||||
LCRYPTO_ALIAS(CONF_imodule_set_flags);
|
||||
|
||||
void *
|
||||
CONF_module_get_usr_data(CONF_MODULE *mod)
|
||||
{
|
||||
return mod->usr_data;
|
||||
}
|
||||
LCRYPTO_ALIAS(CONF_module_get_usr_data);
|
||||
|
||||
void
|
||||
CONF_module_set_usr_data(CONF_MODULE *mod, void *usr_data)
|
||||
{
|
||||
mod->usr_data = usr_data;
|
||||
}
|
||||
LCRYPTO_ALIAS(CONF_module_set_usr_data);
|
||||
|
||||
/* Return default config file name */
|
||||
|
||||
|
@ -547,4 +537,3 @@ CONF_parse_list(const char *list_, int sep, int nospc,
|
|||
lstart = p + 1;
|
||||
}
|
||||
}
|
||||
LCRYPTO_ALIAS(CONF_parse_list);
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
/* $OpenBSD: conf_sap.c,v 1.16 2024/04/09 13:56:30 beck Exp $ */
|
||||
/* $OpenBSD: conf_sap.c,v 1.17 2024/08/31 09:54:31 tb Exp $ */
|
||||
/* Written by Stephen Henson (steve@openssl.org) for the OpenSSL
|
||||
* project 2001.
|
||||
*/
|
||||
|
@ -67,6 +67,8 @@
|
|||
#include <openssl/err.h>
|
||||
#include <openssl/x509.h>
|
||||
|
||||
#include "conf_local.h"
|
||||
|
||||
/* This is the automatic configuration loader: it is called automatically by
|
||||
* OpenSSL when any of a number of standard initialisation functions are called,
|
||||
* unless this is overridden by calling OPENSSL_no_config()
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
/* $OpenBSD: cryptlib.c,v 1.52 2024/07/09 07:16:44 beck Exp $ */
|
||||
/* $OpenBSD: cryptlib.c,v 1.53 2024/08/31 12:43:58 jsing Exp $ */
|
||||
/* ====================================================================
|
||||
* Copyright (c) 1998-2006 The OpenSSL Project. All rights reserved.
|
||||
*
|
||||
|
@ -125,6 +125,10 @@
|
|||
#include <openssl/crypto.h>
|
||||
|
||||
#include "crypto_local.h"
|
||||
#include "x86_arch.h"
|
||||
|
||||
/* Machine independent capabilities. */
|
||||
uint64_t crypto_cpu_caps;
|
||||
|
||||
static void (*locking_callback)(int mode, int type,
|
||||
const char *file, int line) = NULL;
|
||||
|
@ -330,13 +334,6 @@ CRYPTO_THREADID_hash(const CRYPTO_THREADID *id)
|
|||
|
||||
uint64_t OPENSSL_ia32cap_P;
|
||||
|
||||
uint64_t
|
||||
OPENSSL_cpu_caps(void)
|
||||
{
|
||||
return OPENSSL_ia32cap_P;
|
||||
}
|
||||
LCRYPTO_ALIAS(OPENSSL_cpu_caps);
|
||||
|
||||
#if defined(OPENSSL_CPUID_OBJ) && !defined(OPENSSL_NO_ASM)
|
||||
#define OPENSSL_CPUID_SETUP
|
||||
void
|
||||
|
@ -349,16 +346,12 @@ OPENSSL_cpuid_setup(void)
|
|||
return;
|
||||
trigger = 1;
|
||||
OPENSSL_ia32cap_P = OPENSSL_ia32_cpuid();
|
||||
|
||||
if ((OPENSSL_ia32cap_P & CPUCAP_MASK_AESNI) != 0)
|
||||
crypto_cpu_caps |= CRYPTO_CPU_CAPS_ACCELERATED_AES;
|
||||
}
|
||||
#endif
|
||||
|
||||
#else
|
||||
uint64_t
|
||||
OPENSSL_cpu_caps(void)
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
LCRYPTO_ALIAS(OPENSSL_cpu_caps);
|
||||
#endif
|
||||
|
||||
#if !defined(OPENSSL_CPUID_SETUP) && !defined(OPENSSL_CPUID_OBJ)
|
||||
|
@ -368,6 +361,13 @@ OPENSSL_cpuid_setup(void)
|
|||
}
|
||||
#endif
|
||||
|
||||
uint64_t
|
||||
OPENSSL_cpu_caps(void)
|
||||
{
|
||||
return crypto_cpu_caps;
|
||||
}
|
||||
LCRYPTO_ALIAS(OPENSSL_cpu_caps);
|
||||
|
||||
static void
|
||||
OPENSSL_showfatal(const char *fmta, ...)
|
||||
{
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
/* $OpenBSD: crypto.h,v 1.74 2024/04/10 15:13:23 beck Exp $ */
|
||||
/* $OpenBSD: crypto.h,v 1.75 2024/08/31 12:43:58 jsing Exp $ */
|
||||
/* ====================================================================
|
||||
* Copyright (c) 1998-2006 The OpenSSL Project. All rights reserved.
|
||||
*
|
||||
|
@ -373,8 +373,6 @@ __attribute__((__noreturn__))
|
|||
void OpenSSLDie(const char *file, int line, const char *assertion);
|
||||
#define OPENSSL_assert(e) (void)((e) ? 0 : (OpenSSLDie(__FILE__, __LINE__, #e),1))
|
||||
|
||||
uint64_t OPENSSL_cpu_caps(void);
|
||||
|
||||
int FIPS_mode(void);
|
||||
int FIPS_mode_set(int r);
|
||||
|
||||
|
@ -422,6 +420,13 @@ int CRYPTO_memcmp(const void *a, const void *b, size_t len);
|
|||
int OPENSSL_init_crypto(uint64_t opts, const void *settings);
|
||||
void OPENSSL_cleanup(void);
|
||||
|
||||
/*
|
||||
* CPU capabilities.
|
||||
*/
|
||||
#define CRYPTO_CPU_CAPS_ACCELERATED_AES 0x00000001ULL
|
||||
|
||||
uint64_t OPENSSL_cpu_caps(void);
|
||||
|
||||
/*
|
||||
* OpenSSL helpfully put OPENSSL_gmtime() here because all other time related
|
||||
* functions are in asn1.h.
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
/* $OpenBSD: ct_log.c,v 1.6 2023/07/08 07:22:58 beck Exp $ */
|
||||
/* $OpenBSD: ct_log.c,v 1.7 2024/08/31 09:26:18 tb Exp $ */
|
||||
/* Author: Adam Eijdenberg <adam.eijdenberg@gmail.com>. */
|
||||
/* ====================================================================
|
||||
* Copyright (c) 1998-2016 The OpenSSL Project. All rights reserved.
|
||||
|
@ -67,6 +67,8 @@
|
|||
#include <openssl/evp.h>
|
||||
#include <openssl/safestack.h>
|
||||
|
||||
#include "conf_local.h"
|
||||
|
||||
#include "cryptlib.h"
|
||||
|
||||
|
||||
|
|
|
@ -1,50 +0,0 @@
|
|||
Copyright (C) 1995-1997 Eric Young (eay@cryptsoft.com)
|
||||
All rights reserved.
|
||||
|
||||
This package is an DES implementation written by Eric Young (eay@cryptsoft.com).
|
||||
The implementation was written so as to conform with MIT's libdes.
|
||||
|
||||
This library is free for commercial and non-commercial use as long as
|
||||
the following conditions are aheared to. The following conditions
|
||||
apply to all code found in this distribution.
|
||||
|
||||
Copyright remains Eric Young's, and as such any Copyright notices in
|
||||
the code are not to be removed.
|
||||
If this package is used in a product, Eric Young should be given attribution
|
||||
as the author of that the SSL library. This can be in the form of a textual
|
||||
message at program startup or in documentation (online or textual) provided
|
||||
with the package.
|
||||
|
||||
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 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 acknowledgement:
|
||||
This product includes software developed by Eric Young (eay@cryptsoft.com)
|
||||
|
||||
THIS SOFTWARE IS PROVIDED BY ERIC YOUNG ``AS IS'' AND
|
||||
ANY EXPRESS 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 AUTHOR OR 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.
|
||||
|
||||
The license and distribution terms for any publically available version or
|
||||
derivative of this code cannot be changed. i.e. this code cannot simply be
|
||||
copied and put under another distrubution license
|
||||
[including the GNU Public License.]
|
||||
|
||||
The reason behind this being stated in this direct manner is past
|
||||
experience in code simply being copied and the attribution removed
|
||||
from it and then being distributed as part of other packages. This
|
||||
implementation was a non-trivial and unpaid effort.
|
|
@ -1,106 +0,0 @@
|
|||
/* $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.
|
||||
*
|
||||
* This package is an SSL implementation written
|
||||
* by Eric Young (eay@cryptsoft.com).
|
||||
* The implementation was written so as to conform with Netscapes SSL.
|
||||
*
|
||||
* This library is free for commercial and non-commercial use as long as
|
||||
* the following conditions are aheared to. The following conditions
|
||||
* apply to all code found in this distribution, be it the RC4, RSA,
|
||||
* lhash, DES, etc., code; not just the SSL code. The SSL documentation
|
||||
* included with this distribution is covered by the same copyright terms
|
||||
* except that the holder is Tim Hudson (tjh@cryptsoft.com).
|
||||
*
|
||||
* Copyright remains Eric Young's, and as such any Copyright notices in
|
||||
* the code are not to be removed.
|
||||
* If this package is used in a product, Eric Young should be given attribution
|
||||
* as the author of the parts of the library used.
|
||||
* This can be in the form of a textual message at program startup or
|
||||
* in documentation (online or textual) provided with the package.
|
||||
*
|
||||
* 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 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 acknowledgement:
|
||||
* "This product includes cryptographic software written by
|
||||
* Eric Young (eay@cryptsoft.com)"
|
||||
* The word 'cryptographic' can be left out if the rouines from the library
|
||||
* being used are not cryptographic related :-).
|
||||
* 4. If you include any Windows specific code (or a derivative thereof) from
|
||||
* the apps directory (application code) you must include an acknowledgement:
|
||||
* "This product includes software written by Tim Hudson (tjh@cryptsoft.com)"
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY ERIC YOUNG ``AS IS'' AND
|
||||
* ANY EXPRESS 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 AUTHOR OR 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.
|
||||
*
|
||||
* The licence and distribution terms for any publically available version or
|
||||
* derivative of this code cannot be changed. i.e. this code cannot simply be
|
||||
* copied and put under another distribution licence
|
||||
* [including the GNU Public Licence.]
|
||||
*/
|
||||
|
||||
#include "des_local.h"
|
||||
|
||||
DES_LONG
|
||||
DES_cbc_cksum(const unsigned char *in, DES_cblock *output,
|
||||
long length, DES_key_schedule *schedule,
|
||||
const_DES_cblock *ivec)
|
||||
{
|
||||
DES_LONG tout0, tout1, tin0, tin1;
|
||||
long l = length;
|
||||
DES_LONG tin[2];
|
||||
unsigned char *out = &(*output)[0];
|
||||
const unsigned char *iv = &(*ivec)[0];
|
||||
|
||||
c2l(iv, tout0);
|
||||
c2l(iv, tout1);
|
||||
for (; l > 0; l -= 8) {
|
||||
if (l >= 8) {
|
||||
c2l(in, tin0);
|
||||
c2l(in, tin1);
|
||||
} else
|
||||
c2ln(in, tin0, tin1, l);
|
||||
|
||||
tin0 ^= tout0;
|
||||
tin[0] = tin0;
|
||||
tin1 ^= tout1;
|
||||
tin[1] = tin1;
|
||||
DES_encrypt1((DES_LONG *)tin, schedule, DES_ENCRYPT);
|
||||
/* fix 15/10/91 eay - thanks to keithr@sco.COM */
|
||||
tout0 = tin[0];
|
||||
tout1 = tin[1];
|
||||
}
|
||||
if (out != NULL) {
|
||||
l2c(tout0, out);
|
||||
l2c(tout1, out);
|
||||
}
|
||||
tout0 = tin0 = tin1 = tin[0] = tin[1] = 0;
|
||||
/*
|
||||
Transform the data in tout1 so that it will
|
||||
match the return value that the MIT Kerberos
|
||||
mit_des_cbc_cksum API returns.
|
||||
*/
|
||||
tout1 = ((tout1 >> 24L) & 0x000000FF) |
|
||||
((tout1 >> 8L) & 0x0000FF00) |
|
||||
((tout1 << 8L) & 0x00FF0000) |
|
||||
((tout1 << 24L) & 0xFF000000);
|
||||
return (tout1);
|
||||
}
|
||||
LCRYPTO_ALIAS(DES_cbc_cksum);
|
|
@ -1,61 +0,0 @@
|
|||
/* $OpenBSD: cbc_enc.c,v 1.4 2023/07/08 07:11:07 beck Exp $ */
|
||||
/* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com)
|
||||
* All rights reserved.
|
||||
*
|
||||
* This package is an SSL implementation written
|
||||
* by Eric Young (eay@cryptsoft.com).
|
||||
* The implementation was written so as to conform with Netscapes SSL.
|
||||
*
|
||||
* This library is free for commercial and non-commercial use as long as
|
||||
* the following conditions are aheared to. The following conditions
|
||||
* apply to all code found in this distribution, be it the RC4, RSA,
|
||||
* lhash, DES, etc., code; not just the SSL code. The SSL documentation
|
||||
* included with this distribution is covered by the same copyright terms
|
||||
* except that the holder is Tim Hudson (tjh@cryptsoft.com).
|
||||
*
|
||||
* Copyright remains Eric Young's, and as such any Copyright notices in
|
||||
* the code are not to be removed.
|
||||
* If this package is used in a product, Eric Young should be given attribution
|
||||
* as the author of the parts of the library used.
|
||||
* This can be in the form of a textual message at program startup or
|
||||
* in documentation (online or textual) provided with the package.
|
||||
*
|
||||
* 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 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 acknowledgement:
|
||||
* "This product includes cryptographic software written by
|
||||
* Eric Young (eay@cryptsoft.com)"
|
||||
* The word 'cryptographic' can be left out if the rouines from the library
|
||||
* being used are not cryptographic related :-).
|
||||
* 4. If you include any Windows specific code (or a derivative thereof) from
|
||||
* the apps directory (application code) you must include an acknowledgement:
|
||||
* "This product includes software written by Tim Hudson (tjh@cryptsoft.com)"
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY ERIC YOUNG ``AS IS'' AND
|
||||
* ANY EXPRESS 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 AUTHOR OR 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.
|
||||
*
|
||||
* The licence and distribution terms for any publically available version or
|
||||
* derivative of this code cannot be changed. i.e. this code cannot simply be
|
||||
* copied and put under another distribution licence
|
||||
* [including the GNU Public Licence.]
|
||||
*/
|
||||
|
||||
#define CBC_ENC_C__DONT_UPDATE_IV
|
||||
|
||||
#include "ncbc_enc.c" /* des_cbc_encrypt */
|
|
@ -1,242 +0,0 @@
|
|||
/* $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.
|
||||
*
|
||||
* This package is an SSL implementation written
|
||||
* by Eric Young (eay@cryptsoft.com).
|
||||
* The implementation was written so as to conform with Netscapes SSL.
|
||||
*
|
||||
* This library is free for commercial and non-commercial use as long as
|
||||
* the following conditions are aheared to. The following conditions
|
||||
* apply to all code found in this distribution, be it the RC4, RSA,
|
||||
* lhash, DES, etc., code; not just the SSL code. The SSL documentation
|
||||
* included with this distribution is covered by the same copyright terms
|
||||
* except that the holder is Tim Hudson (tjh@cryptsoft.com).
|
||||
*
|
||||
* Copyright remains Eric Young's, and as such any Copyright notices in
|
||||
* the code are not to be removed.
|
||||
* If this package is used in a product, Eric Young should be given attribution
|
||||
* as the author of the parts of the library used.
|
||||
* This can be in the form of a textual message at program startup or
|
||||
* in documentation (online or textual) provided with the package.
|
||||
*
|
||||
* 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 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 acknowledgement:
|
||||
* "This product includes cryptographic software written by
|
||||
* Eric Young (eay@cryptsoft.com)"
|
||||
* The word 'cryptographic' can be left out if the rouines from the library
|
||||
* being used are not cryptographic related :-).
|
||||
* 4. If you include any Windows specific code (or a derivative thereof) from
|
||||
* the apps directory (application code) you must include an acknowledgement:
|
||||
* "This product includes software written by Tim Hudson (tjh@cryptsoft.com)"
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY ERIC YOUNG ``AS IS'' AND
|
||||
* ANY EXPRESS 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 AUTHOR OR 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.
|
||||
*
|
||||
* The licence and distribution terms for any publically available version or
|
||||
* derivative of this code cannot be changed. i.e. this code cannot simply be
|
||||
* copied and put under another distribution licence
|
||||
* [including the GNU Public Licence.]
|
||||
*/
|
||||
|
||||
#include "des_local.h"
|
||||
|
||||
/* The input and output encrypted as though 64bit cfb mode is being
|
||||
* used. The extra state information to record how much of the
|
||||
* 64bit block we have used is contained in *num;
|
||||
*/
|
||||
|
||||
void
|
||||
DES_ede3_cfb64_encrypt(const unsigned char *in, unsigned char *out,
|
||||
long length, DES_key_schedule *ks1,
|
||||
DES_key_schedule *ks2, DES_key_schedule *ks3,
|
||||
DES_cblock *ivec, int *num, int enc)
|
||||
{
|
||||
DES_LONG v0, v1;
|
||||
long l = length;
|
||||
int n = *num;
|
||||
DES_LONG ti[2];
|
||||
unsigned char *iv, c, cc;
|
||||
|
||||
iv = &(*ivec)[0];
|
||||
if (enc) {
|
||||
while (l--) {
|
||||
if (n == 0) {
|
||||
c2l(iv, v0);
|
||||
c2l(iv, v1);
|
||||
|
||||
ti[0] = v0;
|
||||
ti[1] = v1;
|
||||
DES_encrypt3(ti, ks1, ks2, ks3);
|
||||
v0 = ti[0];
|
||||
v1 = ti[1];
|
||||
|
||||
iv = &(*ivec)[0];
|
||||
l2c(v0, iv);
|
||||
l2c(v1, iv);
|
||||
iv = &(*ivec)[0];
|
||||
}
|
||||
c = *(in++) ^ iv[n];
|
||||
*(out++) = c;
|
||||
iv[n] = c;
|
||||
n = (n + 1) & 0x07;
|
||||
}
|
||||
} else {
|
||||
while (l--) {
|
||||
if (n == 0) {
|
||||
c2l(iv, v0);
|
||||
c2l(iv, v1);
|
||||
|
||||
ti[0] = v0;
|
||||
ti[1] = v1;
|
||||
DES_encrypt3(ti, ks1, ks2, ks3);
|
||||
v0 = ti[0];
|
||||
v1 = ti[1];
|
||||
|
||||
iv = &(*ivec)[0];
|
||||
l2c(v0, iv);
|
||||
l2c(v1, iv);
|
||||
iv = &(*ivec)[0];
|
||||
}
|
||||
cc = *(in++);
|
||||
c = iv[n];
|
||||
iv[n] = cc;
|
||||
*(out++) = c ^ cc;
|
||||
n = (n + 1) & 0x07;
|
||||
}
|
||||
}
|
||||
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.
|
||||
*/
|
||||
|
||||
void
|
||||
DES_ede3_cfb_encrypt(const unsigned char *in, unsigned char *out,
|
||||
int numbits, long length, DES_key_schedule *ks1,
|
||||
DES_key_schedule *ks2, DES_key_schedule *ks3,
|
||||
DES_cblock *ivec, int enc)
|
||||
{
|
||||
DES_LONG d0, d1, v0, v1;
|
||||
unsigned long l = length, n = ((unsigned int)numbits + 7)/8;
|
||||
int num = numbits, i;
|
||||
DES_LONG ti[2];
|
||||
unsigned char *iv;
|
||||
unsigned char ovec[16];
|
||||
|
||||
if (num > 64)
|
||||
return;
|
||||
iv = &(*ivec)[0];
|
||||
c2l(iv, v0);
|
||||
c2l(iv, v1);
|
||||
if (enc) {
|
||||
while (l >= n) {
|
||||
l -= n;
|
||||
ti[0] = v0;
|
||||
ti[1] = v1;
|
||||
DES_encrypt3(ti, ks1, ks2, ks3);
|
||||
c2ln(in, d0, d1, n);
|
||||
in += n;
|
||||
d0 ^= ti[0];
|
||||
d1 ^= ti[1];
|
||||
l2cn(d0, d1, out, n);
|
||||
out += n;
|
||||
/* 30-08-94 - eay - changed because l>>32 and
|
||||
* l<<32 are bad under gcc :-( */
|
||||
if (num == 32) {
|
||||
v0 = v1;
|
||||
v1 = d0;
|
||||
} else if (num == 64) {
|
||||
v0 = d0;
|
||||
v1 = d1;
|
||||
} else {
|
||||
iv = &ovec[0];
|
||||
l2c(v0, iv);
|
||||
l2c(v1, iv);
|
||||
l2c(d0, iv);
|
||||
l2c(d1, iv);
|
||||
/* shift ovec left most of the bits... */
|
||||
memmove(ovec, ovec + num/8,
|
||||
8 + (num % 8 ? 1 : 0));
|
||||
/* now the remaining bits */
|
||||
if (num % 8 != 0) {
|
||||
for (i = 0; i < 8; ++i) {
|
||||
ovec[i] <<= num % 8;
|
||||
ovec[i] |= ovec[i + 1] >>
|
||||
(8 - num % 8);
|
||||
}
|
||||
}
|
||||
iv = &ovec[0];
|
||||
c2l(iv, v0);
|
||||
c2l(iv, v1);
|
||||
}
|
||||
}
|
||||
} else {
|
||||
while (l >= n) {
|
||||
l -= n;
|
||||
ti[0] = v0;
|
||||
ti[1] = v1;
|
||||
DES_encrypt3(ti, ks1, ks2, ks3);
|
||||
c2ln(in, d0, d1, n);
|
||||
in += n;
|
||||
/* 30-08-94 - eay - changed because l>>32 and
|
||||
* l<<32 are bad under gcc :-( */
|
||||
if (num == 32) {
|
||||
v0 = v1;
|
||||
v1 = d0;
|
||||
} else if (num == 64) {
|
||||
v0 = d0;
|
||||
v1 = d1;
|
||||
} else {
|
||||
iv = &ovec[0];
|
||||
l2c(v0, iv);
|
||||
l2c(v1, iv);
|
||||
l2c(d0, iv);
|
||||
l2c(d1, iv);
|
||||
/* shift ovec left most of the bits... */
|
||||
memmove(ovec, ovec + num/8,
|
||||
8 + (num % 8 ? 1 : 0));
|
||||
/* now the remaining bits */
|
||||
if (num % 8 != 0) {
|
||||
for (i = 0; i < 8; ++i) {
|
||||
ovec[i] <<= num % 8;
|
||||
ovec[i] |= ovec[i + 1] >>
|
||||
(8 - num % 8);
|
||||
}
|
||||
}
|
||||
iv = &ovec[0];
|
||||
c2l(iv, v0);
|
||||
c2l(iv, v1);
|
||||
}
|
||||
d0 ^= ti[0];
|
||||
d1 ^= ti[1];
|
||||
l2cn(d0, d1, out, n);
|
||||
out += n;
|
||||
}
|
||||
}
|
||||
iv = &(*ivec)[0];
|
||||
l2c(v0, iv);
|
||||
l2c(v1, iv);
|
||||
v0 = v1 = d0 = d1 = ti[0] = ti[1] = 0;
|
||||
}
|
||||
LCRYPTO_ALIAS(DES_ede3_cfb_encrypt);
|
|
@ -1,123 +0,0 @@
|
|||
/* $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.
|
||||
*
|
||||
* This package is an SSL implementation written
|
||||
* by Eric Young (eay@cryptsoft.com).
|
||||
* The implementation was written so as to conform with Netscapes SSL.
|
||||
*
|
||||
* This library is free for commercial and non-commercial use as long as
|
||||
* the following conditions are aheared to. The following conditions
|
||||
* apply to all code found in this distribution, be it the RC4, RSA,
|
||||
* lhash, DES, etc., code; not just the SSL code. The SSL documentation
|
||||
* included with this distribution is covered by the same copyright terms
|
||||
* except that the holder is Tim Hudson (tjh@cryptsoft.com).
|
||||
*
|
||||
* Copyright remains Eric Young's, and as such any Copyright notices in
|
||||
* the code are not to be removed.
|
||||
* If this package is used in a product, Eric Young should be given attribution
|
||||
* as the author of the parts of the library used.
|
||||
* This can be in the form of a textual message at program startup or
|
||||
* in documentation (online or textual) provided with the package.
|
||||
*
|
||||
* 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 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 acknowledgement:
|
||||
* "This product includes cryptographic software written by
|
||||
* Eric Young (eay@cryptsoft.com)"
|
||||
* The word 'cryptographic' can be left out if the rouines from the library
|
||||
* being used are not cryptographic related :-).
|
||||
* 4. If you include any Windows specific code (or a derivative thereof) from
|
||||
* the apps directory (application code) you must include an acknowledgement:
|
||||
* "This product includes software written by Tim Hudson (tjh@cryptsoft.com)"
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY ERIC YOUNG ``AS IS'' AND
|
||||
* ANY EXPRESS 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 AUTHOR OR 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.
|
||||
*
|
||||
* The licence and distribution terms for any publically available version or
|
||||
* derivative of this code cannot be changed. i.e. this code cannot simply be
|
||||
* copied and put under another distribution licence
|
||||
* [including the GNU Public Licence.]
|
||||
*/
|
||||
|
||||
#include "des_local.h"
|
||||
|
||||
/* The input and output encrypted as though 64bit cfb mode is being
|
||||
* used. The extra state information to record how much of the
|
||||
* 64bit block we have used is contained in *num;
|
||||
*/
|
||||
|
||||
void
|
||||
DES_cfb64_encrypt(const unsigned char *in, unsigned char *out,
|
||||
long length, DES_key_schedule *schedule,
|
||||
DES_cblock *ivec, int *num, int enc)
|
||||
{
|
||||
DES_LONG v0, v1;
|
||||
long l = length;
|
||||
int n = *num;
|
||||
DES_LONG ti[2];
|
||||
unsigned char *iv, c, cc;
|
||||
|
||||
iv = &(*ivec)[0];
|
||||
if (enc) {
|
||||
while (l--) {
|
||||
if (n == 0) {
|
||||
c2l(iv, v0);
|
||||
ti[0] = v0;
|
||||
c2l(iv, v1);
|
||||
ti[1] = v1;
|
||||
DES_encrypt1(ti, schedule, DES_ENCRYPT);
|
||||
iv = &(*ivec)[0];
|
||||
v0 = ti[0];
|
||||
l2c(v0, iv);
|
||||
v0 = ti[1];
|
||||
l2c(v0, iv);
|
||||
iv = &(*ivec)[0];
|
||||
}
|
||||
c = *(in++) ^ iv[n];
|
||||
*(out++) = c;
|
||||
iv[n] = c;
|
||||
n = (n + 1) & 0x07;
|
||||
}
|
||||
} else {
|
||||
while (l--) {
|
||||
if (n == 0) {
|
||||
c2l(iv, v0);
|
||||
ti[0] = v0;
|
||||
c2l(iv, v1);
|
||||
ti[1] = v1;
|
||||
DES_encrypt1(ti, schedule, DES_ENCRYPT);
|
||||
iv = &(*ivec)[0];
|
||||
v0 = ti[0];
|
||||
l2c(v0, iv);
|
||||
v0 = ti[1];
|
||||
l2c(v0, iv);
|
||||
iv = &(*ivec)[0];
|
||||
}
|
||||
cc = *(in++);
|
||||
c = iv[n];
|
||||
iv[n] = cc;
|
||||
*(out++) = c ^ cc;
|
||||
n = (n + 1) & 0x07;
|
||||
}
|
||||
}
|
||||
v0 = v1 = ti[0] = ti[1] = c = cc = 0;
|
||||
*num = n;
|
||||
}
|
||||
LCRYPTO_ALIAS(DES_cfb64_encrypt);
|
|
@ -1,190 +0,0 @@
|
|||
/* $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.
|
||||
*
|
||||
* This package is an SSL implementation written
|
||||
* by Eric Young (eay@cryptsoft.com).
|
||||
* The implementation was written so as to conform with Netscapes SSL.
|
||||
*
|
||||
* This library is free for commercial and non-commercial use as long as
|
||||
* the following conditions are aheared to. The following conditions
|
||||
* apply to all code found in this distribution, be it the RC4, RSA,
|
||||
* lhash, DES, etc., code; not just the SSL code. The SSL documentation
|
||||
* included with this distribution is covered by the same copyright terms
|
||||
* except that the holder is Tim Hudson (tjh@cryptsoft.com).
|
||||
*
|
||||
* Copyright remains Eric Young's, and as such any Copyright notices in
|
||||
* the code are not to be removed.
|
||||
* If this package is used in a product, Eric Young should be given attribution
|
||||
* as the author of the parts of the library used.
|
||||
* This can be in the form of a textual message at program startup or
|
||||
* in documentation (online or textual) provided with the package.
|
||||
*
|
||||
* 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 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 acknowledgement:
|
||||
* "This product includes cryptographic software written by
|
||||
* Eric Young (eay@cryptsoft.com)"
|
||||
* The word 'cryptographic' can be left out if the rouines from the library
|
||||
* being used are not cryptographic related :-).
|
||||
* 4. If you include any Windows specific code (or a derivative thereof) from
|
||||
* the apps directory (application code) you must include an acknowledgement:
|
||||
* "This product includes software written by Tim Hudson (tjh@cryptsoft.com)"
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY ERIC YOUNG ``AS IS'' AND
|
||||
* ANY EXPRESS 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 AUTHOR OR 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.
|
||||
*
|
||||
* The licence and distribution terms for any publically available version or
|
||||
* derivative of this code cannot be changed. i.e. this code cannot simply be
|
||||
* copied and put under another distribution licence
|
||||
* [including the GNU Public Licence.]
|
||||
*/
|
||||
|
||||
#include "des_local.h"
|
||||
#include <endian.h>
|
||||
|
||||
/* The input and output are loaded in multiples of 8 bits.
|
||||
* What this means is that if you hame numbits=12 and length=2
|
||||
* the first 12 bits will be retrieved from the first byte and half
|
||||
* the second. The second 12 bits will come from the 3rd and half the 4th
|
||||
* byte.
|
||||
*/
|
||||
/* Until Aug 1 2003 this function did not correctly implement CFB-r, so it
|
||||
* will not be compatible with any encryption prior to that date. Ben. */
|
||||
void
|
||||
DES_cfb_encrypt(const unsigned char *in, unsigned char *out, int numbits,
|
||||
long length, DES_key_schedule *schedule, DES_cblock *ivec,
|
||||
int enc)
|
||||
{
|
||||
DES_LONG d0, d1, v0, v1;
|
||||
unsigned long l = length;
|
||||
int num = numbits/8, n = (numbits + 7)/8, i, rem = numbits % 8;
|
||||
DES_LONG ti[2];
|
||||
unsigned char *iv;
|
||||
#if BYTE_ORDER != LITTLE_ENDIAN
|
||||
unsigned char ovec[16];
|
||||
#else
|
||||
unsigned int sh[4];
|
||||
unsigned char *ovec = (unsigned char *)sh;
|
||||
#endif
|
||||
|
||||
if (numbits <= 0 || numbits > 64)
|
||||
return;
|
||||
iv = &(*ivec)[0];
|
||||
c2l(iv, v0);
|
||||
c2l(iv, v1);
|
||||
if (enc) {
|
||||
while (l >= (unsigned long)n) {
|
||||
l -= n;
|
||||
ti[0] = v0;
|
||||
ti[1] = v1;
|
||||
DES_encrypt1((DES_LONG *)ti, schedule, DES_ENCRYPT);
|
||||
c2ln(in, d0, d1, n);
|
||||
in += n;
|
||||
d0 ^= ti[0];
|
||||
d1 ^= ti[1];
|
||||
l2cn(d0, d1, out, n);
|
||||
out += n;
|
||||
/* 30-08-94 - eay - changed because l>>32 and
|
||||
* l<<32 are bad under gcc :-( */
|
||||
if (numbits == 32) {
|
||||
v0 = v1;
|
||||
v1 = d0;
|
||||
} else if (numbits == 64) {
|
||||
v0 = d0;
|
||||
v1 = d1;
|
||||
} else {
|
||||
#if BYTE_ORDER != LITTLE_ENDIAN
|
||||
iv = &ovec[0];
|
||||
l2c(v0, iv);
|
||||
l2c(v1, iv);
|
||||
l2c(d0, iv);
|
||||
l2c(d1, iv);
|
||||
#else
|
||||
sh[0] = v0, sh[1] = v1, sh[2] = d0, sh[3] = d1;
|
||||
#endif
|
||||
if (rem == 0)
|
||||
memmove(ovec, ovec + num, 8);
|
||||
else
|
||||
for (i = 0; i < 8; ++i)
|
||||
ovec[i] = ovec[i + num] << rem |
|
||||
ovec[i + num + 1] >> (8 -
|
||||
rem);
|
||||
#if BYTE_ORDER == LITTLE_ENDIAN
|
||||
v0 = sh[0], v1 = sh[1];
|
||||
#else
|
||||
iv = &ovec[0];
|
||||
c2l(iv, v0);
|
||||
c2l(iv, v1);
|
||||
#endif
|
||||
}
|
||||
}
|
||||
} else {
|
||||
while (l >= (unsigned long)n) {
|
||||
l -= n;
|
||||
ti[0] = v0;
|
||||
ti[1] = v1;
|
||||
DES_encrypt1((DES_LONG *)ti, schedule, DES_ENCRYPT);
|
||||
c2ln(in, d0, d1, n);
|
||||
in += n;
|
||||
/* 30-08-94 - eay - changed because l>>32 and
|
||||
* l<<32 are bad under gcc :-( */
|
||||
if (numbits == 32) {
|
||||
v0 = v1;
|
||||
v1 = d0;
|
||||
} else if (numbits == 64) {
|
||||
v0 = d0;
|
||||
v1 = d1;
|
||||
} else {
|
||||
#if BYTE_ORDER != LITTLE_ENDIAN
|
||||
iv = &ovec[0];
|
||||
l2c(v0, iv);
|
||||
l2c(v1, iv);
|
||||
l2c(d0, iv);
|
||||
l2c(d1, iv);
|
||||
#else
|
||||
sh[0] = v0, sh[1] = v1, sh[2] = d0, sh[3] = d1;
|
||||
#endif
|
||||
if (rem == 0)
|
||||
memmove(ovec, ovec + num, 8);
|
||||
else
|
||||
for (i = 0; i < 8; ++i)
|
||||
ovec[i] = ovec[i + num] << rem |
|
||||
ovec[i + num + 1] >> (8 -
|
||||
rem);
|
||||
#if BYTE_ORDER == LITTLE_ENDIAN
|
||||
v0 = sh[0], v1 = sh[1];
|
||||
#else
|
||||
iv = &ovec[0];
|
||||
c2l(iv, v0);
|
||||
c2l(iv, v1);
|
||||
#endif
|
||||
}
|
||||
d0 ^= ti[0];
|
||||
d1 ^= ti[1];
|
||||
l2cn(d0, d1, out, n);
|
||||
out += n;
|
||||
}
|
||||
}
|
||||
iv = &(*ivec)[0];
|
||||
l2c(v0, iv);
|
||||
l2c(v1, iv);
|
||||
v0 = v1 = d0 = d1 = ti[0] = ti[1] = 0;
|
||||
}
|
||||
LCRYPTO_ALIAS(DES_cfb_encrypt);
|
1022
lib/libcrypto/des/des.c
Normal file
1022
lib/libcrypto/des/des.c
Normal file
File diff suppressed because it is too large
Load diff
|
@ -1,4 +1,4 @@
|
|||
/* $OpenBSD: des.h,v 1.21 2023/07/31 05:04:06 tb Exp $ */
|
||||
/* $OpenBSD: des.h,v 1.22 2024/08/31 10:30:16 tb Exp $ */
|
||||
/* Copyright (C) 1995-1997 Eric Young (eay@cryptsoft.com)
|
||||
* All rights reserved.
|
||||
*
|
||||
|
@ -105,7 +105,6 @@ typedef struct DES_ks {
|
|||
DES_ede3_ofb64_encrypt((i),(o),(l),(k1),(k2),(k1),(iv),(n))
|
||||
|
||||
extern int DES_check_key; /* defaults to false */
|
||||
extern int DES_rw_mode; /* defaults to DES_PCBC_MODE */
|
||||
|
||||
void DES_ecb3_encrypt(const_DES_cblock *input, DES_cblock *output,
|
||||
DES_key_schedule *ks1, DES_key_schedule *ks2,
|
||||
|
@ -174,10 +173,6 @@ void DES_ede3_ofb64_encrypt(const unsigned char *in, unsigned char *out,
|
|||
long length, DES_key_schedule *ks1,
|
||||
DES_key_schedule *ks2, DES_key_schedule *ks3,
|
||||
DES_cblock *ivec, int *num);
|
||||
int DES_enc_read(int fd, void *buf, int len, DES_key_schedule *sched,
|
||||
DES_cblock *iv);
|
||||
int DES_enc_write(int fd, const void *buf, int len, DES_key_schedule *sched,
|
||||
DES_cblock *iv);
|
||||
char *DES_fcrypt(const char *buf, const char *salt, char *ret);
|
||||
char *DES_crypt(const char *buf, const char *salt);
|
||||
void DES_ofb_encrypt(const unsigned char *in, unsigned char *out, int numbits,
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
/* $OpenBSD: qud_cksm.c,v 1.11 2024/03/29 01:47:29 joshua Exp $ */
|
||||
/* $OpenBSD: des_cksum.c,v 1.1 2024/08/31 15:56:09 jsing Exp $ */
|
||||
/* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com)
|
||||
* All rights reserved.
|
||||
*
|
||||
|
@ -73,6 +73,53 @@
|
|||
/* Got the value MIT uses via brute force :-) 2/10/90 eay */
|
||||
#define NOISE ((DES_LONG)83653421L)
|
||||
|
||||
DES_LONG
|
||||
DES_cbc_cksum(const unsigned char *in, DES_cblock *output,
|
||||
long length, DES_key_schedule *schedule,
|
||||
const_DES_cblock *ivec)
|
||||
{
|
||||
DES_LONG tout0, tout1, tin0, tin1;
|
||||
long l = length;
|
||||
DES_LONG tin[2];
|
||||
unsigned char *out = &(*output)[0];
|
||||
const unsigned char *iv = &(*ivec)[0];
|
||||
|
||||
c2l(iv, tout0);
|
||||
c2l(iv, tout1);
|
||||
for (; l > 0; l -= 8) {
|
||||
if (l >= 8) {
|
||||
c2l(in, tin0);
|
||||
c2l(in, tin1);
|
||||
} else
|
||||
c2ln(in, tin0, tin1, l);
|
||||
|
||||
tin0 ^= tout0;
|
||||
tin[0] = tin0;
|
||||
tin1 ^= tout1;
|
||||
tin[1] = tin1;
|
||||
DES_encrypt1((DES_LONG *)tin, schedule, DES_ENCRYPT);
|
||||
/* fix 15/10/91 eay - thanks to keithr@sco.COM */
|
||||
tout0 = tin[0];
|
||||
tout1 = tin[1];
|
||||
}
|
||||
if (out != NULL) {
|
||||
l2c(tout0, out);
|
||||
l2c(tout1, out);
|
||||
}
|
||||
tout0 = tin0 = tin1 = tin[0] = tin[1] = 0;
|
||||
/*
|
||||
Transform the data in tout1 so that it will
|
||||
match the return value that the MIT Kerberos
|
||||
mit_des_cbc_cksum API returns.
|
||||
*/
|
||||
tout1 = ((tout1 >> 24L) & 0x000000FF) |
|
||||
((tout1 >> 8L) & 0x0000FF00) |
|
||||
((tout1 << 8L) & 0x00FF0000) |
|
||||
((tout1 << 24L) & 0xFF000000);
|
||||
return (tout1);
|
||||
}
|
||||
LCRYPTO_ALIAS(DES_cbc_cksum);
|
||||
|
||||
DES_LONG
|
||||
DES_quad_cksum(const unsigned char *input, DES_cblock output[],
|
||||
long length, int out_count, DES_cblock *seed)
|
|
@ -1,4 +1,4 @@
|
|||
/* $OpenBSD: des_enc.c,v 1.16 2024/03/29 01:47:29 joshua Exp $ */
|
||||
/* $OpenBSD: des_enc.c,v 1.20 2024/08/31 16:17:13 jsing Exp $ */
|
||||
/* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com)
|
||||
* All rights reserved.
|
||||
*
|
||||
|
@ -57,17 +57,159 @@
|
|||
*/
|
||||
|
||||
#include "des_local.h"
|
||||
#include "spr.h"
|
||||
|
||||
#ifndef OPENBSD_DES_ASM
|
||||
const DES_LONG DES_SPtrans[8][64] = {
|
||||
{
|
||||
/* nibble 0 */
|
||||
0x02080800L, 0x00080000L, 0x02000002L, 0x02080802L,
|
||||
0x02000000L, 0x00080802L, 0x00080002L, 0x02000002L,
|
||||
0x00080802L, 0x02080800L, 0x02080000L, 0x00000802L,
|
||||
0x02000802L, 0x02000000L, 0x00000000L, 0x00080002L,
|
||||
0x00080000L, 0x00000002L, 0x02000800L, 0x00080800L,
|
||||
0x02080802L, 0x02080000L, 0x00000802L, 0x02000800L,
|
||||
0x00000002L, 0x00000800L, 0x00080800L, 0x02080002L,
|
||||
0x00000800L, 0x02000802L, 0x02080002L, 0x00000000L,
|
||||
0x00000000L, 0x02080802L, 0x02000800L, 0x00080002L,
|
||||
0x02080800L, 0x00080000L, 0x00000802L, 0x02000800L,
|
||||
0x02080002L, 0x00000800L, 0x00080800L, 0x02000002L,
|
||||
0x00080802L, 0x00000002L, 0x02000002L, 0x02080000L,
|
||||
0x02080802L, 0x00080800L, 0x02080000L, 0x02000802L,
|
||||
0x02000000L, 0x00000802L, 0x00080002L, 0x00000000L,
|
||||
0x00080000L, 0x02000000L, 0x02000802L, 0x02080800L,
|
||||
0x00000002L, 0x02080002L, 0x00000800L, 0x00080802L,
|
||||
}, {
|
||||
/* nibble 1 */
|
||||
0x40108010L, 0x00000000L, 0x00108000L, 0x40100000L,
|
||||
0x40000010L, 0x00008010L, 0x40008000L, 0x00108000L,
|
||||
0x00008000L, 0x40100010L, 0x00000010L, 0x40008000L,
|
||||
0x00100010L, 0x40108000L, 0x40100000L, 0x00000010L,
|
||||
0x00100000L, 0x40008010L, 0x40100010L, 0x00008000L,
|
||||
0x00108010L, 0x40000000L, 0x00000000L, 0x00100010L,
|
||||
0x40008010L, 0x00108010L, 0x40108000L, 0x40000010L,
|
||||
0x40000000L, 0x00100000L, 0x00008010L, 0x40108010L,
|
||||
0x00100010L, 0x40108000L, 0x40008000L, 0x00108010L,
|
||||
0x40108010L, 0x00100010L, 0x40000010L, 0x00000000L,
|
||||
0x40000000L, 0x00008010L, 0x00100000L, 0x40100010L,
|
||||
0x00008000L, 0x40000000L, 0x00108010L, 0x40008010L,
|
||||
0x40108000L, 0x00008000L, 0x00000000L, 0x40000010L,
|
||||
0x00000010L, 0x40108010L, 0x00108000L, 0x40100000L,
|
||||
0x40100010L, 0x00100000L, 0x00008010L, 0x40008000L,
|
||||
0x40008010L, 0x00000010L, 0x40100000L, 0x00108000L,
|
||||
}, {
|
||||
/* nibble 2 */
|
||||
0x04000001L, 0x04040100L, 0x00000100L, 0x04000101L,
|
||||
0x00040001L, 0x04000000L, 0x04000101L, 0x00040100L,
|
||||
0x04000100L, 0x00040000L, 0x04040000L, 0x00000001L,
|
||||
0x04040101L, 0x00000101L, 0x00000001L, 0x04040001L,
|
||||
0x00000000L, 0x00040001L, 0x04040100L, 0x00000100L,
|
||||
0x00000101L, 0x04040101L, 0x00040000L, 0x04000001L,
|
||||
0x04040001L, 0x04000100L, 0x00040101L, 0x04040000L,
|
||||
0x00040100L, 0x00000000L, 0x04000000L, 0x00040101L,
|
||||
0x04040100L, 0x00000100L, 0x00000001L, 0x00040000L,
|
||||
0x00000101L, 0x00040001L, 0x04040000L, 0x04000101L,
|
||||
0x00000000L, 0x04040100L, 0x00040100L, 0x04040001L,
|
||||
0x00040001L, 0x04000000L, 0x04040101L, 0x00000001L,
|
||||
0x00040101L, 0x04000001L, 0x04000000L, 0x04040101L,
|
||||
0x00040000L, 0x04000100L, 0x04000101L, 0x00040100L,
|
||||
0x04000100L, 0x00000000L, 0x04040001L, 0x00000101L,
|
||||
0x04000001L, 0x00040101L, 0x00000100L, 0x04040000L,
|
||||
}, {
|
||||
/* nibble 3 */
|
||||
0x00401008L, 0x10001000L, 0x00000008L, 0x10401008L,
|
||||
0x00000000L, 0x10400000L, 0x10001008L, 0x00400008L,
|
||||
0x10401000L, 0x10000008L, 0x10000000L, 0x00001008L,
|
||||
0x10000008L, 0x00401008L, 0x00400000L, 0x10000000L,
|
||||
0x10400008L, 0x00401000L, 0x00001000L, 0x00000008L,
|
||||
0x00401000L, 0x10001008L, 0x10400000L, 0x00001000L,
|
||||
0x00001008L, 0x00000000L, 0x00400008L, 0x10401000L,
|
||||
0x10001000L, 0x10400008L, 0x10401008L, 0x00400000L,
|
||||
0x10400008L, 0x00001008L, 0x00400000L, 0x10000008L,
|
||||
0x00401000L, 0x10001000L, 0x00000008L, 0x10400000L,
|
||||
0x10001008L, 0x00000000L, 0x00001000L, 0x00400008L,
|
||||
0x00000000L, 0x10400008L, 0x10401000L, 0x00001000L,
|
||||
0x10000000L, 0x10401008L, 0x00401008L, 0x00400000L,
|
||||
0x10401008L, 0x00000008L, 0x10001000L, 0x00401008L,
|
||||
0x00400008L, 0x00401000L, 0x10400000L, 0x10001008L,
|
||||
0x00001008L, 0x10000000L, 0x10000008L, 0x10401000L,
|
||||
}, {
|
||||
/* nibble 4 */
|
||||
0x08000000L, 0x00010000L, 0x00000400L, 0x08010420L,
|
||||
0x08010020L, 0x08000400L, 0x00010420L, 0x08010000L,
|
||||
0x00010000L, 0x00000020L, 0x08000020L, 0x00010400L,
|
||||
0x08000420L, 0x08010020L, 0x08010400L, 0x00000000L,
|
||||
0x00010400L, 0x08000000L, 0x00010020L, 0x00000420L,
|
||||
0x08000400L, 0x00010420L, 0x00000000L, 0x08000020L,
|
||||
0x00000020L, 0x08000420L, 0x08010420L, 0x00010020L,
|
||||
0x08010000L, 0x00000400L, 0x00000420L, 0x08010400L,
|
||||
0x08010400L, 0x08000420L, 0x00010020L, 0x08010000L,
|
||||
0x00010000L, 0x00000020L, 0x08000020L, 0x08000400L,
|
||||
0x08000000L, 0x00010400L, 0x08010420L, 0x00000000L,
|
||||
0x00010420L, 0x08000000L, 0x00000400L, 0x00010020L,
|
||||
0x08000420L, 0x00000400L, 0x00000000L, 0x08010420L,
|
||||
0x08010020L, 0x08010400L, 0x00000420L, 0x00010000L,
|
||||
0x00010400L, 0x08010020L, 0x08000400L, 0x00000420L,
|
||||
0x00000020L, 0x00010420L, 0x08010000L, 0x08000020L,
|
||||
}, {
|
||||
/* nibble 5 */
|
||||
0x80000040L, 0x00200040L, 0x00000000L, 0x80202000L,
|
||||
0x00200040L, 0x00002000L, 0x80002040L, 0x00200000L,
|
||||
0x00002040L, 0x80202040L, 0x00202000L, 0x80000000L,
|
||||
0x80002000L, 0x80000040L, 0x80200000L, 0x00202040L,
|
||||
0x00200000L, 0x80002040L, 0x80200040L, 0x00000000L,
|
||||
0x00002000L, 0x00000040L, 0x80202000L, 0x80200040L,
|
||||
0x80202040L, 0x80200000L, 0x80000000L, 0x00002040L,
|
||||
0x00000040L, 0x00202000L, 0x00202040L, 0x80002000L,
|
||||
0x00002040L, 0x80000000L, 0x80002000L, 0x00202040L,
|
||||
0x80202000L, 0x00200040L, 0x00000000L, 0x80002000L,
|
||||
0x80000000L, 0x00002000L, 0x80200040L, 0x00200000L,
|
||||
0x00200040L, 0x80202040L, 0x00202000L, 0x00000040L,
|
||||
0x80202040L, 0x00202000L, 0x00200000L, 0x80002040L,
|
||||
0x80000040L, 0x80200000L, 0x00202040L, 0x00000000L,
|
||||
0x00002000L, 0x80000040L, 0x80002040L, 0x80202000L,
|
||||
0x80200000L, 0x00002040L, 0x00000040L, 0x80200040L,
|
||||
}, {
|
||||
/* nibble 6 */
|
||||
0x00004000L, 0x00000200L, 0x01000200L, 0x01000004L,
|
||||
0x01004204L, 0x00004004L, 0x00004200L, 0x00000000L,
|
||||
0x01000000L, 0x01000204L, 0x00000204L, 0x01004000L,
|
||||
0x00000004L, 0x01004200L, 0x01004000L, 0x00000204L,
|
||||
0x01000204L, 0x00004000L, 0x00004004L, 0x01004204L,
|
||||
0x00000000L, 0x01000200L, 0x01000004L, 0x00004200L,
|
||||
0x01004004L, 0x00004204L, 0x01004200L, 0x00000004L,
|
||||
0x00004204L, 0x01004004L, 0x00000200L, 0x01000000L,
|
||||
0x00004204L, 0x01004000L, 0x01004004L, 0x00000204L,
|
||||
0x00004000L, 0x00000200L, 0x01000000L, 0x01004004L,
|
||||
0x01000204L, 0x00004204L, 0x00004200L, 0x00000000L,
|
||||
0x00000200L, 0x01000004L, 0x00000004L, 0x01000200L,
|
||||
0x00000000L, 0x01000204L, 0x01000200L, 0x00004200L,
|
||||
0x00000204L, 0x00004000L, 0x01004204L, 0x01000000L,
|
||||
0x01004200L, 0x00000004L, 0x00004004L, 0x01004204L,
|
||||
0x01000004L, 0x01004200L, 0x01004000L, 0x00004004L,
|
||||
}, {
|
||||
/* nibble 7 */
|
||||
0x20800080L, 0x20820000L, 0x00020080L, 0x00000000L,
|
||||
0x20020000L, 0x00800080L, 0x20800000L, 0x20820080L,
|
||||
0x00000080L, 0x20000000L, 0x00820000L, 0x00020080L,
|
||||
0x00820080L, 0x20020080L, 0x20000080L, 0x20800000L,
|
||||
0x00020000L, 0x00820080L, 0x00800080L, 0x20020000L,
|
||||
0x20820080L, 0x20000080L, 0x00000000L, 0x00820000L,
|
||||
0x20000000L, 0x00800000L, 0x20020080L, 0x20800080L,
|
||||
0x00800000L, 0x00020000L, 0x20820000L, 0x00000080L,
|
||||
0x00800000L, 0x00020000L, 0x20000080L, 0x20820080L,
|
||||
0x00020080L, 0x20000000L, 0x00000000L, 0x00820000L,
|
||||
0x20800080L, 0x20020080L, 0x20020000L, 0x00800080L,
|
||||
0x20820000L, 0x00000080L, 0x00800080L, 0x20020000L,
|
||||
0x20820080L, 0x00800000L, 0x20800000L, 0x20000080L,
|
||||
0x00820000L, 0x00020080L, 0x20020080L, 0x20800000L,
|
||||
0x00000080L, 0x20820000L, 0x00820080L, 0x00000000L,
|
||||
0x20000000L, 0x20800080L, 0x00020000L, 0x00820080L,
|
||||
},
|
||||
};
|
||||
|
||||
void
|
||||
DES_encrypt1(DES_LONG *data, DES_key_schedule *ks, int enc)
|
||||
{
|
||||
DES_LONG l, r, t, u;
|
||||
#ifdef DES_PTR
|
||||
const unsigned char *des_SP = (const unsigned char *)DES_SPtrans;
|
||||
#endif
|
||||
#ifndef DES_UNROLL
|
||||
int i;
|
||||
#endif
|
||||
|
@ -156,9 +298,6 @@ void
|
|||
DES_encrypt2(DES_LONG *data, DES_key_schedule *ks, int enc)
|
||||
{
|
||||
DES_LONG l, r, t, u;
|
||||
#ifdef DES_PTR
|
||||
const unsigned char *des_SP = (const unsigned char *)DES_SPtrans;
|
||||
#endif
|
||||
#ifndef DES_UNROLL
|
||||
int i;
|
||||
#endif
|
||||
|
@ -236,8 +375,6 @@ DES_encrypt2(DES_LONG *data, DES_key_schedule *ks, int enc)
|
|||
}
|
||||
LCRYPTO_ALIAS(DES_encrypt2);
|
||||
|
||||
#endif /* OPENBSD_DES_ASM */
|
||||
|
||||
void
|
||||
DES_encrypt3(DES_LONG *data, DES_key_schedule *ks1,
|
||||
DES_key_schedule *ks2, DES_key_schedule *ks3)
|
||||
|
@ -284,8 +421,85 @@ LCRYPTO_ALIAS(DES_decrypt3);
|
|||
|
||||
#ifndef DES_DEFAULT_OPTIONS
|
||||
|
||||
#undef CBC_ENC_C__DONT_UPDATE_IV
|
||||
#include "ncbc_enc.c" /* DES_ncbc_encrypt */
|
||||
void
|
||||
DES_ncbc_encrypt(const unsigned char *in, unsigned char *out, long length,
|
||||
DES_key_schedule *_schedule, DES_cblock *ivec, int enc)
|
||||
{
|
||||
DES_LONG tin0, tin1;
|
||||
DES_LONG tout0, tout1, xor0, xor1;
|
||||
long l = length;
|
||||
DES_LONG tin[2];
|
||||
unsigned char *iv;
|
||||
|
||||
iv = &(*ivec)[0];
|
||||
|
||||
if (enc) {
|
||||
c2l(iv, tout0);
|
||||
c2l(iv, tout1);
|
||||
for (l -= 8; l >= 0; l -= 8) {
|
||||
c2l(in, tin0);
|
||||
c2l(in, tin1);
|
||||
tin0 ^= tout0;
|
||||
tin[0] = tin0;
|
||||
tin1 ^= tout1;
|
||||
tin[1] = tin1;
|
||||
DES_encrypt1((DES_LONG *)tin, _schedule, DES_ENCRYPT);
|
||||
tout0 = tin[0];
|
||||
l2c(tout0, out);
|
||||
tout1 = tin[1];
|
||||
l2c(tout1, out);
|
||||
}
|
||||
if (l != -8) {
|
||||
c2ln(in, tin0, tin1, l + 8);
|
||||
tin0 ^= tout0;
|
||||
tin[0] = tin0;
|
||||
tin1 ^= tout1;
|
||||
tin[1] = tin1;
|
||||
DES_encrypt1((DES_LONG *)tin, _schedule, DES_ENCRYPT);
|
||||
tout0 = tin[0];
|
||||
l2c(tout0, out);
|
||||
tout1 = tin[1];
|
||||
l2c(tout1, out);
|
||||
}
|
||||
iv = &(*ivec)[0];
|
||||
l2c(tout0, iv);
|
||||
l2c(tout1, iv);
|
||||
} else {
|
||||
c2l(iv, xor0);
|
||||
c2l(iv, xor1);
|
||||
for (l -= 8; l >= 0; l -= 8) {
|
||||
c2l(in, tin0);
|
||||
tin[0] = tin0;
|
||||
c2l(in, tin1);
|
||||
tin[1] = tin1;
|
||||
DES_encrypt1((DES_LONG *)tin, _schedule, DES_DECRYPT);
|
||||
tout0 = tin[0] ^ xor0;
|
||||
tout1 = tin[1] ^ xor1;
|
||||
l2c(tout0, out);
|
||||
l2c(tout1, out);
|
||||
xor0 = tin0;
|
||||
xor1 = tin1;
|
||||
}
|
||||
if (l != -8) {
|
||||
c2l(in, tin0);
|
||||
tin[0] = tin0;
|
||||
c2l(in, tin1);
|
||||
tin[1] = tin1;
|
||||
DES_encrypt1((DES_LONG *)tin, _schedule, DES_DECRYPT);
|
||||
tout0 = tin[0] ^ xor0;
|
||||
tout1 = tin[1] ^ xor1;
|
||||
l2cn(tout0, tout1, out, l + 8);
|
||||
xor0 = tin0;
|
||||
xor1 = tin1;
|
||||
}
|
||||
iv = &(*ivec)[0];
|
||||
l2c(xor0, iv);
|
||||
l2c(xor1, iv);
|
||||
}
|
||||
tin0 = tin1 = tout0 = tout1 = xor0 = xor1 = 0;
|
||||
tin[0] = tin[1] = 0;
|
||||
}
|
||||
LCRYPTO_ALIAS(DES_ncbc_encrypt);
|
||||
|
||||
void
|
||||
DES_ede3_cbc_encrypt(const unsigned char *input, unsigned char *output,
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
/* $OpenBSD: fcrypt_b.c,v 1.12 2023/07/08 07:34:34 jsing Exp $ */
|
||||
/* $OpenBSD: des_fcrypt.c,v 1.4 2024/08/31 16:22:18 jsing Exp $ */
|
||||
/* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com)
|
||||
* All rights reserved.
|
||||
*
|
||||
|
@ -60,16 +60,21 @@
|
|||
|
||||
/* This version of crypt has been developed from my MIT compatible
|
||||
* DES library.
|
||||
* The library is available at pub/Crypto/DES at ftp.psy.uq.oz.au
|
||||
* Eric Young (eay@cryptsoft.com)
|
||||
*/
|
||||
|
||||
/* Modification by Jens Kupferschmidt (Cu)
|
||||
* I have included directive PARA for shared memory computers.
|
||||
* I have included a directive LONGCRYPT to using this routine to cipher
|
||||
* passwords with more than 8 bytes like HP-UX 10.x it used. The MAXPLEN
|
||||
* definition is the maximum of length of password and can changed. I have
|
||||
* defined 24.
|
||||
*/
|
||||
|
||||
#define DES_FCRYPT
|
||||
#include "des_local.h"
|
||||
#undef DES_FCRYPT
|
||||
|
||||
#ifndef OPENBSD_DES_ASM
|
||||
|
||||
#undef PERM_OP
|
||||
#define PERM_OP(a,b,t,n,m) ((t)=((((a)>>(n))^(b))&(m)), \
|
||||
(b)^=(t), \
|
||||
|
@ -79,14 +84,11 @@
|
|||
#define HPERM_OP(a,t,n,m) ((t)=((((a)<<(16-(n)))^(a))&(m)), \
|
||||
(a)=(a)^(t)^(t>>(16-(n)))) \
|
||||
|
||||
void
|
||||
static void
|
||||
fcrypt_body(DES_LONG *out, DES_key_schedule *ks, DES_LONG Eswap0,
|
||||
DES_LONG Eswap1)
|
||||
{
|
||||
DES_LONG l, r, t, u;
|
||||
#ifdef DES_PTR
|
||||
const unsigned char *des_SP = (const unsigned char *)DES_SPtrans;
|
||||
#endif
|
||||
DES_LONG *s;
|
||||
int j;
|
||||
DES_LONG E0, E1;
|
||||
|
@ -142,4 +144,111 @@ fcrypt_body(DES_LONG *out, DES_key_schedule *ks, DES_LONG Eswap0,
|
|||
out[1] = l;
|
||||
}
|
||||
|
||||
#endif /* OPENBSD_DES_ASM */
|
||||
/* Added more values to handle illegal salt values the way normal
|
||||
* crypt() implementations do. The patch was sent by
|
||||
* Bjorn Gronvall <bg@sics.se>
|
||||
*/
|
||||
static unsigned const char con_salt[128] = {
|
||||
0xD2, 0xD3, 0xD4, 0xD5, 0xD6, 0xD7, 0xD8, 0xD9,
|
||||
0xDA, 0xDB, 0xDC, 0xDD, 0xDE, 0xDF, 0xE0, 0xE1,
|
||||
0xE2, 0xE3, 0xE4, 0xE5, 0xE6, 0xE7, 0xE8, 0xE9,
|
||||
0xEA, 0xEB, 0xEC, 0xED, 0xEE, 0xEF, 0xF0, 0xF1,
|
||||
0xF2, 0xF3, 0xF4, 0xF5, 0xF6, 0xF7, 0xF8, 0xF9,
|
||||
0xFA, 0xFB, 0xFC, 0xFD, 0xFE, 0xFF, 0x00, 0x01,
|
||||
0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09,
|
||||
0x0A, 0x0B, 0x05, 0x06, 0x07, 0x08, 0x09, 0x0A,
|
||||
0x0B, 0x0C, 0x0D, 0x0E, 0x0F, 0x10, 0x11, 0x12,
|
||||
0x13, 0x14, 0x15, 0x16, 0x17, 0x18, 0x19, 0x1A,
|
||||
0x1B, 0x1C, 0x1D, 0x1E, 0x1F, 0x20, 0x21, 0x22,
|
||||
0x23, 0x24, 0x25, 0x20, 0x21, 0x22, 0x23, 0x24,
|
||||
0x25, 0x26, 0x27, 0x28, 0x29, 0x2A, 0x2B, 0x2C,
|
||||
0x2D, 0x2E, 0x2F, 0x30, 0x31, 0x32, 0x33, 0x34,
|
||||
0x35, 0x36, 0x37, 0x38, 0x39, 0x3A, 0x3B, 0x3C,
|
||||
0x3D, 0x3E, 0x3F, 0x40, 0x41, 0x42, 0x43, 0x44,
|
||||
};
|
||||
|
||||
static unsigned const char cov_2char[64] = {
|
||||
0x2E, 0x2F, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35,
|
||||
0x36, 0x37, 0x38, 0x39, 0x41, 0x42, 0x43, 0x44,
|
||||
0x45, 0x46, 0x47, 0x48, 0x49, 0x4A, 0x4B, 0x4C,
|
||||
0x4D, 0x4E, 0x4F, 0x50, 0x51, 0x52, 0x53, 0x54,
|
||||
0x55, 0x56, 0x57, 0x58, 0x59, 0x5A, 0x61, 0x62,
|
||||
0x63, 0x64, 0x65, 0x66, 0x67, 0x68, 0x69, 0x6A,
|
||||
0x6B, 0x6C, 0x6D, 0x6E, 0x6F, 0x70, 0x71, 0x72,
|
||||
0x73, 0x74, 0x75, 0x76, 0x77, 0x78, 0x79, 0x7A
|
||||
};
|
||||
|
||||
char *
|
||||
DES_crypt(const char *buf, const char *salt)
|
||||
{
|
||||
static char buff[14];
|
||||
|
||||
return (DES_fcrypt(buf, salt, buff));
|
||||
}
|
||||
LCRYPTO_ALIAS(DES_crypt);
|
||||
|
||||
char *
|
||||
DES_fcrypt(const char *buf, const char *salt, char *ret)
|
||||
{
|
||||
unsigned int i, j, x, y;
|
||||
DES_LONG Eswap0, Eswap1;
|
||||
DES_LONG out[2], ll;
|
||||
DES_cblock key;
|
||||
DES_key_schedule ks;
|
||||
unsigned char bb[9];
|
||||
unsigned char *b = bb;
|
||||
unsigned char c, u;
|
||||
|
||||
/* eay 25/08/92
|
||||
* If you call crypt("pwd","*") as often happens when you
|
||||
* have * as the pwd field in /etc/passwd, the function
|
||||
* returns *\0xxxxxxxxx
|
||||
* The \0 makes the string look like * so the pwd "*" would
|
||||
* crypt to "*". This was found when replacing the crypt in
|
||||
* our shared libraries. People found that the disabled
|
||||
* accounts effectively had no passwd :-(. */
|
||||
x = ret[0] = ((salt[0] == '\0') ? 'A' : salt[0]);
|
||||
Eswap0 = con_salt[x] << 2;
|
||||
x = ret[1] = ((salt[1] == '\0') ? 'A' : salt[1]);
|
||||
Eswap1 = con_salt[x] << 6;
|
||||
/* EAY
|
||||
r=strlen(buf);
|
||||
r=(r+7)/8;
|
||||
*/
|
||||
for (i = 0; i < 8; i++) {
|
||||
c = *(buf++);
|
||||
if (!c)
|
||||
break;
|
||||
key[i] = (c << 1);
|
||||
}
|
||||
for (; i < 8; i++)
|
||||
key[i] = 0;
|
||||
|
||||
DES_set_key_unchecked(&key, &ks);
|
||||
fcrypt_body(&(out[0]), &ks, Eswap0, Eswap1);
|
||||
|
||||
ll = out[0];
|
||||
l2c(ll, b);
|
||||
ll = out[1];
|
||||
l2c(ll, b);
|
||||
y = 0;
|
||||
u = 0x80;
|
||||
bb[8] = 0;
|
||||
for (i = 2; i < 13; i++) {
|
||||
c = 0;
|
||||
for (j = 0; j < 6; j++) {
|
||||
c <<= 1;
|
||||
if (bb[y] & u)
|
||||
c |= 1;
|
||||
u >>= 1;
|
||||
if (!u) {
|
||||
y++;
|
||||
u = 0x80;
|
||||
}
|
||||
}
|
||||
ret[i] = cov_2char[c];
|
||||
}
|
||||
ret[13] = '\0';
|
||||
return (ret);
|
||||
}
|
||||
LCRYPTO_ALIAS(DES_fcrypt);
|
|
@ -1,4 +1,4 @@
|
|||
/* $OpenBSD: set_key.c,v 1.28 2024/07/09 07:16:13 beck Exp $ */
|
||||
/* $OpenBSD: des_key.c,v 1.1 2024/08/31 15:56:09 jsing Exp $ */
|
||||
/* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com)
|
||||
* All rights reserved.
|
||||
*
|
||||
|
@ -413,3 +413,111 @@ DES_random_key(DES_cblock *ret)
|
|||
return (1);
|
||||
}
|
||||
LCRYPTO_ALIAS(DES_random_key);
|
||||
|
||||
void
|
||||
DES_string_to_key(const char *str, DES_cblock *key)
|
||||
{
|
||||
DES_key_schedule ks;
|
||||
int i, length;
|
||||
unsigned char j;
|
||||
|
||||
memset(key, 0, 8);
|
||||
length = strlen(str);
|
||||
#ifdef OLD_STR_TO_KEY
|
||||
for (i = 0; i < length; i++)
|
||||
(*key)[i % 8] ^= (str[i] << 1);
|
||||
#else /* MIT COMPATIBLE */
|
||||
for (i = 0; i < length; i++) {
|
||||
j = str[i];
|
||||
if ((i % 16) < 8)
|
||||
(*key)[i % 8] ^= (j << 1);
|
||||
else {
|
||||
/* Reverse the bit order 05/05/92 eay */
|
||||
j = ((j << 4) & 0xf0)|((j >> 4) & 0x0f);
|
||||
j = ((j << 2) & 0xcc)|((j >> 2) & 0x33);
|
||||
j = ((j << 1) & 0xaa)|((j >> 1) & 0x55);
|
||||
(*key)[7 - (i % 8)] ^= j;
|
||||
}
|
||||
}
|
||||
#endif
|
||||
DES_set_odd_parity(key);
|
||||
#ifdef EXPERIMENTAL_STR_TO_STRONG_KEY
|
||||
if (DES_is_weak_key(key))
|
||||
(*key)[7] ^= 0xF0;
|
||||
DES_set_key(key, &ks);
|
||||
#else
|
||||
DES_set_key_unchecked(key, &ks);
|
||||
#endif
|
||||
DES_cbc_cksum((const unsigned char *)str, key, length, &ks, 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)
|
||||
{
|
||||
DES_key_schedule ks;
|
||||
int i, length;
|
||||
unsigned char j;
|
||||
|
||||
memset(key1, 0, 8);
|
||||
memset(key2, 0, 8);
|
||||
length = strlen(str);
|
||||
#ifdef OLD_STR_TO_KEY
|
||||
if (length <= 8) {
|
||||
for (i = 0; i < length; i++) {
|
||||
(*key2)[i] = (*key1)[i] = (str[i] << 1);
|
||||
}
|
||||
} else {
|
||||
for (i = 0; i < length; i++) {
|
||||
if ((i/8) & 1)
|
||||
(*key2)[i % 8] ^= (str[i] << 1);
|
||||
else
|
||||
(*key1)[i % 8] ^= (str[i] << 1);
|
||||
}
|
||||
}
|
||||
#else /* MIT COMPATIBLE */
|
||||
for (i = 0; i < length; i++) {
|
||||
j = str[i];
|
||||
if ((i % 32) < 16) {
|
||||
if ((i % 16) < 8)
|
||||
(*key1)[i % 8] ^= (j << 1);
|
||||
else
|
||||
(*key2)[i % 8] ^= (j << 1);
|
||||
} else {
|
||||
j = ((j << 4) & 0xf0)|((j >> 4) & 0x0f);
|
||||
j = ((j << 2) & 0xcc)|((j >> 2) & 0x33);
|
||||
j = ((j << 1) & 0xaa)|((j >> 1) & 0x55);
|
||||
if ((i % 16) < 8)
|
||||
(*key1)[7 - (i % 8)] ^= j;
|
||||
else
|
||||
(*key2)[7 - (i % 8)] ^= j;
|
||||
}
|
||||
}
|
||||
if (length <= 8)
|
||||
memcpy(key2, key1, 8);
|
||||
#endif
|
||||
DES_set_odd_parity(key1);
|
||||
DES_set_odd_parity(key2);
|
||||
#ifdef EXPERIMENTAL_STR_TO_STRONG_KEY
|
||||
if (DES_is_weak_key(key1))
|
||||
(*key1)[7] ^= 0xF0;
|
||||
DES_set_key(key1, &ks);
|
||||
#else
|
||||
DES_set_key_unchecked(key1, &ks);
|
||||
#endif
|
||||
DES_cbc_cksum((const unsigned char *)str, key1, length, &ks, key1);
|
||||
#ifdef EXPERIMENTAL_STR_TO_STRONG_KEY
|
||||
if (DES_is_weak_key(key2))
|
||||
(*key2)[7] ^= 0xF0;
|
||||
DES_set_key(key2, &ks);
|
||||
#else
|
||||
DES_set_key_unchecked(key2, &ks);
|
||||
#endif
|
||||
DES_cbc_cksum((const unsigned char *)str, key2, length, &ks, key2);
|
||||
explicit_bzero(&ks, sizeof(ks));
|
||||
DES_set_odd_parity(key1);
|
||||
DES_set_odd_parity(key2);
|
||||
}
|
||||
LCRYPTO_ALIAS(DES_string_to_2keys);
|
|
@ -1,4 +1,4 @@
|
|||
/* $OpenBSD: des_local.h,v 1.3 2024/05/24 19:21:58 tb Exp $ */
|
||||
/* $OpenBSD: des_local.h,v 1.5 2024/08/31 16:22:18 jsing Exp $ */
|
||||
/* Copyright (C) 1995-1997 Eric Young (eay@cryptsoft.com)
|
||||
* All rights reserved.
|
||||
*
|
||||
|
@ -141,154 +141,6 @@ ROTATE(uint32_t a, uint32_t n)
|
|||
t=R^s[S+1]
|
||||
#endif
|
||||
|
||||
/* The changes to this macro may help or hinder, depending on the
|
||||
* compiler and the architecture. gcc2 always seems to do well :-).
|
||||
* Inspired by Dana How <how@isl.stanford.edu>
|
||||
* DO NOT use the alternative version on machines with 8 byte longs.
|
||||
* It does not seem to work on the Alpha, even when DES_LONG is 4
|
||||
* bytes, probably an issue of accessing non-word aligned objects :-( */
|
||||
#ifdef DES_PTR
|
||||
|
||||
/* It recently occurred to me that 0^0^0^0^0^0^0 == 0, so there
|
||||
* is no reason to not xor all the sub items together. This potentially
|
||||
* saves a register since things can be xored directly into L */
|
||||
|
||||
#if defined(DES_RISC1) || defined(DES_RISC2)
|
||||
#ifdef DES_RISC1
|
||||
#define D_ENCRYPT(LL,R,S) { \
|
||||
unsigned int u1,u2,u3; \
|
||||
LOAD_DATA(R,S,u,t,E0,E1,u1); \
|
||||
u2=(int)u>>8L; \
|
||||
u1=(int)u&0xfc; \
|
||||
u2&=0xfc; \
|
||||
t=ROTATE(t,4); \
|
||||
u>>=16L; \
|
||||
LL^= *(const DES_LONG *)(des_SP +u1); \
|
||||
LL^= *(const DES_LONG *)(des_SP+0x200+u2); \
|
||||
u3=(int)(u>>8L); \
|
||||
u1=(int)u&0xfc; \
|
||||
u3&=0xfc; \
|
||||
LL^= *(const DES_LONG *)(des_SP+0x400+u1); \
|
||||
LL^= *(const DES_LONG *)(des_SP+0x600+u3); \
|
||||
u2=(int)t>>8L; \
|
||||
u1=(int)t&0xfc; \
|
||||
u2&=0xfc; \
|
||||
t>>=16L; \
|
||||
LL^= *(const DES_LONG *)(des_SP+0x100+u1); \
|
||||
LL^= *(const DES_LONG *)(des_SP+0x300+u2); \
|
||||
u3=(int)t>>8L; \
|
||||
u1=(int)t&0xfc; \
|
||||
u3&=0xfc; \
|
||||
LL^= *(const DES_LONG *)(des_SP+0x500+u1); \
|
||||
LL^= *(const DES_LONG *)(des_SP+0x700+u3); }
|
||||
#endif
|
||||
#ifdef DES_RISC2
|
||||
#define D_ENCRYPT(LL,R,S) { \
|
||||
unsigned int u1,u2,s1,s2; \
|
||||
LOAD_DATA(R,S,u,t,E0,E1,u1); \
|
||||
u2=(int)u>>8L; \
|
||||
u1=(int)u&0xfc; \
|
||||
u2&=0xfc; \
|
||||
t=ROTATE(t,4); \
|
||||
LL^= *(const DES_LONG *)(des_SP +u1); \
|
||||
LL^= *(const DES_LONG *)(des_SP+0x200+u2); \
|
||||
s1=(int)(u>>16L); \
|
||||
s2=(int)(u>>24L); \
|
||||
s1&=0xfc; \
|
||||
s2&=0xfc; \
|
||||
LL^= *(const DES_LONG *)(des_SP+0x400+s1); \
|
||||
LL^= *(const DES_LONG *)(des_SP+0x600+s2); \
|
||||
u2=(int)t>>8L; \
|
||||
u1=(int)t&0xfc; \
|
||||
u2&=0xfc; \
|
||||
LL^= *(const DES_LONG *)(des_SP+0x100+u1); \
|
||||
LL^= *(const DES_LONG *)(des_SP+0x300+u2); \
|
||||
s1=(int)(t>>16L); \
|
||||
s2=(int)(t>>24L); \
|
||||
s1&=0xfc; \
|
||||
s2&=0xfc; \
|
||||
LL^= *(const DES_LONG *)(des_SP+0x500+s1); \
|
||||
LL^= *(const DES_LONG *)(des_SP+0x700+s2); }
|
||||
#endif
|
||||
#else
|
||||
#define D_ENCRYPT(LL,R,S) { \
|
||||
LOAD_DATA_tmp(R,S,u,t,E0,E1); \
|
||||
t=ROTATE(t,4); \
|
||||
LL^= \
|
||||
*(const DES_LONG *)(des_SP +((u )&0xfc))^ \
|
||||
*(const DES_LONG *)(des_SP+0x200+((u>> 8L)&0xfc))^ \
|
||||
*(const DES_LONG *)(des_SP+0x400+((u>>16L)&0xfc))^ \
|
||||
*(const DES_LONG *)(des_SP+0x600+((u>>24L)&0xfc))^ \
|
||||
*(const DES_LONG *)(des_SP+0x100+((t )&0xfc))^ \
|
||||
*(const DES_LONG *)(des_SP+0x300+((t>> 8L)&0xfc))^ \
|
||||
*(const DES_LONG *)(des_SP+0x500+((t>>16L)&0xfc))^ \
|
||||
*(const DES_LONG *)(des_SP+0x700+((t>>24L)&0xfc)); }
|
||||
#endif
|
||||
|
||||
#else /* original version */
|
||||
|
||||
#if defined(DES_RISC1) || defined(DES_RISC2)
|
||||
#ifdef DES_RISC1
|
||||
#define D_ENCRYPT(LL,R,S) { \
|
||||
unsigned int u1,u2,u3; \
|
||||
LOAD_DATA(R,S,u,t,E0,E1,u1); \
|
||||
u>>=2L; \
|
||||
t=ROTATE(t,6); \
|
||||
u2=(int)u>>8L; \
|
||||
u1=(int)u&0x3f; \
|
||||
u2&=0x3f; \
|
||||
u>>=16L; \
|
||||
LL^=DES_SPtrans[0][u1]; \
|
||||
LL^=DES_SPtrans[2][u2]; \
|
||||
u3=(int)u>>8L; \
|
||||
u1=(int)u&0x3f; \
|
||||
u3&=0x3f; \
|
||||
LL^=DES_SPtrans[4][u1]; \
|
||||
LL^=DES_SPtrans[6][u3]; \
|
||||
u2=(int)t>>8L; \
|
||||
u1=(int)t&0x3f; \
|
||||
u2&=0x3f; \
|
||||
t>>=16L; \
|
||||
LL^=DES_SPtrans[1][u1]; \
|
||||
LL^=DES_SPtrans[3][u2]; \
|
||||
u3=(int)t>>8L; \
|
||||
u1=(int)t&0x3f; \
|
||||
u3&=0x3f; \
|
||||
LL^=DES_SPtrans[5][u1]; \
|
||||
LL^=DES_SPtrans[7][u3]; }
|
||||
#endif
|
||||
#ifdef DES_RISC2
|
||||
#define D_ENCRYPT(LL,R,S) { \
|
||||
unsigned int u1,u2,s1,s2; \
|
||||
LOAD_DATA(R,S,u,t,E0,E1,u1); \
|
||||
u>>=2L; \
|
||||
t=ROTATE(t,6); \
|
||||
u2=(int)u>>8L; \
|
||||
u1=(int)u&0x3f; \
|
||||
u2&=0x3f; \
|
||||
LL^=DES_SPtrans[0][u1]; \
|
||||
LL^=DES_SPtrans[2][u2]; \
|
||||
s1=(int)u>>16L; \
|
||||
s2=(int)u>>24L; \
|
||||
s1&=0x3f; \
|
||||
s2&=0x3f; \
|
||||
LL^=DES_SPtrans[4][s1]; \
|
||||
LL^=DES_SPtrans[6][s2]; \
|
||||
u2=(int)t>>8L; \
|
||||
u1=(int)t&0x3f; \
|
||||
u2&=0x3f; \
|
||||
LL^=DES_SPtrans[1][u1]; \
|
||||
LL^=DES_SPtrans[3][u2]; \
|
||||
s1=(int)t>>16; \
|
||||
s2=(int)t>>24L; \
|
||||
s1&=0x3f; \
|
||||
s2&=0x3f; \
|
||||
LL^=DES_SPtrans[5][s1]; \
|
||||
LL^=DES_SPtrans[7][s2]; }
|
||||
#endif
|
||||
|
||||
#else
|
||||
|
||||
#define D_ENCRYPT(LL,R,S) { \
|
||||
LOAD_DATA_tmp(R,S,u,t,E0,E1); \
|
||||
t=ROTATE(t,4); \
|
||||
|
@ -301,8 +153,6 @@ ROTATE(uint32_t a, uint32_t n)
|
|||
DES_SPtrans[3][(t>>10L)&0x3f]^ \
|
||||
DES_SPtrans[5][(t>>18L)&0x3f]^ \
|
||||
DES_SPtrans[7][(t>>26L)&0x3f]; }
|
||||
#endif
|
||||
#endif
|
||||
|
||||
/* IP and FP
|
||||
* The problem is more of a geometric problem that random bit fiddling.
|
||||
|
@ -367,9 +217,6 @@ ROTATE(uint32_t a, uint32_t n)
|
|||
|
||||
extern const DES_LONG DES_SPtrans[8][64];
|
||||
|
||||
void fcrypt_body(DES_LONG *out, DES_key_schedule *ks,
|
||||
DES_LONG Eswap0, DES_LONG Eswap1);
|
||||
|
||||
#ifdef OPENSSL_SMALL_FOOTPRINT
|
||||
#undef DES_UNROLL
|
||||
#endif
|
||||
|
|
|
@ -1,85 +0,0 @@
|
|||
/* $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.
|
||||
*
|
||||
* This package is an SSL implementation written
|
||||
* by Eric Young (eay@cryptsoft.com).
|
||||
* The implementation was written so as to conform with Netscapes SSL.
|
||||
*
|
||||
* This library is free for commercial and non-commercial use as long as
|
||||
* the following conditions are aheared to. The following conditions
|
||||
* apply to all code found in this distribution, be it the RC4, RSA,
|
||||
* lhash, DES, etc., code; not just the SSL code. The SSL documentation
|
||||
* included with this distribution is covered by the same copyright terms
|
||||
* except that the holder is Tim Hudson (tjh@cryptsoft.com).
|
||||
*
|
||||
* Copyright remains Eric Young's, and as such any Copyright notices in
|
||||
* the code are not to be removed.
|
||||
* If this package is used in a product, Eric Young should be given attribution
|
||||
* as the author of the parts of the library used.
|
||||
* This can be in the form of a textual message at program startup or
|
||||
* in documentation (online or textual) provided with the package.
|
||||
*
|
||||
* 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 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 acknowledgement:
|
||||
* "This product includes cryptographic software written by
|
||||
* Eric Young (eay@cryptsoft.com)"
|
||||
* The word 'cryptographic' can be left out if the rouines from the library
|
||||
* being used are not cryptographic related :-).
|
||||
* 4. If you include any Windows specific code (or a derivative thereof) from
|
||||
* the apps directory (application code) you must include an acknowledgement:
|
||||
* "This product includes software written by Tim Hudson (tjh@cryptsoft.com)"
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY ERIC YOUNG ``AS IS'' AND
|
||||
* ANY EXPRESS 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 AUTHOR OR 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.
|
||||
*
|
||||
* The licence and distribution terms for any publically available version or
|
||||
* derivative of this code cannot be changed. i.e. this code cannot simply be
|
||||
* copied and put under another distribution licence
|
||||
* [including the GNU Public Licence.]
|
||||
*/
|
||||
|
||||
#include "des_local.h"
|
||||
|
||||
void
|
||||
DES_ecb3_encrypt(const_DES_cblock *input, DES_cblock *output,
|
||||
DES_key_schedule *ks1, DES_key_schedule *ks2,
|
||||
DES_key_schedule *ks3,
|
||||
int enc)
|
||||
{
|
||||
DES_LONG l0, l1;
|
||||
DES_LONG ll[2];
|
||||
const unsigned char *in = &(*input)[0];
|
||||
unsigned char *out = &(*output)[0];
|
||||
|
||||
c2l(in, l0);
|
||||
c2l(in, l1);
|
||||
ll[0] = l0;
|
||||
ll[1] = l1;
|
||||
if (enc)
|
||||
DES_encrypt3(ll, ks1, ks2, ks3);
|
||||
else
|
||||
DES_decrypt3(ll, ks1, ks2, ks3);
|
||||
l0 = ll[0];
|
||||
l1 = ll[1];
|
||||
l2c(l0, out);
|
||||
l2c(l1, out);
|
||||
}
|
||||
LCRYPTO_ALIAS(DES_ecb3_encrypt);
|
|
@ -1,83 +0,0 @@
|
|||
/* $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.
|
||||
*
|
||||
* This package is an SSL implementation written
|
||||
* by Eric Young (eay@cryptsoft.com).
|
||||
* The implementation was written so as to conform with Netscapes SSL.
|
||||
*
|
||||
* This library is free for commercial and non-commercial use as long as
|
||||
* the following conditions are aheared to. The following conditions
|
||||
* apply to all code found in this distribution, be it the RC4, RSA,
|
||||
* lhash, DES, etc., code; not just the SSL code. The SSL documentation
|
||||
* included with this distribution is covered by the same copyright terms
|
||||
* except that the holder is Tim Hudson (tjh@cryptsoft.com).
|
||||
*
|
||||
* Copyright remains Eric Young's, and as such any Copyright notices in
|
||||
* the code are not to be removed.
|
||||
* If this package is used in a product, Eric Young should be given attribution
|
||||
* as the author of the parts of the library used.
|
||||
* This can be in the form of a textual message at program startup or
|
||||
* in documentation (online or textual) provided with the package.
|
||||
*
|
||||
* 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 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 acknowledgement:
|
||||
* "This product includes cryptographic software written by
|
||||
* Eric Young (eay@cryptsoft.com)"
|
||||
* The word 'cryptographic' can be left out if the rouines from the library
|
||||
* being used are not cryptographic related :-).
|
||||
* 4. If you include any Windows specific code (or a derivative thereof) from
|
||||
* the apps directory (application code) you must include an acknowledgement:
|
||||
* "This product includes software written by Tim Hudson (tjh@cryptsoft.com)"
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY ERIC YOUNG ``AS IS'' AND
|
||||
* ANY EXPRESS 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 AUTHOR OR 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.
|
||||
*
|
||||
* The licence and distribution terms for any publically available version or
|
||||
* derivative of this code cannot be changed. i.e. this code cannot simply be
|
||||
* copied and put under another distribution licence
|
||||
* [including the GNU Public Licence.]
|
||||
*/
|
||||
|
||||
#include "des_local.h"
|
||||
#include <openssl/opensslv.h>
|
||||
#include <openssl/bio.h>
|
||||
|
||||
void
|
||||
DES_ecb_encrypt(const_DES_cblock *input, DES_cblock *output,
|
||||
DES_key_schedule *ks, int enc)
|
||||
{
|
||||
DES_LONG l;
|
||||
DES_LONG ll[2];
|
||||
const unsigned char *in = &(*input)[0];
|
||||
unsigned char *out = &(*output)[0];
|
||||
|
||||
c2l(in, l);
|
||||
ll[0] = l;
|
||||
c2l(in, l);
|
||||
ll[1] = l;
|
||||
DES_encrypt1(ll, ks, enc);
|
||||
l = ll[0];
|
||||
l2c(l, out);
|
||||
l = ll[1];
|
||||
l2c(l, out);
|
||||
l = ll[0] = ll[1] = 0;
|
||||
}
|
||||
LCRYPTO_ALIAS(DES_ecb_encrypt);
|
|
@ -1,190 +0,0 @@
|
|||
/* $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.
|
||||
*/
|
||||
/* ====================================================================
|
||||
* Copyright (c) 1999 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 product includes cryptographic software written by Eric Young
|
||||
* (eay@cryptsoft.com). This product includes software written by Tim
|
||||
* Hudson (tjh@cryptsoft.com).
|
||||
*
|
||||
*/
|
||||
|
||||
/*
|
||||
|
||||
This is an implementation of Triple DES Cipher Block Chaining with Output
|
||||
Feedback Masking, by Coppersmith, Johnson and Matyas, (IBM and Certicom).
|
||||
|
||||
Note that there is a known attack on this by Biham and Knudsen but it takes
|
||||
a lot of work:
|
||||
|
||||
http://www.cs.technion.ac.il/users/wwwb/cgi-bin/tr-get.cgi/1998/CS/CS0928.ps.gz
|
||||
|
||||
*/
|
||||
|
||||
#include <openssl/opensslconf.h> /* To see if OPENSSL_NO_DESCBCM is defined */
|
||||
|
||||
#ifndef OPENSSL_NO_DESCBCM
|
||||
#include "des_local.h"
|
||||
|
||||
void
|
||||
DES_ede3_cbcm_encrypt(const unsigned char *in, unsigned char *out,
|
||||
long length, DES_key_schedule *ks1, DES_key_schedule *ks2,
|
||||
DES_key_schedule *ks3, DES_cblock *ivec1, DES_cblock *ivec2,
|
||||
int enc)
|
||||
{
|
||||
DES_LONG tin0, tin1;
|
||||
DES_LONG tout0, tout1, xor0, xor1, m0, m1;
|
||||
long l = length;
|
||||
DES_LONG tin[2];
|
||||
unsigned char *iv1, *iv2;
|
||||
|
||||
iv1 = &(*ivec1)[0];
|
||||
iv2 = &(*ivec2)[0];
|
||||
|
||||
if (enc) {
|
||||
c2l(iv1, m0);
|
||||
c2l(iv1, m1);
|
||||
c2l(iv2, tout0);
|
||||
c2l(iv2, tout1);
|
||||
for (l -= 8; l >= -7; l -= 8) {
|
||||
tin[0] = m0;
|
||||
tin[1] = m1;
|
||||
DES_encrypt1(tin, ks3, 1);
|
||||
m0 = tin[0];
|
||||
m1 = tin[1];
|
||||
|
||||
if (l < 0) {
|
||||
c2ln(in, tin0, tin1, l + 8);
|
||||
} else {
|
||||
c2l(in, tin0);
|
||||
c2l(in, tin1);
|
||||
}
|
||||
tin0 ^= tout0;
|
||||
tin1 ^= tout1;
|
||||
|
||||
tin[0] = tin0;
|
||||
tin[1] = tin1;
|
||||
DES_encrypt1(tin, ks1, 1);
|
||||
tin[0] ^= m0;
|
||||
tin[1] ^= m1;
|
||||
DES_encrypt1(tin, ks2, 0);
|
||||
tin[0] ^= m0;
|
||||
tin[1] ^= m1;
|
||||
DES_encrypt1(tin, ks1, 1);
|
||||
tout0 = tin[0];
|
||||
tout1 = tin[1];
|
||||
|
||||
l2c(tout0, out);
|
||||
l2c(tout1, out);
|
||||
}
|
||||
iv1 = &(*ivec1)[0];
|
||||
l2c(m0, iv1);
|
||||
l2c(m1, iv1);
|
||||
|
||||
iv2 = &(*ivec2)[0];
|
||||
l2c(tout0, iv2);
|
||||
l2c(tout1, iv2);
|
||||
} else {
|
||||
DES_LONG t0, t1;
|
||||
|
||||
c2l(iv1, m0);
|
||||
c2l(iv1, m1);
|
||||
c2l(iv2, xor0);
|
||||
c2l(iv2, xor1);
|
||||
for (l -= 8; l >= -7; l -= 8) {
|
||||
tin[0] = m0;
|
||||
tin[1] = m1;
|
||||
DES_encrypt1(tin, ks3, 1);
|
||||
m0 = tin[0];
|
||||
m1 = tin[1];
|
||||
|
||||
c2l(in, tin0);
|
||||
c2l(in, tin1);
|
||||
|
||||
t0 = tin0;
|
||||
t1 = tin1;
|
||||
|
||||
tin[0] = tin0;
|
||||
tin[1] = tin1;
|
||||
DES_encrypt1(tin, ks1, 0);
|
||||
tin[0] ^= m0;
|
||||
tin[1] ^= m1;
|
||||
DES_encrypt1(tin, ks2, 1);
|
||||
tin[0] ^= m0;
|
||||
tin[1] ^= m1;
|
||||
DES_encrypt1(tin, ks1, 0);
|
||||
tout0 = tin[0];
|
||||
tout1 = tin[1];
|
||||
|
||||
tout0 ^= xor0;
|
||||
tout1 ^= xor1;
|
||||
if (l < 0) {
|
||||
l2cn(tout0, tout1, out, l + 8);
|
||||
} else {
|
||||
l2c(tout0, out);
|
||||
l2c(tout1, out);
|
||||
}
|
||||
xor0 = t0;
|
||||
xor1 = t1;
|
||||
}
|
||||
|
||||
iv1 = &(*ivec1)[0];
|
||||
l2c(m0, iv1);
|
||||
l2c(m1, iv1);
|
||||
|
||||
iv2 = &(*ivec2)[0];
|
||||
l2c(xor0, iv2);
|
||||
l2c(xor1, iv2);
|
||||
}
|
||||
tin0 = tin1 = tout0 = tout1 = xor0 = xor1 = 0;
|
||||
tin[0] = tin[1] = 0;
|
||||
}
|
||||
LCRYPTO_ALIAS(DES_ede3_cbcm_encrypt);
|
||||
#endif
|
|
@ -1,86 +0,0 @@
|
|||
/* $OpenBSD: enc_read.c,v 1.20 2024/07/09 07:16:13 beck Exp $ */
|
||||
/* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com)
|
||||
* All rights reserved.
|
||||
*
|
||||
* This package is an SSL implementation written
|
||||
* by Eric Young (eay@cryptsoft.com).
|
||||
* The implementation was written so as to conform with Netscapes SSL.
|
||||
*
|
||||
* This library is free for commercial and non-commercial use as long as
|
||||
* the following conditions are aheared to. The following conditions
|
||||
* apply to all code found in this distribution, be it the RC4, RSA,
|
||||
* lhash, DES, etc., code; not just the SSL code. The SSL documentation
|
||||
* included with this distribution is covered by the same copyright terms
|
||||
* except that the holder is Tim Hudson (tjh@cryptsoft.com).
|
||||
*
|
||||
* Copyright remains Eric Young's, and as such any Copyright notices in
|
||||
* the code are not to be removed.
|
||||
* If this package is used in a product, Eric Young should be given attribution
|
||||
* as the author of the parts of the library used.
|
||||
* This can be in the form of a textual message at program startup or
|
||||
* in documentation (online or textual) provided with the package.
|
||||
*
|
||||
* 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 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 acknowledgement:
|
||||
* "This product includes cryptographic software written by
|
||||
* Eric Young (eay@cryptsoft.com)"
|
||||
* The word 'cryptographic' can be left out if the rouines from the library
|
||||
* being used are not cryptographic related :-).
|
||||
* 4. If you include any Windows specific code (or a derivative thereof) from
|
||||
* the apps directory (application code) you must include an acknowledgement:
|
||||
* "This product includes software written by Tim Hudson (tjh@cryptsoft.com)"
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY ERIC YOUNG ``AS IS'' AND
|
||||
* ANY EXPRESS 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 AUTHOR OR 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.
|
||||
*
|
||||
* The licence and distribution terms for any publically available version or
|
||||
* derivative of this code cannot be changed. i.e. this code cannot simply be
|
||||
* copied and put under another distribution licence
|
||||
* [including the GNU Public Licence.]
|
||||
*/
|
||||
|
||||
#include <stdio.h>
|
||||
|
||||
#include <openssl/opensslconf.h>
|
||||
|
||||
#include "des_local.h"
|
||||
|
||||
/*
|
||||
* XXX - remove this file in the next major bump
|
||||
*/
|
||||
|
||||
int DES_rw_mode = DES_PCBC_MODE;
|
||||
LCRYPTO_ALIAS(DES_rw_mode);
|
||||
|
||||
int
|
||||
DES_enc_read(int fd, void *buf, int len, DES_key_schedule *sched,
|
||||
DES_cblock *iv)
|
||||
{
|
||||
return -1;
|
||||
}
|
||||
LCRYPTO_ALIAS(DES_enc_read);
|
||||
|
||||
int
|
||||
DES_enc_write(int fd, const void *_buf, int len,
|
||||
DES_key_schedule *sched, DES_cblock *iv)
|
||||
{
|
||||
return -1;
|
||||
}
|
||||
LCRYPTO_ALIAS(DES_enc_write);
|
|
@ -1,127 +0,0 @@
|
|||
/* $OpenBSD: fcrypt.c,v 1.16 2024/03/29 01:47:29 joshua Exp $ */
|
||||
|
||||
#include <stdio.h>
|
||||
|
||||
/* This version of crypt has been developed from my MIT compatible
|
||||
* DES library.
|
||||
* Eric Young (eay@cryptsoft.com)
|
||||
*/
|
||||
|
||||
/* Modification by Jens Kupferschmidt (Cu)
|
||||
* I have included directive PARA for shared memory computers.
|
||||
* I have included a directive LONGCRYPT to using this routine to cipher
|
||||
* passwords with more than 8 bytes like HP-UX 10.x it used. The MAXPLEN
|
||||
* definition is the maximum of length of password and can changed. I have
|
||||
* defined 24.
|
||||
*/
|
||||
|
||||
#include "des_local.h"
|
||||
|
||||
/* Added more values to handle illegal salt values the way normal
|
||||
* crypt() implementations do. The patch was sent by
|
||||
* Bjorn Gronvall <bg@sics.se>
|
||||
*/
|
||||
static unsigned const char con_salt[128] = {
|
||||
0xD2, 0xD3, 0xD4, 0xD5, 0xD6, 0xD7, 0xD8, 0xD9,
|
||||
0xDA, 0xDB, 0xDC, 0xDD, 0xDE, 0xDF, 0xE0, 0xE1,
|
||||
0xE2, 0xE3, 0xE4, 0xE5, 0xE6, 0xE7, 0xE8, 0xE9,
|
||||
0xEA, 0xEB, 0xEC, 0xED, 0xEE, 0xEF, 0xF0, 0xF1,
|
||||
0xF2, 0xF3, 0xF4, 0xF5, 0xF6, 0xF7, 0xF8, 0xF9,
|
||||
0xFA, 0xFB, 0xFC, 0xFD, 0xFE, 0xFF, 0x00, 0x01,
|
||||
0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09,
|
||||
0x0A, 0x0B, 0x05, 0x06, 0x07, 0x08, 0x09, 0x0A,
|
||||
0x0B, 0x0C, 0x0D, 0x0E, 0x0F, 0x10, 0x11, 0x12,
|
||||
0x13, 0x14, 0x15, 0x16, 0x17, 0x18, 0x19, 0x1A,
|
||||
0x1B, 0x1C, 0x1D, 0x1E, 0x1F, 0x20, 0x21, 0x22,
|
||||
0x23, 0x24, 0x25, 0x20, 0x21, 0x22, 0x23, 0x24,
|
||||
0x25, 0x26, 0x27, 0x28, 0x29, 0x2A, 0x2B, 0x2C,
|
||||
0x2D, 0x2E, 0x2F, 0x30, 0x31, 0x32, 0x33, 0x34,
|
||||
0x35, 0x36, 0x37, 0x38, 0x39, 0x3A, 0x3B, 0x3C,
|
||||
0x3D, 0x3E, 0x3F, 0x40, 0x41, 0x42, 0x43, 0x44,
|
||||
};
|
||||
|
||||
static unsigned const char cov_2char[64] = {
|
||||
0x2E, 0x2F, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35,
|
||||
0x36, 0x37, 0x38, 0x39, 0x41, 0x42, 0x43, 0x44,
|
||||
0x45, 0x46, 0x47, 0x48, 0x49, 0x4A, 0x4B, 0x4C,
|
||||
0x4D, 0x4E, 0x4F, 0x50, 0x51, 0x52, 0x53, 0x54,
|
||||
0x55, 0x56, 0x57, 0x58, 0x59, 0x5A, 0x61, 0x62,
|
||||
0x63, 0x64, 0x65, 0x66, 0x67, 0x68, 0x69, 0x6A,
|
||||
0x6B, 0x6C, 0x6D, 0x6E, 0x6F, 0x70, 0x71, 0x72,
|
||||
0x73, 0x74, 0x75, 0x76, 0x77, 0x78, 0x79, 0x7A
|
||||
};
|
||||
|
||||
char *
|
||||
DES_crypt(const char *buf, const char *salt)
|
||||
{
|
||||
static char buff[14];
|
||||
|
||||
return (DES_fcrypt(buf, salt, buff));
|
||||
}
|
||||
LCRYPTO_ALIAS(DES_crypt);
|
||||
|
||||
char *
|
||||
DES_fcrypt(const char *buf, const char *salt, char *ret)
|
||||
{
|
||||
unsigned int i, j, x, y;
|
||||
DES_LONG Eswap0, Eswap1;
|
||||
DES_LONG out[2], ll;
|
||||
DES_cblock key;
|
||||
DES_key_schedule ks;
|
||||
unsigned char bb[9];
|
||||
unsigned char *b = bb;
|
||||
unsigned char c, u;
|
||||
|
||||
/* eay 25/08/92
|
||||
* If you call crypt("pwd","*") as often happens when you
|
||||
* have * as the pwd field in /etc/passwd, the function
|
||||
* returns *\0xxxxxxxxx
|
||||
* The \0 makes the string look like * so the pwd "*" would
|
||||
* crypt to "*". This was found when replacing the crypt in
|
||||
* our shared libraries. People found that the disabled
|
||||
* accounts effectively had no passwd :-(. */
|
||||
x = ret[0] = ((salt[0] == '\0') ? 'A' : salt[0]);
|
||||
Eswap0 = con_salt[x] << 2;
|
||||
x = ret[1] = ((salt[1] == '\0') ? 'A' : salt[1]);
|
||||
Eswap1 = con_salt[x] << 6;
|
||||
/* EAY
|
||||
r=strlen(buf);
|
||||
r=(r+7)/8;
|
||||
*/
|
||||
for (i = 0; i < 8; i++) {
|
||||
c = *(buf++);
|
||||
if (!c)
|
||||
break;
|
||||
key[i] = (c << 1);
|
||||
}
|
||||
for (; i < 8; i++)
|
||||
key[i] = 0;
|
||||
|
||||
DES_set_key_unchecked(&key, &ks);
|
||||
fcrypt_body(&(out[0]), &ks, Eswap0, Eswap1);
|
||||
|
||||
ll = out[0];
|
||||
l2c(ll, b);
|
||||
ll = out[1];
|
||||
l2c(ll, b);
|
||||
y = 0;
|
||||
u = 0x80;
|
||||
bb[8] = 0;
|
||||
for (i = 2; i < 13; i++) {
|
||||
c = 0;
|
||||
for (j = 0; j < 6; j++) {
|
||||
c <<= 1;
|
||||
if (bb[y] & u)
|
||||
c |= 1;
|
||||
u >>= 1;
|
||||
if (!u) {
|
||||
y++;
|
||||
u = 0x80;
|
||||
}
|
||||
}
|
||||
ret[i] = cov_2char[c];
|
||||
}
|
||||
ret[13] = '\0';
|
||||
return (ret);
|
||||
}
|
||||
LCRYPTO_ALIAS(DES_fcrypt);
|
|
@ -1,160 +0,0 @@
|
|||
/* $OpenBSD: ncbc_enc.c,v 1.11 2024/03/29 01:47:29 joshua Exp $ */
|
||||
/*
|
||||
* #included by:
|
||||
* cbc_enc.c (DES_cbc_encrypt)
|
||||
* des_enc.c (DES_ncbc_encrypt)
|
||||
*/
|
||||
/* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com)
|
||||
* All rights reserved.
|
||||
*
|
||||
* This package is an SSL implementation written
|
||||
* by Eric Young (eay@cryptsoft.com).
|
||||
* The implementation was written so as to conform with Netscapes SSL.
|
||||
*
|
||||
* This library is free for commercial and non-commercial use as long as
|
||||
* the following conditions are aheared to. The following conditions
|
||||
* apply to all code found in this distribution, be it the RC4, RSA,
|
||||
* lhash, DES, etc., code; not just the SSL code. The SSL documentation
|
||||
* included with this distribution is covered by the same copyright terms
|
||||
* except that the holder is Tim Hudson (tjh@cryptsoft.com).
|
||||
*
|
||||
* Copyright remains Eric Young's, and as such any Copyright notices in
|
||||
* the code are not to be removed.
|
||||
* If this package is used in a product, Eric Young should be given attribution
|
||||
* as the author of the parts of the library used.
|
||||
* This can be in the form of a textual message at program startup or
|
||||
* in documentation (online or textual) provided with the package.
|
||||
*
|
||||
* 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 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 acknowledgement:
|
||||
* "This product includes cryptographic software written by
|
||||
* Eric Young (eay@cryptsoft.com)"
|
||||
* The word 'cryptographic' can be left out if the rouines from the library
|
||||
* being used are not cryptographic related :-).
|
||||
* 4. If you include any Windows specific code (or a derivative thereof) from
|
||||
* the apps directory (application code) you must include an acknowledgement:
|
||||
* "This product includes software written by Tim Hudson (tjh@cryptsoft.com)"
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY ERIC YOUNG ``AS IS'' AND
|
||||
* ANY EXPRESS 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 AUTHOR OR 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.
|
||||
*
|
||||
* The licence and distribution terms for any publically available version or
|
||||
* derivative of this code cannot be changed. i.e. this code cannot simply be
|
||||
* copied and put under another distribution licence
|
||||
* [including the GNU Public Licence.]
|
||||
*/
|
||||
|
||||
#include "des_local.h"
|
||||
|
||||
#ifdef CBC_ENC_C__DONT_UPDATE_IV
|
||||
void
|
||||
DES_cbc_encrypt(const unsigned char *in, unsigned char *out, long length,
|
||||
DES_key_schedule *_schedule, DES_cblock *ivec, int enc)
|
||||
#else
|
||||
void
|
||||
DES_ncbc_encrypt(const unsigned char *in, unsigned char *out, long length,
|
||||
DES_key_schedule *_schedule, DES_cblock *ivec, int enc)
|
||||
#endif
|
||||
{
|
||||
DES_LONG tin0, tin1;
|
||||
DES_LONG tout0, tout1, xor0, xor1;
|
||||
long l = length;
|
||||
DES_LONG tin[2];
|
||||
unsigned char *iv;
|
||||
|
||||
iv = &(*ivec)[0];
|
||||
|
||||
if (enc) {
|
||||
c2l(iv, tout0);
|
||||
c2l(iv, tout1);
|
||||
for (l -= 8; l >= 0; l -= 8) {
|
||||
c2l(in, tin0);
|
||||
c2l(in, tin1);
|
||||
tin0 ^= tout0;
|
||||
tin[0] = tin0;
|
||||
tin1 ^= tout1;
|
||||
tin[1] = tin1;
|
||||
DES_encrypt1((DES_LONG *)tin, _schedule, DES_ENCRYPT);
|
||||
tout0 = tin[0];
|
||||
l2c(tout0, out);
|
||||
tout1 = tin[1];
|
||||
l2c(tout1, out);
|
||||
}
|
||||
if (l != -8) {
|
||||
c2ln(in, tin0, tin1, l + 8);
|
||||
tin0 ^= tout0;
|
||||
tin[0] = tin0;
|
||||
tin1 ^= tout1;
|
||||
tin[1] = tin1;
|
||||
DES_encrypt1((DES_LONG *)tin, _schedule, DES_ENCRYPT);
|
||||
tout0 = tin[0];
|
||||
l2c(tout0, out);
|
||||
tout1 = tin[1];
|
||||
l2c(tout1, out);
|
||||
}
|
||||
#ifndef CBC_ENC_C__DONT_UPDATE_IV
|
||||
iv = &(*ivec)[0];
|
||||
l2c(tout0, iv);
|
||||
l2c(tout1, iv);
|
||||
#endif
|
||||
} else {
|
||||
c2l(iv, xor0);
|
||||
c2l(iv, xor1);
|
||||
for (l -= 8; l >= 0; l -= 8) {
|
||||
c2l(in, tin0);
|
||||
tin[0] = tin0;
|
||||
c2l(in, tin1);
|
||||
tin[1] = tin1;
|
||||
DES_encrypt1((DES_LONG *)tin, _schedule, DES_DECRYPT);
|
||||
tout0 = tin[0] ^ xor0;
|
||||
tout1 = tin[1] ^ xor1;
|
||||
l2c(tout0, out);
|
||||
l2c(tout1, out);
|
||||
xor0 = tin0;
|
||||
xor1 = tin1;
|
||||
}
|
||||
if (l != -8) {
|
||||
c2l(in, tin0);
|
||||
tin[0] = tin0;
|
||||
c2l(in, tin1);
|
||||
tin[1] = tin1;
|
||||
DES_encrypt1((DES_LONG *)tin, _schedule, DES_DECRYPT);
|
||||
tout0 = tin[0] ^ xor0;
|
||||
tout1 = tin[1] ^ xor1;
|
||||
l2cn(tout0, tout1, out, l + 8);
|
||||
#ifndef CBC_ENC_C__DONT_UPDATE_IV
|
||||
xor0 = tin0;
|
||||
xor1 = tin1;
|
||||
#endif
|
||||
}
|
||||
#ifndef CBC_ENC_C__DONT_UPDATE_IV
|
||||
iv = &(*ivec)[0];
|
||||
l2c(xor0, iv);
|
||||
l2c(xor1, iv);
|
||||
#endif
|
||||
}
|
||||
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,113 +0,0 @@
|
|||
/* $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.
|
||||
*
|
||||
* This package is an SSL implementation written
|
||||
* by Eric Young (eay@cryptsoft.com).
|
||||
* The implementation was written so as to conform with Netscapes SSL.
|
||||
*
|
||||
* This library is free for commercial and non-commercial use as long as
|
||||
* the following conditions are aheared to. The following conditions
|
||||
* apply to all code found in this distribution, be it the RC4, RSA,
|
||||
* lhash, DES, etc., code; not just the SSL code. The SSL documentation
|
||||
* included with this distribution is covered by the same copyright terms
|
||||
* except that the holder is Tim Hudson (tjh@cryptsoft.com).
|
||||
*
|
||||
* Copyright remains Eric Young's, and as such any Copyright notices in
|
||||
* the code are not to be removed.
|
||||
* If this package is used in a product, Eric Young should be given attribution
|
||||
* as the author of the parts of the library used.
|
||||
* This can be in the form of a textual message at program startup or
|
||||
* in documentation (online or textual) provided with the package.
|
||||
*
|
||||
* 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 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 acknowledgement:
|
||||
* "This product includes cryptographic software written by
|
||||
* Eric Young (eay@cryptsoft.com)"
|
||||
* The word 'cryptographic' can be left out if the rouines from the library
|
||||
* being used are not cryptographic related :-).
|
||||
* 4. If you include any Windows specific code (or a derivative thereof) from
|
||||
* the apps directory (application code) you must include an acknowledgement:
|
||||
* "This product includes software written by Tim Hudson (tjh@cryptsoft.com)"
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY ERIC YOUNG ``AS IS'' AND
|
||||
* ANY EXPRESS 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 AUTHOR OR 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.
|
||||
*
|
||||
* The licence and distribution terms for any publically available version or
|
||||
* derivative of this code cannot be changed. i.e. this code cannot simply be
|
||||
* copied and put under another distribution licence
|
||||
* [including the GNU Public Licence.]
|
||||
*/
|
||||
|
||||
#include "des_local.h"
|
||||
|
||||
/* The input and output encrypted as though 64bit ofb mode is being
|
||||
* used. The extra state information to record how much of the
|
||||
* 64bit block we have used is contained in *num;
|
||||
*/
|
||||
void
|
||||
DES_ede3_ofb64_encrypt(const unsigned char *in,
|
||||
unsigned char *out, long length,
|
||||
DES_key_schedule *k1, DES_key_schedule *k2,
|
||||
DES_key_schedule *k3, DES_cblock *ivec,
|
||||
int *num)
|
||||
{
|
||||
DES_LONG v0, v1;
|
||||
int n = *num;
|
||||
long l = length;
|
||||
DES_cblock d;
|
||||
char *dp;
|
||||
DES_LONG ti[2];
|
||||
unsigned char *iv;
|
||||
int save = 0;
|
||||
|
||||
iv = &(*ivec)[0];
|
||||
c2l(iv, v0);
|
||||
c2l(iv, v1);
|
||||
ti[0] = v0;
|
||||
ti[1] = v1;
|
||||
dp = (char *)d;
|
||||
l2c(v0, dp);
|
||||
l2c(v1, dp);
|
||||
while (l--) {
|
||||
if (n == 0) {
|
||||
/* ti[0]=v0; */
|
||||
/* ti[1]=v1; */
|
||||
DES_encrypt3(ti, k1, k2, k3);
|
||||
v0 = ti[0];
|
||||
v1 = ti[1];
|
||||
|
||||
dp = (char *)d;
|
||||
l2c(v0, dp);
|
||||
l2c(v1, dp);
|
||||
save++;
|
||||
}
|
||||
*(out++) = *(in++) ^ d[n];
|
||||
n = (n + 1) & 0x07;
|
||||
}
|
||||
if (save) {
|
||||
iv = &(*ivec)[0];
|
||||
l2c(v0, iv);
|
||||
l2c(v1, iv);
|
||||
}
|
||||
v0 = v1 = ti[0] = ti[1] = 0;
|
||||
*num = n;
|
||||
}
|
||||
LCRYPTO_ALIAS(DES_ede3_ofb64_encrypt);
|
|
@ -1,110 +0,0 @@
|
|||
/* $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.
|
||||
*
|
||||
* This package is an SSL implementation written
|
||||
* by Eric Young (eay@cryptsoft.com).
|
||||
* The implementation was written so as to conform with Netscapes SSL.
|
||||
*
|
||||
* This library is free for commercial and non-commercial use as long as
|
||||
* the following conditions are aheared to. The following conditions
|
||||
* apply to all code found in this distribution, be it the RC4, RSA,
|
||||
* lhash, DES, etc., code; not just the SSL code. The SSL documentation
|
||||
* included with this distribution is covered by the same copyright terms
|
||||
* except that the holder is Tim Hudson (tjh@cryptsoft.com).
|
||||
*
|
||||
* Copyright remains Eric Young's, and as such any Copyright notices in
|
||||
* the code are not to be removed.
|
||||
* If this package is used in a product, Eric Young should be given attribution
|
||||
* as the author of the parts of the library used.
|
||||
* This can be in the form of a textual message at program startup or
|
||||
* in documentation (online or textual) provided with the package.
|
||||
*
|
||||
* 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 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 acknowledgement:
|
||||
* "This product includes cryptographic software written by
|
||||
* Eric Young (eay@cryptsoft.com)"
|
||||
* The word 'cryptographic' can be left out if the rouines from the library
|
||||
* being used are not cryptographic related :-).
|
||||
* 4. If you include any Windows specific code (or a derivative thereof) from
|
||||
* the apps directory (application code) you must include an acknowledgement:
|
||||
* "This product includes software written by Tim Hudson (tjh@cryptsoft.com)"
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY ERIC YOUNG ``AS IS'' AND
|
||||
* ANY EXPRESS 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 AUTHOR OR 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.
|
||||
*
|
||||
* The licence and distribution terms for any publically available version or
|
||||
* derivative of this code cannot be changed. i.e. this code cannot simply be
|
||||
* copied and put under another distribution licence
|
||||
* [including the GNU Public Licence.]
|
||||
*/
|
||||
|
||||
#include "des_local.h"
|
||||
|
||||
/* The input and output encrypted as though 64bit ofb mode is being
|
||||
* used. The extra state information to record how much of the
|
||||
* 64bit block we have used is contained in *num;
|
||||
*/
|
||||
void
|
||||
DES_ofb64_encrypt(const unsigned char *in,
|
||||
unsigned char *out, long length,
|
||||
DES_key_schedule *schedule, DES_cblock *ivec, int *num)
|
||||
{
|
||||
DES_LONG v0, v1, t;
|
||||
int n = *num;
|
||||
long l = length;
|
||||
DES_cblock d;
|
||||
unsigned char *dp;
|
||||
DES_LONG ti[2];
|
||||
unsigned char *iv;
|
||||
int save = 0;
|
||||
|
||||
iv = &(*ivec)[0];
|
||||
c2l(iv, v0);
|
||||
c2l(iv, v1);
|
||||
ti[0] = v0;
|
||||
ti[1] = v1;
|
||||
dp = d;
|
||||
l2c(v0, dp);
|
||||
l2c(v1, dp);
|
||||
while (l--) {
|
||||
if (n == 0) {
|
||||
DES_encrypt1(ti, schedule, DES_ENCRYPT);
|
||||
dp = d;
|
||||
t = ti[0];
|
||||
l2c(t, dp);
|
||||
t = ti[1];
|
||||
l2c(t, dp);
|
||||
save++;
|
||||
}
|
||||
*(out++) = *(in++) ^ d[n];
|
||||
n = (n + 1) & 0x07;
|
||||
}
|
||||
if (save) {
|
||||
v0 = ti[0];
|
||||
v1 = ti[1];
|
||||
iv = &(*ivec)[0];
|
||||
l2c(v0, iv);
|
||||
l2c(v1, iv);
|
||||
}
|
||||
t = v0 = v1 = ti[0] = ti[1] = 0;
|
||||
*num = n;
|
||||
}
|
||||
LCRYPTO_ALIAS(DES_ofb64_encrypt);
|
|
@ -1,134 +0,0 @@
|
|||
/* $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.
|
||||
*
|
||||
* This package is an SSL implementation written
|
||||
* by Eric Young (eay@cryptsoft.com).
|
||||
* The implementation was written so as to conform with Netscapes SSL.
|
||||
*
|
||||
* This library is free for commercial and non-commercial use as long as
|
||||
* the following conditions are aheared to. The following conditions
|
||||
* apply to all code found in this distribution, be it the RC4, RSA,
|
||||
* lhash, DES, etc., code; not just the SSL code. The SSL documentation
|
||||
* included with this distribution is covered by the same copyright terms
|
||||
* except that the holder is Tim Hudson (tjh@cryptsoft.com).
|
||||
*
|
||||
* Copyright remains Eric Young's, and as such any Copyright notices in
|
||||
* the code are not to be removed.
|
||||
* If this package is used in a product, Eric Young should be given attribution
|
||||
* as the author of the parts of the library used.
|
||||
* This can be in the form of a textual message at program startup or
|
||||
* in documentation (online or textual) provided with the package.
|
||||
*
|
||||
* 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 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 acknowledgement:
|
||||
* "This product includes cryptographic software written by
|
||||
* Eric Young (eay@cryptsoft.com)"
|
||||
* The word 'cryptographic' can be left out if the rouines from the library
|
||||
* being used are not cryptographic related :-).
|
||||
* 4. If you include any Windows specific code (or a derivative thereof) from
|
||||
* the apps directory (application code) you must include an acknowledgement:
|
||||
* "This product includes software written by Tim Hudson (tjh@cryptsoft.com)"
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY ERIC YOUNG ``AS IS'' AND
|
||||
* ANY EXPRESS 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 AUTHOR OR 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.
|
||||
*
|
||||
* The licence and distribution terms for any publically available version or
|
||||
* derivative of this code cannot be changed. i.e. this code cannot simply be
|
||||
* copied and put under another distribution licence
|
||||
* [including the GNU Public Licence.]
|
||||
*/
|
||||
|
||||
#include "des_local.h"
|
||||
|
||||
/* The input and output are loaded in multiples of 8 bits.
|
||||
* What this means is that if you hame numbits=12 and length=2
|
||||
* the first 12 bits will be retrieved from the first byte and half
|
||||
* the second. The second 12 bits will come from the 3rd and half the 4th
|
||||
* byte.
|
||||
*/
|
||||
void
|
||||
DES_ofb_encrypt(const unsigned char *in, unsigned char *out, int numbits,
|
||||
long length, DES_key_schedule *schedule,
|
||||
DES_cblock *ivec)
|
||||
{
|
||||
DES_LONG d0, d1, vv0, vv1, v0, v1, n = (numbits + 7)/8;
|
||||
DES_LONG mask0, mask1;
|
||||
long l = length;
|
||||
int num = numbits;
|
||||
DES_LONG ti[2];
|
||||
unsigned char *iv;
|
||||
|
||||
if (num > 64)
|
||||
return;
|
||||
if (num > 32) {
|
||||
mask0 = 0xffffffffL;
|
||||
if (num >= 64)
|
||||
mask1 = mask0;
|
||||
else
|
||||
mask1 = (1L << (num - 32)) - 1;
|
||||
} else {
|
||||
if (num == 32)
|
||||
mask0 = 0xffffffffL;
|
||||
else
|
||||
mask0 = (1L << num) - 1;
|
||||
mask1 = 0x00000000L;
|
||||
}
|
||||
|
||||
iv = &(*ivec)[0];
|
||||
c2l(iv, v0);
|
||||
c2l(iv, v1);
|
||||
ti[0] = v0;
|
||||
ti[1] = v1;
|
||||
while (l-- > 0) {
|
||||
ti[0] = v0;
|
||||
ti[1] = v1;
|
||||
DES_encrypt1((DES_LONG *)ti, schedule, DES_ENCRYPT);
|
||||
vv0 = ti[0];
|
||||
vv1 = ti[1];
|
||||
c2ln(in, d0, d1, n);
|
||||
in += n;
|
||||
d0 = (d0 ^ vv0) & mask0;
|
||||
d1 = (d1 ^ vv1) & mask1;
|
||||
l2cn(d0, d1, out, n);
|
||||
out += n;
|
||||
|
||||
if (num == 32) {
|
||||
v0 = v1;
|
||||
v1 = vv0;
|
||||
} else if (num == 64) {
|
||||
v0 = vv0;
|
||||
v1 = vv1;
|
||||
} else if (num > 32) { /* && num != 64 */
|
||||
v0 = ((v1 >> (num - 32))|(vv0 << (64 - num))) &
|
||||
0xffffffffL;
|
||||
v1 = ((vv0 >> (num - 32))|(vv1 << (64 - num))) &
|
||||
0xffffffffL;
|
||||
} else /* num < 32 */ {
|
||||
v0 = ((v0 >> num)|(v1 << (32 - num))) & 0xffffffffL;
|
||||
v1 = ((v1 >> num)|(vv0 << (32 - num))) & 0xffffffffL;
|
||||
}
|
||||
}
|
||||
iv = &(*ivec)[0];
|
||||
l2c(v0, iv);
|
||||
l2c(v1, iv);
|
||||
v0 = v1 = d0 = d1 = ti[0] = ti[1] = vv0 = vv1 = 0;
|
||||
}
|
||||
LCRYPTO_ALIAS(DES_ofb_encrypt);
|
|
@ -1,117 +0,0 @@
|
|||
/* $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.
|
||||
*
|
||||
* This package is an SSL implementation written
|
||||
* by Eric Young (eay@cryptsoft.com).
|
||||
* The implementation was written so as to conform with Netscapes SSL.
|
||||
*
|
||||
* This library is free for commercial and non-commercial use as long as
|
||||
* the following conditions are aheared to. The following conditions
|
||||
* apply to all code found in this distribution, be it the RC4, RSA,
|
||||
* lhash, DES, etc., code; not just the SSL code. The SSL documentation
|
||||
* included with this distribution is covered by the same copyright terms
|
||||
* except that the holder is Tim Hudson (tjh@cryptsoft.com).
|
||||
*
|
||||
* Copyright remains Eric Young's, and as such any Copyright notices in
|
||||
* the code are not to be removed.
|
||||
* If this package is used in a product, Eric Young should be given attribution
|
||||
* as the author of the parts of the library used.
|
||||
* This can be in the form of a textual message at program startup or
|
||||
* in documentation (online or textual) provided with the package.
|
||||
*
|
||||
* 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 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 acknowledgement:
|
||||
* "This product includes cryptographic software written by
|
||||
* Eric Young (eay@cryptsoft.com)"
|
||||
* The word 'cryptographic' can be left out if the rouines from the library
|
||||
* being used are not cryptographic related :-).
|
||||
* 4. If you include any Windows specific code (or a derivative thereof) from
|
||||
* the apps directory (application code) you must include an acknowledgement:
|
||||
* "This product includes software written by Tim Hudson (tjh@cryptsoft.com)"
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY ERIC YOUNG ``AS IS'' AND
|
||||
* ANY EXPRESS 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 AUTHOR OR 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.
|
||||
*
|
||||
* The licence and distribution terms for any publically available version or
|
||||
* derivative of this code cannot be changed. i.e. this code cannot simply be
|
||||
* copied and put under another distribution licence
|
||||
* [including the GNU Public Licence.]
|
||||
*/
|
||||
|
||||
#include "des_local.h"
|
||||
|
||||
void
|
||||
DES_pcbc_encrypt(const unsigned char *input, unsigned char *output,
|
||||
long length, DES_key_schedule *schedule,
|
||||
DES_cblock *ivec, int enc)
|
||||
{
|
||||
DES_LONG sin0, sin1, xor0, xor1, tout0, tout1;
|
||||
DES_LONG tin[2];
|
||||
const unsigned char *in;
|
||||
unsigned char *out, *iv;
|
||||
|
||||
in = input;
|
||||
out = output;
|
||||
iv = &(*ivec)[0];
|
||||
|
||||
if (enc) {
|
||||
c2l(iv, xor0);
|
||||
c2l(iv, xor1);
|
||||
for (; length > 0; length -= 8) {
|
||||
if (length >= 8) {
|
||||
c2l(in, sin0);
|
||||
c2l(in, sin1);
|
||||
} else
|
||||
c2ln(in, sin0, sin1, length);
|
||||
tin[0] = sin0 ^ xor0;
|
||||
tin[1] = sin1 ^ xor1;
|
||||
DES_encrypt1((DES_LONG *)tin, schedule, DES_ENCRYPT);
|
||||
tout0 = tin[0];
|
||||
tout1 = tin[1];
|
||||
xor0 = sin0 ^ tout0;
|
||||
xor1 = sin1 ^ tout1;
|
||||
l2c(tout0, out);
|
||||
l2c(tout1, out);
|
||||
}
|
||||
} else {
|
||||
c2l(iv, xor0);
|
||||
c2l(iv, xor1);
|
||||
for (; length > 0; length -= 8) {
|
||||
c2l(in, sin0);
|
||||
c2l(in, sin1);
|
||||
tin[0] = sin0;
|
||||
tin[1] = sin1;
|
||||
DES_encrypt1((DES_LONG *)tin, schedule, DES_DECRYPT);
|
||||
tout0 = tin[0] ^ xor0;
|
||||
tout1 = tin[1] ^ xor1;
|
||||
if (length >= 8) {
|
||||
l2c(tout0, out);
|
||||
l2c(tout1, out);
|
||||
} else
|
||||
l2cn(tout0, tout1, out, length);
|
||||
xor0 = tout0 ^ sin0;
|
||||
xor1 = tout1 ^ sin1;
|
||||
}
|
||||
}
|
||||
tin[0] = tin[1] = 0;
|
||||
sin0 = sin1 = xor0 = xor1 = tout0 = tout1 = 0;
|
||||
}
|
||||
LCRYPTO_ALIAS(DES_pcbc_encrypt);
|
|
@ -1,209 +0,0 @@
|
|||
/* $OpenBSD: spr.h,v 1.8 2023/07/08 07:34:34 jsing Exp $ */
|
||||
/* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com)
|
||||
* All rights reserved.
|
||||
*
|
||||
* This package is an SSL implementation written
|
||||
* by Eric Young (eay@cryptsoft.com).
|
||||
* The implementation was written so as to conform with Netscapes SSL.
|
||||
*
|
||||
* This library is free for commercial and non-commercial use as long as
|
||||
* the following conditions are aheared to. The following conditions
|
||||
* apply to all code found in this distribution, be it the RC4, RSA,
|
||||
* lhash, DES, etc., code; not just the SSL code. The SSL documentation
|
||||
* included with this distribution is covered by the same copyright terms
|
||||
* except that the holder is Tim Hudson (tjh@cryptsoft.com).
|
||||
*
|
||||
* Copyright remains Eric Young's, and as such any Copyright notices in
|
||||
* the code are not to be removed.
|
||||
* If this package is used in a product, Eric Young should be given attribution
|
||||
* as the author of the parts of the library used.
|
||||
* This can be in the form of a textual message at program startup or
|
||||
* in documentation (online or textual) provided with the package.
|
||||
*
|
||||
* 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 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 acknowledgement:
|
||||
* "This product includes cryptographic software written by
|
||||
* Eric Young (eay@cryptsoft.com)"
|
||||
* The word 'cryptographic' can be left out if the rouines from the library
|
||||
* being used are not cryptographic related :-).
|
||||
* 4. If you include any Windows specific code (or a derivative thereof) from
|
||||
* the apps directory (application code) you must include an acknowledgement:
|
||||
* "This product includes software written by Tim Hudson (tjh@cryptsoft.com)"
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY ERIC YOUNG ``AS IS'' AND
|
||||
* ANY EXPRESS 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 AUTHOR OR 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.
|
||||
*
|
||||
* The licence and distribution terms for any publically available version or
|
||||
* derivative of this code cannot be changed. i.e. this code cannot simply be
|
||||
* copied and put under another distribution licence
|
||||
* [including the GNU Public Licence.]
|
||||
*/
|
||||
|
||||
__BEGIN_HIDDEN_DECLS
|
||||
|
||||
const DES_LONG DES_SPtrans[8][64] = {
|
||||
{
|
||||
/* nibble 0 */
|
||||
0x02080800L, 0x00080000L, 0x02000002L, 0x02080802L,
|
||||
0x02000000L, 0x00080802L, 0x00080002L, 0x02000002L,
|
||||
0x00080802L, 0x02080800L, 0x02080000L, 0x00000802L,
|
||||
0x02000802L, 0x02000000L, 0x00000000L, 0x00080002L,
|
||||
0x00080000L, 0x00000002L, 0x02000800L, 0x00080800L,
|
||||
0x02080802L, 0x02080000L, 0x00000802L, 0x02000800L,
|
||||
0x00000002L, 0x00000800L, 0x00080800L, 0x02080002L,
|
||||
0x00000800L, 0x02000802L, 0x02080002L, 0x00000000L,
|
||||
0x00000000L, 0x02080802L, 0x02000800L, 0x00080002L,
|
||||
0x02080800L, 0x00080000L, 0x00000802L, 0x02000800L,
|
||||
0x02080002L, 0x00000800L, 0x00080800L, 0x02000002L,
|
||||
0x00080802L, 0x00000002L, 0x02000002L, 0x02080000L,
|
||||
0x02080802L, 0x00080800L, 0x02080000L, 0x02000802L,
|
||||
0x02000000L, 0x00000802L, 0x00080002L, 0x00000000L,
|
||||
0x00080000L, 0x02000000L, 0x02000802L, 0x02080800L,
|
||||
0x00000002L, 0x02080002L, 0x00000800L, 0x00080802L,
|
||||
}, {
|
||||
/* nibble 1 */
|
||||
0x40108010L, 0x00000000L, 0x00108000L, 0x40100000L,
|
||||
0x40000010L, 0x00008010L, 0x40008000L, 0x00108000L,
|
||||
0x00008000L, 0x40100010L, 0x00000010L, 0x40008000L,
|
||||
0x00100010L, 0x40108000L, 0x40100000L, 0x00000010L,
|
||||
0x00100000L, 0x40008010L, 0x40100010L, 0x00008000L,
|
||||
0x00108010L, 0x40000000L, 0x00000000L, 0x00100010L,
|
||||
0x40008010L, 0x00108010L, 0x40108000L, 0x40000010L,
|
||||
0x40000000L, 0x00100000L, 0x00008010L, 0x40108010L,
|
||||
0x00100010L, 0x40108000L, 0x40008000L, 0x00108010L,
|
||||
0x40108010L, 0x00100010L, 0x40000010L, 0x00000000L,
|
||||
0x40000000L, 0x00008010L, 0x00100000L, 0x40100010L,
|
||||
0x00008000L, 0x40000000L, 0x00108010L, 0x40008010L,
|
||||
0x40108000L, 0x00008000L, 0x00000000L, 0x40000010L,
|
||||
0x00000010L, 0x40108010L, 0x00108000L, 0x40100000L,
|
||||
0x40100010L, 0x00100000L, 0x00008010L, 0x40008000L,
|
||||
0x40008010L, 0x00000010L, 0x40100000L, 0x00108000L,
|
||||
}, {
|
||||
/* nibble 2 */
|
||||
0x04000001L, 0x04040100L, 0x00000100L, 0x04000101L,
|
||||
0x00040001L, 0x04000000L, 0x04000101L, 0x00040100L,
|
||||
0x04000100L, 0x00040000L, 0x04040000L, 0x00000001L,
|
||||
0x04040101L, 0x00000101L, 0x00000001L, 0x04040001L,
|
||||
0x00000000L, 0x00040001L, 0x04040100L, 0x00000100L,
|
||||
0x00000101L, 0x04040101L, 0x00040000L, 0x04000001L,
|
||||
0x04040001L, 0x04000100L, 0x00040101L, 0x04040000L,
|
||||
0x00040100L, 0x00000000L, 0x04000000L, 0x00040101L,
|
||||
0x04040100L, 0x00000100L, 0x00000001L, 0x00040000L,
|
||||
0x00000101L, 0x00040001L, 0x04040000L, 0x04000101L,
|
||||
0x00000000L, 0x04040100L, 0x00040100L, 0x04040001L,
|
||||
0x00040001L, 0x04000000L, 0x04040101L, 0x00000001L,
|
||||
0x00040101L, 0x04000001L, 0x04000000L, 0x04040101L,
|
||||
0x00040000L, 0x04000100L, 0x04000101L, 0x00040100L,
|
||||
0x04000100L, 0x00000000L, 0x04040001L, 0x00000101L,
|
||||
0x04000001L, 0x00040101L, 0x00000100L, 0x04040000L,
|
||||
}, {
|
||||
/* nibble 3 */
|
||||
0x00401008L, 0x10001000L, 0x00000008L, 0x10401008L,
|
||||
0x00000000L, 0x10400000L, 0x10001008L, 0x00400008L,
|
||||
0x10401000L, 0x10000008L, 0x10000000L, 0x00001008L,
|
||||
0x10000008L, 0x00401008L, 0x00400000L, 0x10000000L,
|
||||
0x10400008L, 0x00401000L, 0x00001000L, 0x00000008L,
|
||||
0x00401000L, 0x10001008L, 0x10400000L, 0x00001000L,
|
||||
0x00001008L, 0x00000000L, 0x00400008L, 0x10401000L,
|
||||
0x10001000L, 0x10400008L, 0x10401008L, 0x00400000L,
|
||||
0x10400008L, 0x00001008L, 0x00400000L, 0x10000008L,
|
||||
0x00401000L, 0x10001000L, 0x00000008L, 0x10400000L,
|
||||
0x10001008L, 0x00000000L, 0x00001000L, 0x00400008L,
|
||||
0x00000000L, 0x10400008L, 0x10401000L, 0x00001000L,
|
||||
0x10000000L, 0x10401008L, 0x00401008L, 0x00400000L,
|
||||
0x10401008L, 0x00000008L, 0x10001000L, 0x00401008L,
|
||||
0x00400008L, 0x00401000L, 0x10400000L, 0x10001008L,
|
||||
0x00001008L, 0x10000000L, 0x10000008L, 0x10401000L,
|
||||
}, {
|
||||
/* nibble 4 */
|
||||
0x08000000L, 0x00010000L, 0x00000400L, 0x08010420L,
|
||||
0x08010020L, 0x08000400L, 0x00010420L, 0x08010000L,
|
||||
0x00010000L, 0x00000020L, 0x08000020L, 0x00010400L,
|
||||
0x08000420L, 0x08010020L, 0x08010400L, 0x00000000L,
|
||||
0x00010400L, 0x08000000L, 0x00010020L, 0x00000420L,
|
||||
0x08000400L, 0x00010420L, 0x00000000L, 0x08000020L,
|
||||
0x00000020L, 0x08000420L, 0x08010420L, 0x00010020L,
|
||||
0x08010000L, 0x00000400L, 0x00000420L, 0x08010400L,
|
||||
0x08010400L, 0x08000420L, 0x00010020L, 0x08010000L,
|
||||
0x00010000L, 0x00000020L, 0x08000020L, 0x08000400L,
|
||||
0x08000000L, 0x00010400L, 0x08010420L, 0x00000000L,
|
||||
0x00010420L, 0x08000000L, 0x00000400L, 0x00010020L,
|
||||
0x08000420L, 0x00000400L, 0x00000000L, 0x08010420L,
|
||||
0x08010020L, 0x08010400L, 0x00000420L, 0x00010000L,
|
||||
0x00010400L, 0x08010020L, 0x08000400L, 0x00000420L,
|
||||
0x00000020L, 0x00010420L, 0x08010000L, 0x08000020L,
|
||||
}, {
|
||||
/* nibble 5 */
|
||||
0x80000040L, 0x00200040L, 0x00000000L, 0x80202000L,
|
||||
0x00200040L, 0x00002000L, 0x80002040L, 0x00200000L,
|
||||
0x00002040L, 0x80202040L, 0x00202000L, 0x80000000L,
|
||||
0x80002000L, 0x80000040L, 0x80200000L, 0x00202040L,
|
||||
0x00200000L, 0x80002040L, 0x80200040L, 0x00000000L,
|
||||
0x00002000L, 0x00000040L, 0x80202000L, 0x80200040L,
|
||||
0x80202040L, 0x80200000L, 0x80000000L, 0x00002040L,
|
||||
0x00000040L, 0x00202000L, 0x00202040L, 0x80002000L,
|
||||
0x00002040L, 0x80000000L, 0x80002000L, 0x00202040L,
|
||||
0x80202000L, 0x00200040L, 0x00000000L, 0x80002000L,
|
||||
0x80000000L, 0x00002000L, 0x80200040L, 0x00200000L,
|
||||
0x00200040L, 0x80202040L, 0x00202000L, 0x00000040L,
|
||||
0x80202040L, 0x00202000L, 0x00200000L, 0x80002040L,
|
||||
0x80000040L, 0x80200000L, 0x00202040L, 0x00000000L,
|
||||
0x00002000L, 0x80000040L, 0x80002040L, 0x80202000L,
|
||||
0x80200000L, 0x00002040L, 0x00000040L, 0x80200040L,
|
||||
}, {
|
||||
/* nibble 6 */
|
||||
0x00004000L, 0x00000200L, 0x01000200L, 0x01000004L,
|
||||
0x01004204L, 0x00004004L, 0x00004200L, 0x00000000L,
|
||||
0x01000000L, 0x01000204L, 0x00000204L, 0x01004000L,
|
||||
0x00000004L, 0x01004200L, 0x01004000L, 0x00000204L,
|
||||
0x01000204L, 0x00004000L, 0x00004004L, 0x01004204L,
|
||||
0x00000000L, 0x01000200L, 0x01000004L, 0x00004200L,
|
||||
0x01004004L, 0x00004204L, 0x01004200L, 0x00000004L,
|
||||
0x00004204L, 0x01004004L, 0x00000200L, 0x01000000L,
|
||||
0x00004204L, 0x01004000L, 0x01004004L, 0x00000204L,
|
||||
0x00004000L, 0x00000200L, 0x01000000L, 0x01004004L,
|
||||
0x01000204L, 0x00004204L, 0x00004200L, 0x00000000L,
|
||||
0x00000200L, 0x01000004L, 0x00000004L, 0x01000200L,
|
||||
0x00000000L, 0x01000204L, 0x01000200L, 0x00004200L,
|
||||
0x00000204L, 0x00004000L, 0x01004204L, 0x01000000L,
|
||||
0x01004200L, 0x00000004L, 0x00004004L, 0x01004204L,
|
||||
0x01000004L, 0x01004200L, 0x01004000L, 0x00004004L,
|
||||
}, {
|
||||
/* nibble 7 */
|
||||
0x20800080L, 0x20820000L, 0x00020080L, 0x00000000L,
|
||||
0x20020000L, 0x00800080L, 0x20800000L, 0x20820080L,
|
||||
0x00000080L, 0x20000000L, 0x00820000L, 0x00020080L,
|
||||
0x00820080L, 0x20020080L, 0x20000080L, 0x20800000L,
|
||||
0x00020000L, 0x00820080L, 0x00800080L, 0x20020000L,
|
||||
0x20820080L, 0x20000080L, 0x00000000L, 0x00820000L,
|
||||
0x20000000L, 0x00800000L, 0x20020080L, 0x20800080L,
|
||||
0x00800000L, 0x00020000L, 0x20820000L, 0x00000080L,
|
||||
0x00800000L, 0x00020000L, 0x20000080L, 0x20820080L,
|
||||
0x00020080L, 0x20000000L, 0x00000000L, 0x00820000L,
|
||||
0x20800080L, 0x20020080L, 0x20020000L, 0x00800080L,
|
||||
0x20820000L, 0x00000080L, 0x00800080L, 0x20020000L,
|
||||
0x20820080L, 0x00800000L, 0x20800000L, 0x20000080L,
|
||||
0x00820000L, 0x00020080L, 0x20020080L, 0x20800000L,
|
||||
0x00000080L, 0x20820000L, 0x00820080L, 0x00000000L,
|
||||
0x20000000L, 0x20800080L, 0x00020000L, 0x00820080L,
|
||||
},
|
||||
};
|
||||
|
||||
__END_HIDDEN_DECLS
|
|
@ -1,168 +0,0 @@
|
|||
/* $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.
|
||||
*
|
||||
* This package is an SSL implementation written
|
||||
* by Eric Young (eay@cryptsoft.com).
|
||||
* The implementation was written so as to conform with Netscapes SSL.
|
||||
*
|
||||
* This library is free for commercial and non-commercial use as long as
|
||||
* the following conditions are aheared to. The following conditions
|
||||
* apply to all code found in this distribution, be it the RC4, RSA,
|
||||
* lhash, DES, etc., code; not just the SSL code. The SSL documentation
|
||||
* included with this distribution is covered by the same copyright terms
|
||||
* except that the holder is Tim Hudson (tjh@cryptsoft.com).
|
||||
*
|
||||
* Copyright remains Eric Young's, and as such any Copyright notices in
|
||||
* the code are not to be removed.
|
||||
* If this package is used in a product, Eric Young should be given attribution
|
||||
* as the author of the parts of the library used.
|
||||
* This can be in the form of a textual message at program startup or
|
||||
* in documentation (online or textual) provided with the package.
|
||||
*
|
||||
* 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 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 acknowledgement:
|
||||
* "This product includes cryptographic software written by
|
||||
* Eric Young (eay@cryptsoft.com)"
|
||||
* The word 'cryptographic' can be left out if the rouines from the library
|
||||
* being used are not cryptographic related :-).
|
||||
* 4. If you include any Windows specific code (or a derivative thereof) from
|
||||
* the apps directory (application code) you must include an acknowledgement:
|
||||
* "This product includes software written by Tim Hudson (tjh@cryptsoft.com)"
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY ERIC YOUNG ``AS IS'' AND
|
||||
* ANY EXPRESS 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 AUTHOR OR 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.
|
||||
*
|
||||
* The licence and distribution terms for any publically available version or
|
||||
* derivative of this code cannot be changed. i.e. this code cannot simply be
|
||||
* copied and put under another distribution licence
|
||||
* [including the GNU Public Licence.]
|
||||
*/
|
||||
|
||||
#include <openssl/crypto.h>
|
||||
#include "des_local.h"
|
||||
|
||||
void
|
||||
DES_string_to_key(const char *str, DES_cblock *key)
|
||||
{
|
||||
DES_key_schedule ks;
|
||||
int i, length;
|
||||
unsigned char j;
|
||||
|
||||
memset(key, 0, 8);
|
||||
length = strlen(str);
|
||||
#ifdef OLD_STR_TO_KEY
|
||||
for (i = 0; i < length; i++)
|
||||
(*key)[i % 8] ^= (str[i] << 1);
|
||||
#else /* MIT COMPATIBLE */
|
||||
for (i = 0; i < length; i++) {
|
||||
j = str[i];
|
||||
if ((i % 16) < 8)
|
||||
(*key)[i % 8] ^= (j << 1);
|
||||
else {
|
||||
/* Reverse the bit order 05/05/92 eay */
|
||||
j = ((j << 4) & 0xf0)|((j >> 4) & 0x0f);
|
||||
j = ((j << 2) & 0xcc)|((j >> 2) & 0x33);
|
||||
j = ((j << 1) & 0xaa)|((j >> 1) & 0x55);
|
||||
(*key)[7 - (i % 8)] ^= j;
|
||||
}
|
||||
}
|
||||
#endif
|
||||
DES_set_odd_parity(key);
|
||||
#ifdef EXPERIMENTAL_STR_TO_STRONG_KEY
|
||||
if (DES_is_weak_key(key))
|
||||
(*key)[7] ^= 0xF0;
|
||||
DES_set_key(key, &ks);
|
||||
#else
|
||||
DES_set_key_unchecked(key, &ks);
|
||||
#endif
|
||||
DES_cbc_cksum((const unsigned char *)str, key, length, &ks, 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)
|
||||
{
|
||||
DES_key_schedule ks;
|
||||
int i, length;
|
||||
unsigned char j;
|
||||
|
||||
memset(key1, 0, 8);
|
||||
memset(key2, 0, 8);
|
||||
length = strlen(str);
|
||||
#ifdef OLD_STR_TO_KEY
|
||||
if (length <= 8) {
|
||||
for (i = 0; i < length; i++) {
|
||||
(*key2)[i] = (*key1)[i] = (str[i] << 1);
|
||||
}
|
||||
} else {
|
||||
for (i = 0; i < length; i++) {
|
||||
if ((i/8) & 1)
|
||||
(*key2)[i % 8] ^= (str[i] << 1);
|
||||
else
|
||||
(*key1)[i % 8] ^= (str[i] << 1);
|
||||
}
|
||||
}
|
||||
#else /* MIT COMPATIBLE */
|
||||
for (i = 0; i < length; i++) {
|
||||
j = str[i];
|
||||
if ((i % 32) < 16) {
|
||||
if ((i % 16) < 8)
|
||||
(*key1)[i % 8] ^= (j << 1);
|
||||
else
|
||||
(*key2)[i % 8] ^= (j << 1);
|
||||
} else {
|
||||
j = ((j << 4) & 0xf0)|((j >> 4) & 0x0f);
|
||||
j = ((j << 2) & 0xcc)|((j >> 2) & 0x33);
|
||||
j = ((j << 1) & 0xaa)|((j >> 1) & 0x55);
|
||||
if ((i % 16) < 8)
|
||||
(*key1)[7 - (i % 8)] ^= j;
|
||||
else
|
||||
(*key2)[7 - (i % 8)] ^= j;
|
||||
}
|
||||
}
|
||||
if (length <= 8)
|
||||
memcpy(key2, key1, 8);
|
||||
#endif
|
||||
DES_set_odd_parity(key1);
|
||||
DES_set_odd_parity(key2);
|
||||
#ifdef EXPERIMENTAL_STR_TO_STRONG_KEY
|
||||
if (DES_is_weak_key(key1))
|
||||
(*key1)[7] ^= 0xF0;
|
||||
DES_set_key(key1, &ks);
|
||||
#else
|
||||
DES_set_key_unchecked(key1, &ks);
|
||||
#endif
|
||||
DES_cbc_cksum((const unsigned char *)str, key1, length, &ks, key1);
|
||||
#ifdef EXPERIMENTAL_STR_TO_STRONG_KEY
|
||||
if (DES_is_weak_key(key2))
|
||||
(*key2)[7] ^= 0xF0;
|
||||
DES_set_key(key2, &ks);
|
||||
#else
|
||||
DES_set_key_unchecked(key2, &ks);
|
||||
#endif
|
||||
DES_cbc_cksum((const unsigned char *)str, key2, length, &ks, key2);
|
||||
explicit_bzero(&ks, sizeof(ks));
|
||||
DES_set_odd_parity(key1);
|
||||
DES_set_odd_parity(key2);
|
||||
}
|
||||
LCRYPTO_ALIAS(DES_string_to_2keys);
|
|
@ -1,154 +0,0 @@
|
|||
/* $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.
|
||||
*
|
||||
* This package is an SSL implementation written
|
||||
* by Eric Young (eay@cryptsoft.com).
|
||||
* The implementation was written so as to conform with Netscapes SSL.
|
||||
*
|
||||
* This library is free for commercial and non-commercial use as long as
|
||||
* the following conditions are aheared to. The following conditions
|
||||
* apply to all code found in this distribution, be it the RC4, RSA,
|
||||
* lhash, DES, etc., code; not just the SSL code. The SSL documentation
|
||||
* included with this distribution is covered by the same copyright terms
|
||||
* except that the holder is Tim Hudson (tjh@cryptsoft.com).
|
||||
*
|
||||
* Copyright remains Eric Young's, and as such any Copyright notices in
|
||||
* the code are not to be removed.
|
||||
* If this package is used in a product, Eric Young should be given attribution
|
||||
* as the author of the parts of the library used.
|
||||
* This can be in the form of a textual message at program startup or
|
||||
* in documentation (online or textual) provided with the package.
|
||||
*
|
||||
* 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 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 acknowledgement:
|
||||
* "This product includes cryptographic software written by
|
||||
* Eric Young (eay@cryptsoft.com)"
|
||||
* The word 'cryptographic' can be left out if the rouines from the library
|
||||
* being used are not cryptographic related :-).
|
||||
* 4. If you include any Windows specific code (or a derivative thereof) from
|
||||
* the apps directory (application code) you must include an acknowledgement:
|
||||
* "This product includes software written by Tim Hudson (tjh@cryptsoft.com)"
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY ERIC YOUNG ``AS IS'' AND
|
||||
* ANY EXPRESS 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 AUTHOR OR 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.
|
||||
*
|
||||
* The licence and distribution terms for any publically available version or
|
||||
* derivative of this code cannot be changed. i.e. this code cannot simply be
|
||||
* copied and put under another distribution licence
|
||||
* [including the GNU Public Licence.]
|
||||
*/
|
||||
|
||||
#include "des_local.h"
|
||||
|
||||
/* RSA's DESX */
|
||||
|
||||
void
|
||||
DES_xcbc_encrypt(const unsigned char *in, unsigned char *out,
|
||||
long length, DES_key_schedule *schedule,
|
||||
DES_cblock *ivec, const_DES_cblock *inw,
|
||||
const_DES_cblock *outw, int enc)
|
||||
{
|
||||
DES_LONG tin0, tin1;
|
||||
DES_LONG tout0, tout1, xor0, xor1;
|
||||
DES_LONG inW0, inW1, outW0, outW1;
|
||||
const unsigned char *in2;
|
||||
long l = length;
|
||||
DES_LONG tin[2];
|
||||
unsigned char *iv;
|
||||
|
||||
in2 = &(*inw)[0];
|
||||
c2l(in2, inW0);
|
||||
c2l(in2, inW1);
|
||||
in2 = &(*outw)[0];
|
||||
c2l(in2, outW0);
|
||||
c2l(in2, outW1);
|
||||
|
||||
iv = &(*ivec)[0];
|
||||
|
||||
if (enc) {
|
||||
c2l(iv, tout0);
|
||||
c2l(iv, tout1);
|
||||
for (l -= 8; l >= 0; l -= 8) {
|
||||
c2l(in, tin0);
|
||||
c2l(in, tin1);
|
||||
tin0 ^= tout0 ^ inW0;
|
||||
tin[0] = tin0;
|
||||
tin1 ^= tout1 ^ inW1;
|
||||
tin[1] = tin1;
|
||||
DES_encrypt1(tin, schedule, DES_ENCRYPT);
|
||||
tout0 = tin[0] ^ outW0;
|
||||
l2c(tout0, out);
|
||||
tout1 = tin[1] ^ outW1;
|
||||
l2c(tout1, out);
|
||||
}
|
||||
if (l != -8) {
|
||||
c2ln(in, tin0, tin1, l + 8);
|
||||
tin0 ^= tout0 ^ inW0;
|
||||
tin[0] = tin0;
|
||||
tin1 ^= tout1 ^ inW1;
|
||||
tin[1] = tin1;
|
||||
DES_encrypt1(tin, schedule, DES_ENCRYPT);
|
||||
tout0 = tin[0] ^ outW0;
|
||||
l2c(tout0, out);
|
||||
tout1 = tin[1] ^ outW1;
|
||||
l2c(tout1, out);
|
||||
}
|
||||
iv = &(*ivec)[0];
|
||||
l2c(tout0, iv);
|
||||
l2c(tout1, iv);
|
||||
} else {
|
||||
c2l(iv, xor0);
|
||||
c2l(iv, xor1);
|
||||
for (l -= 8; l > 0; l -= 8) {
|
||||
c2l(in, tin0);
|
||||
tin[0] = tin0 ^ outW0;
|
||||
c2l(in, tin1);
|
||||
tin[1] = tin1 ^ outW1;
|
||||
DES_encrypt1(tin, schedule, DES_DECRYPT);
|
||||
tout0 = tin[0] ^ xor0 ^ inW0;
|
||||
tout1 = tin[1] ^ xor1 ^ inW1;
|
||||
l2c(tout0, out);
|
||||
l2c(tout1, out);
|
||||
xor0 = tin0;
|
||||
xor1 = tin1;
|
||||
}
|
||||
if (l != -8) {
|
||||
c2l(in, tin0);
|
||||
tin[0] = tin0 ^ outW0;
|
||||
c2l(in, tin1);
|
||||
tin[1] = tin1 ^ outW1;
|
||||
DES_encrypt1(tin, schedule, DES_DECRYPT);
|
||||
tout0 = tin[0] ^ xor0 ^ inW0;
|
||||
tout1 = tin[1] ^ xor1 ^ inW1;
|
||||
l2cn(tout0, tout1, out, l + 8);
|
||||
xor0 = tin0;
|
||||
xor1 = tin1;
|
||||
}
|
||||
|
||||
iv = &(*ivec)[0];
|
||||
l2c(xor0, iv);
|
||||
l2c(xor1, iv);
|
||||
}
|
||||
tin0 = tin1 = tout0 = tout1 = xor0 = xor1 = 0;
|
||||
inW0 = inW1 = outW0 = outW1 = 0;
|
||||
tin[0] = tin[1] = 0;
|
||||
}
|
||||
LCRYPTO_ALIAS(DES_xcbc_encrypt);
|
|
@ -1,4 +1,4 @@
|
|||
/* $OpenBSD: err.c,v 1.62 2024/07/09 07:17:13 beck Exp $ */
|
||||
/* $OpenBSD: err.c,v 1.63 2024/08/31 10:09:15 tb Exp $ */
|
||||
/* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com)
|
||||
* All rights reserved.
|
||||
*
|
||||
|
@ -1130,37 +1130,6 @@ ERR_asprintf_error_data(char * format, ...)
|
|||
}
|
||||
LCRYPTO_ALIAS(ERR_asprintf_error_data);
|
||||
|
||||
void
|
||||
ERR_add_error_vdata(int num, va_list args)
|
||||
{
|
||||
char format[129];
|
||||
char *errbuf;
|
||||
int i;
|
||||
|
||||
format[0] = '\0';
|
||||
for (i = 0; i < num; i++) {
|
||||
if (strlcat(format, "%s", sizeof(format)) >= sizeof(format)) {
|
||||
ERR_set_error_data("too many errors", ERR_TXT_STRING);
|
||||
return;
|
||||
}
|
||||
}
|
||||
if (vasprintf(&errbuf, format, args) == -1)
|
||||
ERR_set_error_data("malloc failed", ERR_TXT_STRING);
|
||||
else
|
||||
ERR_set_error_data(errbuf, ERR_TXT_MALLOCED|ERR_TXT_STRING);
|
||||
}
|
||||
LCRYPTO_ALIAS(ERR_add_error_vdata);
|
||||
|
||||
void
|
||||
ERR_add_error_data(int num, ...)
|
||||
{
|
||||
va_list args;
|
||||
va_start(args, num);
|
||||
ERR_add_error_vdata(num, args);
|
||||
va_end(args);
|
||||
}
|
||||
LCRYPTO_ALIAS(ERR_add_error_data);
|
||||
|
||||
int
|
||||
ERR_set_mark(void)
|
||||
{
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
/* $OpenBSD: err.h,v 1.34 2024/07/09 07:17:13 beck Exp $ */
|
||||
/* $OpenBSD: err.h,v 1.35 2024/08/31 10:09:15 tb Exp $ */
|
||||
/* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com)
|
||||
* All rights reserved.
|
||||
*
|
||||
|
@ -374,8 +374,6 @@ void ERR_print_errors_fp(FILE *fp);
|
|||
void ERR_print_errors(BIO *bp);
|
||||
#endif
|
||||
void ERR_asprintf_error_data(char * format, ...);
|
||||
void ERR_add_error_data(int num, ...);
|
||||
void ERR_add_error_vdata(int num, va_list args);
|
||||
void ERR_load_strings(int lib, ERR_STRING_DATA *str);
|
||||
void ERR_unload_strings(int lib, ERR_STRING_DATA *str);
|
||||
void ERR_load_ERR_strings(void);
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
/* $OpenBSD: evp.h,v 1.135 2024/07/09 16:15:37 tb Exp $ */
|
||||
/* $OpenBSD: evp.h,v 1.137 2024/08/31 10:38:49 tb Exp $ */
|
||||
/* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com)
|
||||
* All rights reserved.
|
||||
*
|
||||
|
@ -595,9 +595,6 @@ const EVP_MD *EVP_sm3(void);
|
|||
#ifndef OPENSSL_NO_RIPEMD
|
||||
const EVP_MD *EVP_ripemd160(void);
|
||||
#endif
|
||||
#ifndef OPENSSL_NO_WHIRLPOOL
|
||||
const EVP_MD *EVP_whirlpool(void);
|
||||
#endif
|
||||
const EVP_CIPHER *EVP_enc_null(void); /* does nothing :-) */
|
||||
#ifndef OPENSSL_NO_DES
|
||||
const EVP_CIPHER *EVP_des_ecb(void);
|
||||
|
@ -985,9 +982,6 @@ int EVP_PKEY_paramgen_init(EVP_PKEY_CTX *ctx);
|
|||
int EVP_PKEY_paramgen(EVP_PKEY_CTX *ctx, EVP_PKEY **ppkey);
|
||||
int EVP_PKEY_keygen_init(EVP_PKEY_CTX *ctx);
|
||||
int EVP_PKEY_keygen(EVP_PKEY_CTX *ctx, EVP_PKEY **ppkey);
|
||||
int EVP_PKEY_check(EVP_PKEY_CTX *ctx);
|
||||
int EVP_PKEY_public_check(EVP_PKEY_CTX *ctx);
|
||||
int EVP_PKEY_param_check(EVP_PKEY_CTX *ctx);
|
||||
|
||||
void EVP_PKEY_CTX_set_cb(EVP_PKEY_CTX *ctx, EVP_PKEY_gen_cb *cb);
|
||||
EVP_PKEY_gen_cb *EVP_PKEY_CTX_get_cb(EVP_PKEY_CTX *ctx);
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
/* $OpenBSD: evp_names.c,v 1.17 2024/07/29 06:05:31 tb Exp $ */
|
||||
/* $OpenBSD: evp_names.c,v 1.18 2024/08/31 10:38:49 tb Exp $ */
|
||||
/*
|
||||
* Copyright (c) 2023 Theo Buehler <tb@openbsd.org>
|
||||
*
|
||||
|
@ -1464,11 +1464,6 @@ static const struct digest_name digest_names[] = {
|
|||
.digest = EVP_sha1,
|
||||
.alias = SN_sha1,
|
||||
},
|
||||
|
||||
{
|
||||
.name = SN_whirlpool,
|
||||
.digest = EVP_whirlpool,
|
||||
},
|
||||
};
|
||||
|
||||
#define N_DIGEST_NAMES (sizeof(digest_names) / sizeof(digest_names[0]))
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
/* $OpenBSD: evp_pkey.c,v 1.31 2024/08/22 12:21:07 tb Exp $ */
|
||||
/* $OpenBSD: evp_pkey.c,v 1.32 2024/08/31 10:25:38 tb Exp $ */
|
||||
/* Written by Dr Stephen N Henson (steve@openssl.org) for the OpenSSL
|
||||
* project 1999.
|
||||
*/
|
||||
|
@ -140,83 +140,3 @@ error:
|
|||
return NULL;
|
||||
}
|
||||
LCRYPTO_ALIAS(EVP_PKEY2PKCS8);
|
||||
|
||||
/*
|
||||
* XXX - delete all the garbage below in the next bump.
|
||||
*/
|
||||
|
||||
int
|
||||
EVP_PKEY_add1_attr_by_NID(EVP_PKEY *pkey, int nid, int type,
|
||||
const unsigned char *bytes, int len)
|
||||
{
|
||||
EVPerror(ERR_R_DISABLED);
|
||||
return 0;
|
||||
}
|
||||
LCRYPTO_ALIAS(EVP_PKEY_add1_attr_by_NID);
|
||||
|
||||
int
|
||||
EVP_PKEY_get_attr_count(const EVP_PKEY *key)
|
||||
{
|
||||
EVPerror(ERR_R_DISABLED);
|
||||
return 0;
|
||||
}
|
||||
LCRYPTO_ALIAS(EVP_PKEY_get_attr_count);
|
||||
|
||||
int
|
||||
EVP_PKEY_get_attr_by_NID(const EVP_PKEY *key, int nid, int lastpos)
|
||||
{
|
||||
EVPerror(ERR_R_DISABLED);
|
||||
return -1;
|
||||
}
|
||||
LCRYPTO_ALIAS(EVP_PKEY_get_attr_by_NID);
|
||||
|
||||
int
|
||||
EVP_PKEY_get_attr_by_OBJ(const EVP_PKEY *key, const ASN1_OBJECT *obj,
|
||||
int lastpos)
|
||||
{
|
||||
EVPerror(ERR_R_DISABLED);
|
||||
return -1;
|
||||
}
|
||||
LCRYPTO_ALIAS(EVP_PKEY_get_attr_by_OBJ);
|
||||
|
||||
X509_ATTRIBUTE *
|
||||
EVP_PKEY_get_attr(const EVP_PKEY *key, int loc)
|
||||
{
|
||||
EVPerror(ERR_R_DISABLED);
|
||||
return NULL;
|
||||
}
|
||||
LCRYPTO_ALIAS(EVP_PKEY_get_attr);
|
||||
|
||||
X509_ATTRIBUTE *
|
||||
EVP_PKEY_delete_attr(EVP_PKEY *key, int loc)
|
||||
{
|
||||
EVPerror(ERR_R_DISABLED);
|
||||
return NULL;
|
||||
}
|
||||
LCRYPTO_ALIAS(EVP_PKEY_delete_attr);
|
||||
|
||||
int
|
||||
EVP_PKEY_add1_attr(EVP_PKEY *key, X509_ATTRIBUTE *attr)
|
||||
{
|
||||
EVPerror(ERR_R_DISABLED);
|
||||
return 0;
|
||||
}
|
||||
LCRYPTO_ALIAS(EVP_PKEY_add1_attr);
|
||||
|
||||
int
|
||||
EVP_PKEY_add1_attr_by_OBJ(EVP_PKEY *key, const ASN1_OBJECT *obj, int type,
|
||||
const unsigned char *bytes, int len)
|
||||
{
|
||||
EVPerror(ERR_R_DISABLED);
|
||||
return 0;
|
||||
}
|
||||
LCRYPTO_ALIAS(EVP_PKEY_add1_attr_by_OBJ);
|
||||
|
||||
int
|
||||
EVP_PKEY_add1_attr_by_txt(EVP_PKEY *key, const char *attrname, int type,
|
||||
const unsigned char *bytes, int len)
|
||||
{
|
||||
EVPerror(ERR_R_DISABLED);
|
||||
return 0;
|
||||
}
|
||||
LCRYPTO_ALIAS(EVP_PKEY_add1_attr_by_txt);
|
||||
|
|
|
@ -1,54 +0,0 @@
|
|||
/* $OpenBSD: m_wp.c,v 1.14 2024/04/09 13:52:41 beck Exp $ */
|
||||
|
||||
#include <stdio.h>
|
||||
|
||||
#include <openssl/opensslconf.h>
|
||||
|
||||
#ifndef OPENSSL_NO_WHIRLPOOL
|
||||
|
||||
#include <openssl/evp.h>
|
||||
#include <openssl/objects.h>
|
||||
#include <openssl/x509.h>
|
||||
#include <openssl/whrlpool.h>
|
||||
|
||||
#include "evp_local.h"
|
||||
|
||||
static int
|
||||
init(EVP_MD_CTX *ctx)
|
||||
{
|
||||
return WHIRLPOOL_Init(ctx->md_data);
|
||||
}
|
||||
|
||||
static int
|
||||
update(EVP_MD_CTX *ctx, const void *data, size_t count)
|
||||
{
|
||||
return WHIRLPOOL_Update(ctx->md_data, data, count);
|
||||
}
|
||||
|
||||
static int
|
||||
final(EVP_MD_CTX *ctx, unsigned char *md)
|
||||
{
|
||||
return WHIRLPOOL_Final(md, ctx->md_data);
|
||||
}
|
||||
|
||||
static const EVP_MD whirlpool_md = {
|
||||
.type = NID_whirlpool,
|
||||
.pkey_type = 0,
|
||||
.md_size = WHIRLPOOL_DIGEST_LENGTH,
|
||||
.flags = 0,
|
||||
.init = init,
|
||||
.update = update,
|
||||
.final = final,
|
||||
.copy = NULL,
|
||||
.cleanup = NULL,
|
||||
.block_size = WHIRLPOOL_BBLOCK / 8,
|
||||
.ctx_size = sizeof(EVP_MD *) + sizeof(WHIRLPOOL_CTX),
|
||||
};
|
||||
|
||||
const EVP_MD *
|
||||
EVP_whirlpool(void)
|
||||
{
|
||||
return (&whirlpool_md);
|
||||
}
|
||||
LCRYPTO_ALIAS(EVP_whirlpool);
|
||||
#endif
|
|
@ -1,4 +1,4 @@
|
|||
/* $OpenBSD: pmeth_gn.c,v 1.20 2024/08/29 16:58:19 tb Exp $ */
|
||||
/* $OpenBSD: pmeth_gn.c,v 1.21 2024/08/31 09:14:21 tb Exp $ */
|
||||
/* Written by Dr Stephen N Henson (steve@openssl.org) for the OpenSSL
|
||||
* project 2006.
|
||||
*/
|
||||
|
@ -225,31 +225,3 @@ merr:
|
|||
return mac_key;
|
||||
}
|
||||
LCRYPTO_ALIAS(EVP_PKEY_new_mac_key);
|
||||
|
||||
/*
|
||||
* XXX - remove the API below in the next bump.
|
||||
*/
|
||||
|
||||
int
|
||||
EVP_PKEY_check(EVP_PKEY_CTX *ctx)
|
||||
{
|
||||
EVPerror(ERR_R_DISABLED);
|
||||
return -2;
|
||||
}
|
||||
LCRYPTO_ALIAS(EVP_PKEY_check);
|
||||
|
||||
int
|
||||
EVP_PKEY_public_check(EVP_PKEY_CTX *ctx)
|
||||
{
|
||||
EVPerror(ERR_R_DISABLED);
|
||||
return -2;
|
||||
}
|
||||
LCRYPTO_ALIAS(EVP_PKEY_public_check);
|
||||
|
||||
int
|
||||
EVP_PKEY_param_check(EVP_PKEY_CTX *ctx)
|
||||
{
|
||||
EVPerror(ERR_R_DISABLED);
|
||||
return -2;
|
||||
}
|
||||
LCRYPTO_ALIAS(EVP_PKEY_param_check);
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
/* $OpenBSD: conf.h,v 1.1 2024/04/09 14:57:28 tb Exp $ */
|
||||
/* $OpenBSD: conf.h,v 1.9 2024/08/31 09:54:31 tb Exp $ */
|
||||
/*
|
||||
* Copyright (c) 2024 Bob Beck <beck@openbsd.org>
|
||||
*
|
||||
|
@ -25,50 +25,21 @@
|
|||
#endif
|
||||
#include "crypto_namespace.h"
|
||||
|
||||
LCRYPTO_USED(CONF_set_default_method);
|
||||
LCRYPTO_USED(CONF_set_nconf);
|
||||
LCRYPTO_USED(CONF_load);
|
||||
LCRYPTO_USED(CONF_load_fp);
|
||||
LCRYPTO_USED(CONF_load_bio);
|
||||
LCRYPTO_USED(CONF_get_section);
|
||||
LCRYPTO_USED(CONF_get_string);
|
||||
LCRYPTO_USED(CONF_get_number);
|
||||
LCRYPTO_USED(CONF_free);
|
||||
LCRYPTO_USED(CONF_dump_fp);
|
||||
LCRYPTO_USED(CONF_dump_bio);
|
||||
LCRYPTO_USED(OPENSSL_config);
|
||||
LCRYPTO_USED(OPENSSL_no_config);
|
||||
LCRYPTO_USED(NCONF_new);
|
||||
LCRYPTO_USED(NCONF_default);
|
||||
LCRYPTO_USED(NCONF_WIN32);
|
||||
LCRYPTO_USED(NCONF_free);
|
||||
LCRYPTO_USED(NCONF_free_data);
|
||||
LCRYPTO_USED(NCONF_load);
|
||||
LCRYPTO_USED(NCONF_load_fp);
|
||||
LCRYPTO_USED(NCONF_load_bio);
|
||||
LCRYPTO_USED(NCONF_get_section);
|
||||
LCRYPTO_USED(NCONF_get_string);
|
||||
LCRYPTO_USED(NCONF_get_number_e);
|
||||
LCRYPTO_USED(NCONF_dump_fp);
|
||||
LCRYPTO_USED(NCONF_dump_bio);
|
||||
LCRYPTO_USED(CONF_modules_load);
|
||||
LCRYPTO_USED(CONF_modules_load_file);
|
||||
LCRYPTO_USED(CONF_modules_unload);
|
||||
LCRYPTO_USED(CONF_modules_finish);
|
||||
LCRYPTO_USED(CONF_modules_free);
|
||||
LCRYPTO_USED(CONF_module_add);
|
||||
LCRYPTO_USED(CONF_imodule_get_name);
|
||||
LCRYPTO_USED(CONF_imodule_get_value);
|
||||
LCRYPTO_USED(CONF_imodule_get_usr_data);
|
||||
LCRYPTO_USED(CONF_imodule_set_usr_data);
|
||||
LCRYPTO_USED(CONF_imodule_get_module);
|
||||
LCRYPTO_USED(CONF_imodule_get_flags);
|
||||
LCRYPTO_USED(CONF_imodule_set_flags);
|
||||
LCRYPTO_USED(CONF_module_get_usr_data);
|
||||
LCRYPTO_USED(CONF_module_set_usr_data);
|
||||
LCRYPTO_USED(CONF_get1_default_config_file);
|
||||
LCRYPTO_USED(CONF_parse_list);
|
||||
LCRYPTO_USED(OPENSSL_load_builtin_modules);
|
||||
LCRYPTO_USED(ERR_load_CONF_strings);
|
||||
|
||||
#endif /* _LIBCRYPTO_CONF_H */
|
||||
|
|
|
@ -1,36 +0,0 @@
|
|||
/* $OpenBSD: conf_api.h,v 1.1 2023/07/08 08:26:26 beck Exp $ */
|
||||
/*
|
||||
* Copyright (c) 2023 Bob Beck <beck@openbsd.org>
|
||||
*
|
||||
* 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_CONF_API_H
|
||||
#define _LIBCRYPTO_CONF_API_H
|
||||
|
||||
#ifndef _MSC_VER
|
||||
#include_next <openssl/conf_api.h>
|
||||
#else
|
||||
#include "../include/openssl/conf_api.h"
|
||||
#endif
|
||||
#include "crypto_namespace.h"
|
||||
|
||||
LCRYPTO_USED(_CONF_new_section);
|
||||
LCRYPTO_USED(_CONF_get_section);
|
||||
LCRYPTO_USED(_CONF_get_section_values);
|
||||
LCRYPTO_USED(_CONF_add_string);
|
||||
LCRYPTO_USED(_CONF_get_string);
|
||||
LCRYPTO_USED(_CONF_new_data);
|
||||
LCRYPTO_USED(_CONF_free_data);
|
||||
|
||||
#endif /* _LIBCRYPTO_CONF_API_H */
|
|
@ -1,4 +1,4 @@
|
|||
/* $OpenBSD: des.h,v 1.2 2024/07/09 07:16:13 beck Exp $ */
|
||||
/* $OpenBSD: des.h,v 1.3 2024/08/31 10:30:16 tb Exp $ */
|
||||
/*
|
||||
* Copyright (c) 2024 Joshua Sing <joshua@joshuasing.dev>
|
||||
*
|
||||
|
@ -41,8 +41,6 @@ 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);
|
||||
|
@ -62,7 +60,6 @@ LCRYPTO_USED(DES_cfb64_encrypt);
|
|||
LCRYPTO_USED(DES_ofb64_encrypt);
|
||||
#if defined(LIBRESSL_NAMESPACE)
|
||||
extern LCRYPTO_USED(DES_check_key);
|
||||
extern LCRYPTO_USED(DES_rw_mode);
|
||||
#endif
|
||||
|
||||
#endif /* _LIBCRYPTO_DES_H */
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
/* $OpenBSD: err.h,v 1.6 2024/07/09 07:17:13 beck Exp $ */
|
||||
/* $OpenBSD: err.h,v 1.7 2024/08/31 10:09:15 tb Exp $ */
|
||||
/*
|
||||
* Copyright (c) 2023 Bob Beck <beck@openbsd.org>
|
||||
*
|
||||
|
@ -56,7 +56,5 @@ LCRYPTO_USED(ERR_remove_state);
|
|||
LCRYPTO_USED(ERR_get_next_error_library);
|
||||
LCRYPTO_USED(ERR_set_mark);
|
||||
LCRYPTO_USED(ERR_pop_to_mark);
|
||||
LCRYPTO_UNUSED(ERR_add_error_data);
|
||||
LCRYPTO_UNUSED(ERR_add_error_vdata);
|
||||
|
||||
#endif /* _LIBCRYPTO_ERR_H */
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
/* $OpenBSD: evp.h,v 1.4 2024/04/10 15:00:38 beck Exp $ */
|
||||
/* $OpenBSD: evp.h,v 1.6 2024/08/31 10:38:49 tb Exp $ */
|
||||
/*
|
||||
* Copyright (c) 2024 Bob Beck <beck@openbsd.org>
|
||||
*
|
||||
|
@ -160,7 +160,6 @@ LCRYPTO_USED(EVP_sha3_384);
|
|||
LCRYPTO_USED(EVP_sha3_512);
|
||||
LCRYPTO_USED(EVP_sm3);
|
||||
LCRYPTO_USED(EVP_ripemd160);
|
||||
LCRYPTO_USED(EVP_whirlpool);
|
||||
LCRYPTO_USED(EVP_enc_null);
|
||||
LCRYPTO_USED(EVP_des_ecb);
|
||||
LCRYPTO_USED(EVP_des_ede);
|
||||
|
@ -353,9 +352,6 @@ LCRYPTO_USED(EVP_PKEY_paramgen_init);
|
|||
LCRYPTO_USED(EVP_PKEY_paramgen);
|
||||
LCRYPTO_USED(EVP_PKEY_keygen_init);
|
||||
LCRYPTO_USED(EVP_PKEY_keygen);
|
||||
LCRYPTO_USED(EVP_PKEY_check);
|
||||
LCRYPTO_USED(EVP_PKEY_public_check);
|
||||
LCRYPTO_USED(EVP_PKEY_param_check);
|
||||
LCRYPTO_USED(EVP_PKEY_CTX_set_cb);
|
||||
LCRYPTO_USED(EVP_PKEY_CTX_get_cb);
|
||||
LCRYPTO_USED(EVP_PKEY_CTX_get_keygen_info);
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
/* $OpenBSD: hmac.h,v 1.2 2023/07/05 21:14:54 bcook Exp $ */
|
||||
/* $OpenBSD: hmac.h,v 1.3 2024/08/31 10:42:21 tb Exp $ */
|
||||
/*
|
||||
* Copyright (c) 2016 Philip Guenther <guenther@openbsd.org>
|
||||
*
|
||||
|
@ -28,7 +28,6 @@
|
|||
LCRYPTO_USED(HMAC_CTX_new);
|
||||
LCRYPTO_USED(HMAC_CTX_free);
|
||||
LCRYPTO_UNUSED(HMAC_CTX_reset);
|
||||
LCRYPTO_UNUSED(HMAC_Init);
|
||||
LCRYPTO_USED(HMAC_Init_ex);
|
||||
LCRYPTO_USED(HMAC_Update);
|
||||
LCRYPTO_USED(HMAC_Final);
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
/* $OpenBSD: ui.h,v 1.4 2024/08/24 07:51:19 tb Exp $ */
|
||||
/* $OpenBSD: ui.h,v 1.5 2024/08/31 10:28:03 tb Exp $ */
|
||||
/*
|
||||
* Copyright (c) 2022 Bob Beck <beck@openbsd.org>
|
||||
*
|
||||
|
@ -75,8 +75,6 @@ LCRYPTO_USED(UI_get0_test_string);
|
|||
LCRYPTO_USED(UI_get_result_minsize);
|
||||
LCRYPTO_USED(UI_get_result_maxsize);
|
||||
LCRYPTO_USED(UI_set_result);
|
||||
LCRYPTO_UNUSED(UI_UTIL_read_pw_string);
|
||||
LCRYPTO_UNUSED(UI_UTIL_read_pw);
|
||||
LCRYPTO_USED(ERR_load_UI_strings);
|
||||
LCRYPTO_USED(UI_method_get_prompt_constructor);
|
||||
|
||||
|
|
|
@ -1,34 +0,0 @@
|
|||
/* $OpenBSD: whrlpool.h,v 1.1 2024/03/30 03:45:47 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_WHRLPOOL_H
|
||||
#define _LIBCRYPTO_WHRLPOOL_H
|
||||
|
||||
#ifndef _MSC_VER
|
||||
#include_next <openssl/whrlpool.h>
|
||||
#else
|
||||
#include "../include/openssl/whrlpool.h"
|
||||
#endif
|
||||
#include "crypto_namespace.h"
|
||||
|
||||
LCRYPTO_USED(WHIRLPOOL_Init);
|
||||
LCRYPTO_USED(WHIRLPOOL_Update);
|
||||
LCRYPTO_USED(WHIRLPOOL_BitUpdate);
|
||||
LCRYPTO_USED(WHIRLPOOL_Final);
|
||||
LCRYPTO_USED(WHIRLPOOL);
|
||||
|
||||
#endif /* _LIBCRYPTO_WHRLPOOL_H */
|
|
@ -1,4 +1,4 @@
|
|||
/* $OpenBSD: x509.h,v 1.10 2024/08/28 08:41:18 tb Exp $ */
|
||||
/* $OpenBSD: x509.h,v 1.14 2024/08/31 10:46:40 tb Exp $ */
|
||||
/*
|
||||
* Copyright (c) 2022 Bob Beck <beck@openbsd.org>
|
||||
*
|
||||
|
@ -140,8 +140,6 @@ LCRYPTO_USED(X509_REQ_get_pubkey);
|
|||
LCRYPTO_USED(i2d_re_X509_REQ_tbs);
|
||||
LCRYPTO_USED(X509_REQ_get0_pubkey);
|
||||
LCRYPTO_USED(X509_REQ_extension_nid);
|
||||
LCRYPTO_USED(X509_REQ_get_extension_nids);
|
||||
LCRYPTO_USED(X509_REQ_set_extension_nids);
|
||||
LCRYPTO_USED(X509_REQ_get_extensions);
|
||||
LCRYPTO_USED(X509_REQ_add_extensions_nid);
|
||||
LCRYPTO_USED(X509_REQ_add_extensions);
|
||||
|
@ -243,16 +241,6 @@ LCRYPTO_USED(X509_EXTENSION_set_data);
|
|||
LCRYPTO_USED(X509_EXTENSION_get_object);
|
||||
LCRYPTO_USED(X509_EXTENSION_get_data);
|
||||
LCRYPTO_USED(X509_EXTENSION_get_critical);
|
||||
LCRYPTO_UNUSED(X509at_get_attr_count);
|
||||
LCRYPTO_USED(X509at_get_attr_by_NID);
|
||||
LCRYPTO_USED(X509at_get_attr_by_OBJ);
|
||||
LCRYPTO_UNUSED(X509at_get_attr);
|
||||
LCRYPTO_UNUSED(X509at_delete_attr);
|
||||
LCRYPTO_USED(X509at_add1_attr);
|
||||
LCRYPTO_USED(X509at_add1_attr_by_OBJ);
|
||||
LCRYPTO_USED(X509at_add1_attr_by_NID);
|
||||
LCRYPTO_USED(X509at_add1_attr_by_txt);
|
||||
LCRYPTO_USED(X509at_get0_data_by_OBJ);
|
||||
LCRYPTO_USED(X509_ATTRIBUTE_create_by_NID);
|
||||
LCRYPTO_USED(X509_ATTRIBUTE_create_by_OBJ);
|
||||
LCRYPTO_USED(X509_ATTRIBUTE_create_by_txt);
|
||||
|
@ -265,7 +253,6 @@ LCRYPTO_USED(X509_ATTRIBUTE_get0_type);
|
|||
LCRYPTO_USED(X509_verify_cert);
|
||||
LCRYPTO_USED(X509_find_by_issuer_and_serial);
|
||||
LCRYPTO_USED(X509_find_by_subject);
|
||||
LCRYPTO_USED(X509_check_trust);
|
||||
LCRYPTO_USED(X509_up_ref);
|
||||
LCRYPTO_USED(X509_chain_up_ref);
|
||||
LCRYPTO_USED(ERR_load_X509_strings);
|
||||
|
@ -443,15 +430,6 @@ LCRYPTO_USED(X509_ocspid_print);
|
|||
LCRYPTO_USED(X509_CRL_print);
|
||||
LCRYPTO_USED(X509_REQ_print_ex);
|
||||
LCRYPTO_USED(X509_REQ_print);
|
||||
LCRYPTO_UNUSED(EVP_PKEY_get_attr_count);
|
||||
LCRYPTO_UNUSED(EVP_PKEY_get_attr_by_NID);
|
||||
LCRYPTO_UNUSED(EVP_PKEY_get_attr_by_OBJ);
|
||||
LCRYPTO_UNUSED(EVP_PKEY_get_attr);
|
||||
LCRYPTO_UNUSED(EVP_PKEY_delete_attr);
|
||||
LCRYPTO_UNUSED(EVP_PKEY_add1_attr);
|
||||
LCRYPTO_UNUSED(EVP_PKEY_add1_attr_by_OBJ);
|
||||
LCRYPTO_UNUSED(EVP_PKEY_add1_attr_by_NID);
|
||||
LCRYPTO_UNUSED(EVP_PKEY_add1_attr_by_txt);
|
||||
LCRYPTO_USED(PKCS8_PRIV_KEY_INFO_new);
|
||||
LCRYPTO_USED(PKCS8_PRIV_KEY_INFO_free);
|
||||
LCRYPTO_USED(d2i_PKCS8_PRIV_KEY_INFO);
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
/* $OpenBSD: x509v3.h,v 1.12 2024/08/28 08:59:03 tb Exp $ */
|
||||
/* $OpenBSD: x509v3.h,v 1.15 2024/08/31 10:03:03 tb Exp $ */
|
||||
/*
|
||||
* Copyright (c) 2022 Bob Beck <beck@openbsd.org>
|
||||
*
|
||||
|
@ -139,23 +139,8 @@ LCRYPTO_USED(X509V3_EXT_REQ_add_nconf);
|
|||
LCRYPTO_USED(X509V3_EXT_CRL_add_nconf);
|
||||
LCRYPTO_USED(X509V3_EXT_conf_nid);
|
||||
LCRYPTO_USED(X509V3_EXT_conf);
|
||||
LCRYPTO_UNUSED(X509V3_EXT_add_conf);
|
||||
LCRYPTO_UNUSED(X509V3_EXT_REQ_add_conf);
|
||||
LCRYPTO_UNUSED(X509V3_EXT_CRL_add_conf);
|
||||
LCRYPTO_USED(X509V3_add_value_bool_nf);
|
||||
LCRYPTO_USED(X509V3_get_value_bool);
|
||||
LCRYPTO_USED(X509V3_get_value_int);
|
||||
LCRYPTO_USED(X509V3_set_nconf);
|
||||
LCRYPTO_UNUSED(X509V3_set_conf_lhash);
|
||||
LCRYPTO_UNUSED(X509V3_get_string);
|
||||
LCRYPTO_USED(X509V3_get_section);
|
||||
LCRYPTO_UNUSED(X509V3_string_free);
|
||||
LCRYPTO_USED(X509V3_section_free);
|
||||
LCRYPTO_USED(X509V3_set_ctx);
|
||||
LCRYPTO_USED(X509V3_add_value);
|
||||
LCRYPTO_USED(X509V3_add_value_uchar);
|
||||
LCRYPTO_USED(X509V3_add_value_bool);
|
||||
LCRYPTO_USED(X509V3_add_value_int);
|
||||
LCRYPTO_USED(i2s_ASN1_INTEGER);
|
||||
LCRYPTO_USED(s2i_ASN1_INTEGER);
|
||||
LCRYPTO_USED(i2s_ASN1_ENUMERATED);
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
/* $OpenBSD: hmac.c,v 1.35 2024/06/01 07:36:16 tb Exp $ */
|
||||
/* $OpenBSD: hmac.c,v 1.36 2024/08/31 10:42:21 tb Exp $ */
|
||||
/* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com)
|
||||
* All rights reserved.
|
||||
*
|
||||
|
@ -136,15 +136,6 @@ err:
|
|||
}
|
||||
LCRYPTO_ALIAS(HMAC_Init_ex);
|
||||
|
||||
int
|
||||
HMAC_Init(HMAC_CTX *ctx, const void *key, int len, const EVP_MD *md)
|
||||
{
|
||||
if (key && md)
|
||||
HMAC_CTX_init(ctx);
|
||||
return HMAC_Init_ex(ctx, key, len, md, NULL);
|
||||
}
|
||||
LCRYPTO_ALIAS(HMAC_Init);
|
||||
|
||||
int
|
||||
HMAC_Update(HMAC_CTX *ctx, const unsigned char *data, size_t len)
|
||||
{
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
/* $OpenBSD: hmac.h,v 1.19 2024/07/09 07:57:57 tb Exp $ */
|
||||
/* $OpenBSD: hmac.h,v 1.20 2024/08/31 10:42:21 tb Exp $ */
|
||||
/* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com)
|
||||
* All rights reserved.
|
||||
*
|
||||
|
@ -82,8 +82,6 @@ HMAC_CTX *HMAC_CTX_new(void);
|
|||
void HMAC_CTX_free(HMAC_CTX *ctx);
|
||||
int HMAC_CTX_reset(HMAC_CTX *ctx);
|
||||
|
||||
int HMAC_Init(HMAC_CTX *ctx, const void *key, int len, const EVP_MD *md)
|
||||
__attribute__ ((__bounded__(__buffer__, 2, 3)));
|
||||
int HMAC_Init_ex(HMAC_CTX *ctx, const void *key, int len, const EVP_MD *md,
|
||||
ENGINE *impl)
|
||||
__attribute__ ((__bounded__(__buffer__, 2, 3)));
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
/* $OpenBSD: opensslfeatures.h,v 1.43 2024/03/02 11:25:46 tb Exp $ */
|
||||
/* $OpenBSD: opensslfeatures.h,v 1.44 2024/08/31 10:38:49 tb Exp $ */
|
||||
/*
|
||||
* Feature flags for LibreSSL... so you can actually tell when things
|
||||
* are enabled, rather than not being able to tell when things are
|
||||
|
@ -140,7 +140,7 @@
|
|||
/* #define OPENSSL_NO_UNIT_TEST */
|
||||
/* #define OPENSSL_NO_UNIX_SOCK */
|
||||
/* #define OPENSSL_NO_WEAK_SSL_CIPHERS */
|
||||
/* #define OPENSSL_NO_WHIRLPOOL */
|
||||
#define OPENSSL_NO_WHIRLPOOL
|
||||
/* #define OPENSSL_NO_WINSTORE */
|
||||
#define OPENSSL_NO_ZLIB
|
||||
/* #define OPENSSL_NO_ZSTD */
|
||||
|
|
|
@ -1,11 +1,11 @@
|
|||
/* $OpenBSD: opensslv.h,v 1.78 2024/03/02 11:53:30 tb Exp $ */
|
||||
/* $OpenBSD: opensslv.h,v 1.79 2024/08/31 10:52:43 tb Exp $ */
|
||||
#ifndef HEADER_OPENSSLV_H
|
||||
#define HEADER_OPENSSLV_H
|
||||
|
||||
/* These will change with each release of LibreSSL-portable */
|
||||
#define LIBRESSL_VERSION_NUMBER 0x3090000fL
|
||||
#define LIBRESSL_VERSION_NUMBER 0x4000000fL
|
||||
/* ^ Patch starts here */
|
||||
#define LIBRESSL_VERSION_TEXT "LibreSSL 3.9.0"
|
||||
#define LIBRESSL_VERSION_TEXT "LibreSSL 4.0.0"
|
||||
|
||||
/* These will never change */
|
||||
#define OPENSSL_VERSION_NUMBER 0x20000000L
|
||||
|
|
|
@ -1,3 +1,3 @@
|
|||
# Don't forget to give libssl and libtls the same type of bump!
|
||||
major=54
|
||||
major=55
|
||||
minor=0
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
/* $OpenBSD: ui.h,v 1.18 2023/04/18 08:33:43 tb Exp $ */
|
||||
/* $OpenBSD: ui.h,v 1.19 2024/08/31 10:28:03 tb Exp $ */
|
||||
/* Written by Richard Levitte (richard@levitte.org) for the OpenSSL
|
||||
* project 2001.
|
||||
*/
|
||||
|
@ -364,12 +364,6 @@ int UI_get_result_maxsize(UI_STRING *uis);
|
|||
/* Set the result of a UI_STRING. */
|
||||
int UI_set_result(UI *ui, UI_STRING *uis, const char *result);
|
||||
|
||||
/* A couple of popular utility functions */
|
||||
int UI_UTIL_read_pw_string(char *buf, int length, const char *prompt,
|
||||
int verify);
|
||||
int UI_UTIL_read_pw(char *buf, char *buff, int size, const char *prompt,
|
||||
int verify);
|
||||
|
||||
void ERR_load_UI_strings(void);
|
||||
|
||||
/* Error codes for the UI functions. */
|
||||
|
|
|
@ -1,75 +0,0 @@
|
|||
/* $OpenBSD: ui_util.c,v 1.16 2024/08/24 07:50:23 tb Exp $ */
|
||||
/* ====================================================================
|
||||
* Copyright (c) 2001-2002 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
|
||||
* openssl-core@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 product includes cryptographic software written by Eric Young
|
||||
* (eay@cryptsoft.com). This product includes software written by Tim
|
||||
* Hudson (tjh@cryptsoft.com).
|
||||
*
|
||||
*/
|
||||
|
||||
#include <stdio.h>
|
||||
#include <string.h>
|
||||
|
||||
#include <openssl/ui.h>
|
||||
|
||||
/* XXX - remove in next bump. */
|
||||
|
||||
int
|
||||
UI_UTIL_read_pw_string(char *buf, int length, const char *prompt, int verify)
|
||||
{
|
||||
return -1;
|
||||
}
|
||||
LCRYPTO_ALIAS(UI_UTIL_read_pw_string);
|
||||
|
||||
int
|
||||
UI_UTIL_read_pw(char *buf, char *buff, int size, const char *prompt, int verify)
|
||||
{
|
||||
return -1;
|
||||
}
|
||||
LCRYPTO_ALIAS(UI_UTIL_read_pw);
|
|
@ -1,855 +0,0 @@
|
|||
/* $OpenBSD: whirlpool.c,v 1.3 2024/06/01 07:36:17 tb Exp $ */
|
||||
/**
|
||||
* The Whirlpool hashing function.
|
||||
*
|
||||
* <P>
|
||||
* <b>References</b>
|
||||
*
|
||||
* <P>
|
||||
* The Whirlpool algorithm was developed by
|
||||
* <a href="mailto:pbarreto@scopus.com.br">Paulo S. L. M. Barreto</a> and
|
||||
* <a href="mailto:vincent.rijmen@cryptomathic.com">Vincent Rijmen</a>.
|
||||
*
|
||||
* See
|
||||
* P.S.L.M. Barreto, V. Rijmen,
|
||||
* ``The Whirlpool hashing function,''
|
||||
* NESSIE submission, 2000 (tweaked version, 2001),
|
||||
* <https://www.cosic.esat.kuleuven.ac.be/nessie/workshop/submissions/whirlpool.zip>
|
||||
*
|
||||
* Based on "@version 3.0 (2003.03.12)" by Paulo S.L.M. Barreto and
|
||||
* Vincent Rijmen. Lookup "reference implementations" on
|
||||
* <http://planeta.terra.com.br/informatica/paulobarreto/>
|
||||
*
|
||||
* =============================================================================
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY THE AUTHORS ''AS IS'' AND ANY EXPRESS
|
||||
* 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 AUTHORS OR 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.
|
||||
*
|
||||
*/
|
||||
|
||||
/*
|
||||
* OpenSSL-specific implementation notes.
|
||||
*
|
||||
* WHIRLPOOL_Update as well as one-stroke WHIRLPOOL both expect
|
||||
* number of *bytes* as input length argument. Bit-oriented routine
|
||||
* as specified by authors is called WHIRLPOOL_BitUpdate[!] and
|
||||
* does not have one-stroke counterpart.
|
||||
*
|
||||
* WHIRLPOOL_BitUpdate implements byte-oriented loop, essentially
|
||||
* to serve WHIRLPOOL_Update. This is done for performance.
|
||||
*
|
||||
* Unlike authors' reference implementation, block processing
|
||||
* routine whirlpool_block is designed to operate on multi-block
|
||||
* input. This is done for performance.
|
||||
*/
|
||||
|
||||
#include <endian.h>
|
||||
#include <string.h>
|
||||
|
||||
#include <openssl/crypto.h>
|
||||
#include <openssl/whrlpool.h>
|
||||
|
||||
typedef unsigned char u8;
|
||||
#if defined(_LP64)
|
||||
typedef unsigned long u64;
|
||||
#else
|
||||
typedef unsigned long long u64;
|
||||
#endif
|
||||
|
||||
#define ROUNDS 10
|
||||
|
||||
#undef SMALL_REGISTER_BANK
|
||||
#if defined(__i386) || defined(__i386__) || defined(_M_IX86)
|
||||
# define SMALL_REGISTER_BANK
|
||||
# if defined(WHIRLPOOL_ASM)
|
||||
# ifndef OPENSSL_SMALL_FOOTPRINT
|
||||
# define OPENSSL_SMALL_FOOTPRINT /* it appears that for elder non-MMX
|
||||
CPUs this is actually faster! */
|
||||
# endif
|
||||
#include "x86_arch.h"
|
||||
# define GO_FOR_MMX(ctx,inp,num) \
|
||||
do { \
|
||||
void whirlpool_block_mmx(void *,const void *,size_t); \
|
||||
if ((OPENSSL_cpu_caps() & CPUCAP_MASK_MMX) == 0) \
|
||||
break; \
|
||||
whirlpool_block_mmx(ctx->H.c,inp,num); \
|
||||
return; \
|
||||
} while (0)
|
||||
# endif
|
||||
#elif defined(__arm__)
|
||||
# define SMALL_REGISTER_BANK
|
||||
#endif
|
||||
|
||||
#undef ROTATE
|
||||
#if defined(__GNUC__) && __GNUC__>=2
|
||||
# if defined(__x86_64) || defined(__x86_64__)
|
||||
# define ROTATE(a,n) ({ u64 ret; asm ("rolq %1,%0" \
|
||||
: "=r"(ret) : "J"(n),"0"(a) : "cc"); ret; })
|
||||
# endif
|
||||
#endif
|
||||
|
||||
#if defined(OPENSSL_SMALL_FOOTPRINT)
|
||||
# if !defined(ROTATE)
|
||||
# if BYTE_ORDER == LITTLE_ENDIAN /* little-endians have to rotate left */
|
||||
# define ROTATE(i,n) ((i)<<(n) ^ (i)>>(64-n))
|
||||
# else /* big-endians have to rotate right */
|
||||
# define ROTATE(i,n) ((i)>>(n) ^ (i)<<(64-n))
|
||||
# endif
|
||||
# endif
|
||||
# if defined(ROTATE) && !defined(__STRICT_ALIGNMENT)
|
||||
# define __STRICT_ALIGNMENT /* ensure smallest table size */
|
||||
# endif
|
||||
#endif
|
||||
|
||||
/*
|
||||
* Table size depends on __STRICT_ALIGNMENT and whether or not endian-
|
||||
* specific ROTATE macro is defined. If __STRICT_ALIGNMENT is not
|
||||
* defined, which is normally the case on x86[_64] CPUs, the table is
|
||||
* 4KB large unconditionally. Otherwise if ROTATE is defined, the
|
||||
* table is 2KB large, and otherwise - 16KB. 2KB table requires a
|
||||
* whole bunch of additional rotations, but I'm willing to "trade,"
|
||||
* because 16KB table certainly trashes L1 cache. I wish all CPUs
|
||||
* could handle unaligned load as 4KB table doesn't trash the cache,
|
||||
* nor does it require additional rotations.
|
||||
*/
|
||||
/*
|
||||
* Note that every Cn macro expands as two loads: one byte load and
|
||||
* one quadword load. One can argue that that many single-byte loads
|
||||
* is too excessive, as one could load a quadword and "milk" it for
|
||||
* eight 8-bit values instead. Well, yes, but in order to do so *and*
|
||||
* avoid excessive loads you have to accommodate a handful of 64-bit
|
||||
* values in the register bank and issue a bunch of shifts and mask.
|
||||
* It's a tradeoff: loads vs. shift and mask in big register bank[!].
|
||||
* On most CPUs eight single-byte loads are faster and I let other
|
||||
* ones to depend on smart compiler to fold byte loads if beneficial.
|
||||
* Hand-coded assembler would be another alternative:-)
|
||||
*/
|
||||
#ifdef __STRICT_ALIGNMENT
|
||||
# if defined(ROTATE)
|
||||
# define N 1
|
||||
# define LL(c0,c1,c2,c3,c4,c5,c6,c7) c0,c1,c2,c3,c4,c5,c6,c7
|
||||
# define C0(K,i) (Cx.q[K.c[(i)*8+0]])
|
||||
# define C1(K,i) ROTATE(Cx.q[K.c[(i)*8+1]],8)
|
||||
# define C2(K,i) ROTATE(Cx.q[K.c[(i)*8+2]],16)
|
||||
# define C3(K,i) ROTATE(Cx.q[K.c[(i)*8+3]],24)
|
||||
# define C4(K,i) ROTATE(Cx.q[K.c[(i)*8+4]],32)
|
||||
# define C5(K,i) ROTATE(Cx.q[K.c[(i)*8+5]],40)
|
||||
# define C6(K,i) ROTATE(Cx.q[K.c[(i)*8+6]],48)
|
||||
# define C7(K,i) ROTATE(Cx.q[K.c[(i)*8+7]],56)
|
||||
# else
|
||||
# define N 8
|
||||
# define LL(c0,c1,c2,c3,c4,c5,c6,c7) c0,c1,c2,c3,c4,c5,c6,c7, \
|
||||
c7,c0,c1,c2,c3,c4,c5,c6, \
|
||||
c6,c7,c0,c1,c2,c3,c4,c5, \
|
||||
c5,c6,c7,c0,c1,c2,c3,c4, \
|
||||
c4,c5,c6,c7,c0,c1,c2,c3, \
|
||||
c3,c4,c5,c6,c7,c0,c1,c2, \
|
||||
c2,c3,c4,c5,c6,c7,c0,c1, \
|
||||
c1,c2,c3,c4,c5,c6,c7,c0
|
||||
# define C0(K,i) (Cx.q[0+8*K.c[(i)*8+0]])
|
||||
# define C1(K,i) (Cx.q[1+8*K.c[(i)*8+1]])
|
||||
# define C2(K,i) (Cx.q[2+8*K.c[(i)*8+2]])
|
||||
# define C3(K,i) (Cx.q[3+8*K.c[(i)*8+3]])
|
||||
# define C4(K,i) (Cx.q[4+8*K.c[(i)*8+4]])
|
||||
# define C5(K,i) (Cx.q[5+8*K.c[(i)*8+5]])
|
||||
# define C6(K,i) (Cx.q[6+8*K.c[(i)*8+6]])
|
||||
# define C7(K,i) (Cx.q[7+8*K.c[(i)*8+7]])
|
||||
# endif
|
||||
#else
|
||||
# define N 2
|
||||
# define LL(c0,c1,c2,c3,c4,c5,c6,c7) c0,c1,c2,c3,c4,c5,c6,c7, \
|
||||
c0,c1,c2,c3,c4,c5,c6,c7
|
||||
# define C0(K,i) (((u64*)(Cx.c+0))[2*K.c[(i)*8+0]])
|
||||
# define C1(K,i) (((u64*)(Cx.c+7))[2*K.c[(i)*8+1]])
|
||||
# define C2(K,i) (((u64*)(Cx.c+6))[2*K.c[(i)*8+2]])
|
||||
# define C3(K,i) (((u64*)(Cx.c+5))[2*K.c[(i)*8+3]])
|
||||
# define C4(K,i) (((u64*)(Cx.c+4))[2*K.c[(i)*8+4]])
|
||||
# define C5(K,i) (((u64*)(Cx.c+3))[2*K.c[(i)*8+5]])
|
||||
# define C6(K,i) (((u64*)(Cx.c+2))[2*K.c[(i)*8+6]])
|
||||
# define C7(K,i) (((u64*)(Cx.c+1))[2*K.c[(i)*8+7]])
|
||||
#endif
|
||||
|
||||
static const
|
||||
union {
|
||||
u8 c[(256*N+ROUNDS)*sizeof(u64)];
|
||||
u64 q[(256*N+ROUNDS)];
|
||||
} Cx = { {
|
||||
/* Note endian-neutral representation:-) */
|
||||
LL(0x18,0x18,0x60,0x18,0xc0,0x78,0x30,0xd8),
|
||||
LL(0x23,0x23,0x8c,0x23,0x05,0xaf,0x46,0x26),
|
||||
LL(0xc6,0xc6,0x3f,0xc6,0x7e,0xf9,0x91,0xb8),
|
||||
LL(0xe8,0xe8,0x87,0xe8,0x13,0x6f,0xcd,0xfb),
|
||||
LL(0x87,0x87,0x26,0x87,0x4c,0xa1,0x13,0xcb),
|
||||
LL(0xb8,0xb8,0xda,0xb8,0xa9,0x62,0x6d,0x11),
|
||||
LL(0x01,0x01,0x04,0x01,0x08,0x05,0x02,0x09),
|
||||
LL(0x4f,0x4f,0x21,0x4f,0x42,0x6e,0x9e,0x0d),
|
||||
LL(0x36,0x36,0xd8,0x36,0xad,0xee,0x6c,0x9b),
|
||||
LL(0xa6,0xa6,0xa2,0xa6,0x59,0x04,0x51,0xff),
|
||||
LL(0xd2,0xd2,0x6f,0xd2,0xde,0xbd,0xb9,0x0c),
|
||||
LL(0xf5,0xf5,0xf3,0xf5,0xfb,0x06,0xf7,0x0e),
|
||||
LL(0x79,0x79,0xf9,0x79,0xef,0x80,0xf2,0x96),
|
||||
LL(0x6f,0x6f,0xa1,0x6f,0x5f,0xce,0xde,0x30),
|
||||
LL(0x91,0x91,0x7e,0x91,0xfc,0xef,0x3f,0x6d),
|
||||
LL(0x52,0x52,0x55,0x52,0xaa,0x07,0xa4,0xf8),
|
||||
LL(0x60,0x60,0x9d,0x60,0x27,0xfd,0xc0,0x47),
|
||||
LL(0xbc,0xbc,0xca,0xbc,0x89,0x76,0x65,0x35),
|
||||
LL(0x9b,0x9b,0x56,0x9b,0xac,0xcd,0x2b,0x37),
|
||||
LL(0x8e,0x8e,0x02,0x8e,0x04,0x8c,0x01,0x8a),
|
||||
LL(0xa3,0xa3,0xb6,0xa3,0x71,0x15,0x5b,0xd2),
|
||||
LL(0x0c,0x0c,0x30,0x0c,0x60,0x3c,0x18,0x6c),
|
||||
LL(0x7b,0x7b,0xf1,0x7b,0xff,0x8a,0xf6,0x84),
|
||||
LL(0x35,0x35,0xd4,0x35,0xb5,0xe1,0x6a,0x80),
|
||||
LL(0x1d,0x1d,0x74,0x1d,0xe8,0x69,0x3a,0xf5),
|
||||
LL(0xe0,0xe0,0xa7,0xe0,0x53,0x47,0xdd,0xb3),
|
||||
LL(0xd7,0xd7,0x7b,0xd7,0xf6,0xac,0xb3,0x21),
|
||||
LL(0xc2,0xc2,0x2f,0xc2,0x5e,0xed,0x99,0x9c),
|
||||
LL(0x2e,0x2e,0xb8,0x2e,0x6d,0x96,0x5c,0x43),
|
||||
LL(0x4b,0x4b,0x31,0x4b,0x62,0x7a,0x96,0x29),
|
||||
LL(0xfe,0xfe,0xdf,0xfe,0xa3,0x21,0xe1,0x5d),
|
||||
LL(0x57,0x57,0x41,0x57,0x82,0x16,0xae,0xd5),
|
||||
LL(0x15,0x15,0x54,0x15,0xa8,0x41,0x2a,0xbd),
|
||||
LL(0x77,0x77,0xc1,0x77,0x9f,0xb6,0xee,0xe8),
|
||||
LL(0x37,0x37,0xdc,0x37,0xa5,0xeb,0x6e,0x92),
|
||||
LL(0xe5,0xe5,0xb3,0xe5,0x7b,0x56,0xd7,0x9e),
|
||||
LL(0x9f,0x9f,0x46,0x9f,0x8c,0xd9,0x23,0x13),
|
||||
LL(0xf0,0xf0,0xe7,0xf0,0xd3,0x17,0xfd,0x23),
|
||||
LL(0x4a,0x4a,0x35,0x4a,0x6a,0x7f,0x94,0x20),
|
||||
LL(0xda,0xda,0x4f,0xda,0x9e,0x95,0xa9,0x44),
|
||||
LL(0x58,0x58,0x7d,0x58,0xfa,0x25,0xb0,0xa2),
|
||||
LL(0xc9,0xc9,0x03,0xc9,0x06,0xca,0x8f,0xcf),
|
||||
LL(0x29,0x29,0xa4,0x29,0x55,0x8d,0x52,0x7c),
|
||||
LL(0x0a,0x0a,0x28,0x0a,0x50,0x22,0x14,0x5a),
|
||||
LL(0xb1,0xb1,0xfe,0xb1,0xe1,0x4f,0x7f,0x50),
|
||||
LL(0xa0,0xa0,0xba,0xa0,0x69,0x1a,0x5d,0xc9),
|
||||
LL(0x6b,0x6b,0xb1,0x6b,0x7f,0xda,0xd6,0x14),
|
||||
LL(0x85,0x85,0x2e,0x85,0x5c,0xab,0x17,0xd9),
|
||||
LL(0xbd,0xbd,0xce,0xbd,0x81,0x73,0x67,0x3c),
|
||||
LL(0x5d,0x5d,0x69,0x5d,0xd2,0x34,0xba,0x8f),
|
||||
LL(0x10,0x10,0x40,0x10,0x80,0x50,0x20,0x90),
|
||||
LL(0xf4,0xf4,0xf7,0xf4,0xf3,0x03,0xf5,0x07),
|
||||
LL(0xcb,0xcb,0x0b,0xcb,0x16,0xc0,0x8b,0xdd),
|
||||
LL(0x3e,0x3e,0xf8,0x3e,0xed,0xc6,0x7c,0xd3),
|
||||
LL(0x05,0x05,0x14,0x05,0x28,0x11,0x0a,0x2d),
|
||||
LL(0x67,0x67,0x81,0x67,0x1f,0xe6,0xce,0x78),
|
||||
LL(0xe4,0xe4,0xb7,0xe4,0x73,0x53,0xd5,0x97),
|
||||
LL(0x27,0x27,0x9c,0x27,0x25,0xbb,0x4e,0x02),
|
||||
LL(0x41,0x41,0x19,0x41,0x32,0x58,0x82,0x73),
|
||||
LL(0x8b,0x8b,0x16,0x8b,0x2c,0x9d,0x0b,0xa7),
|
||||
LL(0xa7,0xa7,0xa6,0xa7,0x51,0x01,0x53,0xf6),
|
||||
LL(0x7d,0x7d,0xe9,0x7d,0xcf,0x94,0xfa,0xb2),
|
||||
LL(0x95,0x95,0x6e,0x95,0xdc,0xfb,0x37,0x49),
|
||||
LL(0xd8,0xd8,0x47,0xd8,0x8e,0x9f,0xad,0x56),
|
||||
LL(0xfb,0xfb,0xcb,0xfb,0x8b,0x30,0xeb,0x70),
|
||||
LL(0xee,0xee,0x9f,0xee,0x23,0x71,0xc1,0xcd),
|
||||
LL(0x7c,0x7c,0xed,0x7c,0xc7,0x91,0xf8,0xbb),
|
||||
LL(0x66,0x66,0x85,0x66,0x17,0xe3,0xcc,0x71),
|
||||
LL(0xdd,0xdd,0x53,0xdd,0xa6,0x8e,0xa7,0x7b),
|
||||
LL(0x17,0x17,0x5c,0x17,0xb8,0x4b,0x2e,0xaf),
|
||||
LL(0x47,0x47,0x01,0x47,0x02,0x46,0x8e,0x45),
|
||||
LL(0x9e,0x9e,0x42,0x9e,0x84,0xdc,0x21,0x1a),
|
||||
LL(0xca,0xca,0x0f,0xca,0x1e,0xc5,0x89,0xd4),
|
||||
LL(0x2d,0x2d,0xb4,0x2d,0x75,0x99,0x5a,0x58),
|
||||
LL(0xbf,0xbf,0xc6,0xbf,0x91,0x79,0x63,0x2e),
|
||||
LL(0x07,0x07,0x1c,0x07,0x38,0x1b,0x0e,0x3f),
|
||||
LL(0xad,0xad,0x8e,0xad,0x01,0x23,0x47,0xac),
|
||||
LL(0x5a,0x5a,0x75,0x5a,0xea,0x2f,0xb4,0xb0),
|
||||
LL(0x83,0x83,0x36,0x83,0x6c,0xb5,0x1b,0xef),
|
||||
LL(0x33,0x33,0xcc,0x33,0x85,0xff,0x66,0xb6),
|
||||
LL(0x63,0x63,0x91,0x63,0x3f,0xf2,0xc6,0x5c),
|
||||
LL(0x02,0x02,0x08,0x02,0x10,0x0a,0x04,0x12),
|
||||
LL(0xaa,0xaa,0x92,0xaa,0x39,0x38,0x49,0x93),
|
||||
LL(0x71,0x71,0xd9,0x71,0xaf,0xa8,0xe2,0xde),
|
||||
LL(0xc8,0xc8,0x07,0xc8,0x0e,0xcf,0x8d,0xc6),
|
||||
LL(0x19,0x19,0x64,0x19,0xc8,0x7d,0x32,0xd1),
|
||||
LL(0x49,0x49,0x39,0x49,0x72,0x70,0x92,0x3b),
|
||||
LL(0xd9,0xd9,0x43,0xd9,0x86,0x9a,0xaf,0x5f),
|
||||
LL(0xf2,0xf2,0xef,0xf2,0xc3,0x1d,0xf9,0x31),
|
||||
LL(0xe3,0xe3,0xab,0xe3,0x4b,0x48,0xdb,0xa8),
|
||||
LL(0x5b,0x5b,0x71,0x5b,0xe2,0x2a,0xb6,0xb9),
|
||||
LL(0x88,0x88,0x1a,0x88,0x34,0x92,0x0d,0xbc),
|
||||
LL(0x9a,0x9a,0x52,0x9a,0xa4,0xc8,0x29,0x3e),
|
||||
LL(0x26,0x26,0x98,0x26,0x2d,0xbe,0x4c,0x0b),
|
||||
LL(0x32,0x32,0xc8,0x32,0x8d,0xfa,0x64,0xbf),
|
||||
LL(0xb0,0xb0,0xfa,0xb0,0xe9,0x4a,0x7d,0x59),
|
||||
LL(0xe9,0xe9,0x83,0xe9,0x1b,0x6a,0xcf,0xf2),
|
||||
LL(0x0f,0x0f,0x3c,0x0f,0x78,0x33,0x1e,0x77),
|
||||
LL(0xd5,0xd5,0x73,0xd5,0xe6,0xa6,0xb7,0x33),
|
||||
LL(0x80,0x80,0x3a,0x80,0x74,0xba,0x1d,0xf4),
|
||||
LL(0xbe,0xbe,0xc2,0xbe,0x99,0x7c,0x61,0x27),
|
||||
LL(0xcd,0xcd,0x13,0xcd,0x26,0xde,0x87,0xeb),
|
||||
LL(0x34,0x34,0xd0,0x34,0xbd,0xe4,0x68,0x89),
|
||||
LL(0x48,0x48,0x3d,0x48,0x7a,0x75,0x90,0x32),
|
||||
LL(0xff,0xff,0xdb,0xff,0xab,0x24,0xe3,0x54),
|
||||
LL(0x7a,0x7a,0xf5,0x7a,0xf7,0x8f,0xf4,0x8d),
|
||||
LL(0x90,0x90,0x7a,0x90,0xf4,0xea,0x3d,0x64),
|
||||
LL(0x5f,0x5f,0x61,0x5f,0xc2,0x3e,0xbe,0x9d),
|
||||
LL(0x20,0x20,0x80,0x20,0x1d,0xa0,0x40,0x3d),
|
||||
LL(0x68,0x68,0xbd,0x68,0x67,0xd5,0xd0,0x0f),
|
||||
LL(0x1a,0x1a,0x68,0x1a,0xd0,0x72,0x34,0xca),
|
||||
LL(0xae,0xae,0x82,0xae,0x19,0x2c,0x41,0xb7),
|
||||
LL(0xb4,0xb4,0xea,0xb4,0xc9,0x5e,0x75,0x7d),
|
||||
LL(0x54,0x54,0x4d,0x54,0x9a,0x19,0xa8,0xce),
|
||||
LL(0x93,0x93,0x76,0x93,0xec,0xe5,0x3b,0x7f),
|
||||
LL(0x22,0x22,0x88,0x22,0x0d,0xaa,0x44,0x2f),
|
||||
LL(0x64,0x64,0x8d,0x64,0x07,0xe9,0xc8,0x63),
|
||||
LL(0xf1,0xf1,0xe3,0xf1,0xdb,0x12,0xff,0x2a),
|
||||
LL(0x73,0x73,0xd1,0x73,0xbf,0xa2,0xe6,0xcc),
|
||||
LL(0x12,0x12,0x48,0x12,0x90,0x5a,0x24,0x82),
|
||||
LL(0x40,0x40,0x1d,0x40,0x3a,0x5d,0x80,0x7a),
|
||||
LL(0x08,0x08,0x20,0x08,0x40,0x28,0x10,0x48),
|
||||
LL(0xc3,0xc3,0x2b,0xc3,0x56,0xe8,0x9b,0x95),
|
||||
LL(0xec,0xec,0x97,0xec,0x33,0x7b,0xc5,0xdf),
|
||||
LL(0xdb,0xdb,0x4b,0xdb,0x96,0x90,0xab,0x4d),
|
||||
LL(0xa1,0xa1,0xbe,0xa1,0x61,0x1f,0x5f,0xc0),
|
||||
LL(0x8d,0x8d,0x0e,0x8d,0x1c,0x83,0x07,0x91),
|
||||
LL(0x3d,0x3d,0xf4,0x3d,0xf5,0xc9,0x7a,0xc8),
|
||||
LL(0x97,0x97,0x66,0x97,0xcc,0xf1,0x33,0x5b),
|
||||
LL(0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00),
|
||||
LL(0xcf,0xcf,0x1b,0xcf,0x36,0xd4,0x83,0xf9),
|
||||
LL(0x2b,0x2b,0xac,0x2b,0x45,0x87,0x56,0x6e),
|
||||
LL(0x76,0x76,0xc5,0x76,0x97,0xb3,0xec,0xe1),
|
||||
LL(0x82,0x82,0x32,0x82,0x64,0xb0,0x19,0xe6),
|
||||
LL(0xd6,0xd6,0x7f,0xd6,0xfe,0xa9,0xb1,0x28),
|
||||
LL(0x1b,0x1b,0x6c,0x1b,0xd8,0x77,0x36,0xc3),
|
||||
LL(0xb5,0xb5,0xee,0xb5,0xc1,0x5b,0x77,0x74),
|
||||
LL(0xaf,0xaf,0x86,0xaf,0x11,0x29,0x43,0xbe),
|
||||
LL(0x6a,0x6a,0xb5,0x6a,0x77,0xdf,0xd4,0x1d),
|
||||
LL(0x50,0x50,0x5d,0x50,0xba,0x0d,0xa0,0xea),
|
||||
LL(0x45,0x45,0x09,0x45,0x12,0x4c,0x8a,0x57),
|
||||
LL(0xf3,0xf3,0xeb,0xf3,0xcb,0x18,0xfb,0x38),
|
||||
LL(0x30,0x30,0xc0,0x30,0x9d,0xf0,0x60,0xad),
|
||||
LL(0xef,0xef,0x9b,0xef,0x2b,0x74,0xc3,0xc4),
|
||||
LL(0x3f,0x3f,0xfc,0x3f,0xe5,0xc3,0x7e,0xda),
|
||||
LL(0x55,0x55,0x49,0x55,0x92,0x1c,0xaa,0xc7),
|
||||
LL(0xa2,0xa2,0xb2,0xa2,0x79,0x10,0x59,0xdb),
|
||||
LL(0xea,0xea,0x8f,0xea,0x03,0x65,0xc9,0xe9),
|
||||
LL(0x65,0x65,0x89,0x65,0x0f,0xec,0xca,0x6a),
|
||||
LL(0xba,0xba,0xd2,0xba,0xb9,0x68,0x69,0x03),
|
||||
LL(0x2f,0x2f,0xbc,0x2f,0x65,0x93,0x5e,0x4a),
|
||||
LL(0xc0,0xc0,0x27,0xc0,0x4e,0xe7,0x9d,0x8e),
|
||||
LL(0xde,0xde,0x5f,0xde,0xbe,0x81,0xa1,0x60),
|
||||
LL(0x1c,0x1c,0x70,0x1c,0xe0,0x6c,0x38,0xfc),
|
||||
LL(0xfd,0xfd,0xd3,0xfd,0xbb,0x2e,0xe7,0x46),
|
||||
LL(0x4d,0x4d,0x29,0x4d,0x52,0x64,0x9a,0x1f),
|
||||
LL(0x92,0x92,0x72,0x92,0xe4,0xe0,0x39,0x76),
|
||||
LL(0x75,0x75,0xc9,0x75,0x8f,0xbc,0xea,0xfa),
|
||||
LL(0x06,0x06,0x18,0x06,0x30,0x1e,0x0c,0x36),
|
||||
LL(0x8a,0x8a,0x12,0x8a,0x24,0x98,0x09,0xae),
|
||||
LL(0xb2,0xb2,0xf2,0xb2,0xf9,0x40,0x79,0x4b),
|
||||
LL(0xe6,0xe6,0xbf,0xe6,0x63,0x59,0xd1,0x85),
|
||||
LL(0x0e,0x0e,0x38,0x0e,0x70,0x36,0x1c,0x7e),
|
||||
LL(0x1f,0x1f,0x7c,0x1f,0xf8,0x63,0x3e,0xe7),
|
||||
LL(0x62,0x62,0x95,0x62,0x37,0xf7,0xc4,0x55),
|
||||
LL(0xd4,0xd4,0x77,0xd4,0xee,0xa3,0xb5,0x3a),
|
||||
LL(0xa8,0xa8,0x9a,0xa8,0x29,0x32,0x4d,0x81),
|
||||
LL(0x96,0x96,0x62,0x96,0xc4,0xf4,0x31,0x52),
|
||||
LL(0xf9,0xf9,0xc3,0xf9,0x9b,0x3a,0xef,0x62),
|
||||
LL(0xc5,0xc5,0x33,0xc5,0x66,0xf6,0x97,0xa3),
|
||||
LL(0x25,0x25,0x94,0x25,0x35,0xb1,0x4a,0x10),
|
||||
LL(0x59,0x59,0x79,0x59,0xf2,0x20,0xb2,0xab),
|
||||
LL(0x84,0x84,0x2a,0x84,0x54,0xae,0x15,0xd0),
|
||||
LL(0x72,0x72,0xd5,0x72,0xb7,0xa7,0xe4,0xc5),
|
||||
LL(0x39,0x39,0xe4,0x39,0xd5,0xdd,0x72,0xec),
|
||||
LL(0x4c,0x4c,0x2d,0x4c,0x5a,0x61,0x98,0x16),
|
||||
LL(0x5e,0x5e,0x65,0x5e,0xca,0x3b,0xbc,0x94),
|
||||
LL(0x78,0x78,0xfd,0x78,0xe7,0x85,0xf0,0x9f),
|
||||
LL(0x38,0x38,0xe0,0x38,0xdd,0xd8,0x70,0xe5),
|
||||
LL(0x8c,0x8c,0x0a,0x8c,0x14,0x86,0x05,0x98),
|
||||
LL(0xd1,0xd1,0x63,0xd1,0xc6,0xb2,0xbf,0x17),
|
||||
LL(0xa5,0xa5,0xae,0xa5,0x41,0x0b,0x57,0xe4),
|
||||
LL(0xe2,0xe2,0xaf,0xe2,0x43,0x4d,0xd9,0xa1),
|
||||
LL(0x61,0x61,0x99,0x61,0x2f,0xf8,0xc2,0x4e),
|
||||
LL(0xb3,0xb3,0xf6,0xb3,0xf1,0x45,0x7b,0x42),
|
||||
LL(0x21,0x21,0x84,0x21,0x15,0xa5,0x42,0x34),
|
||||
LL(0x9c,0x9c,0x4a,0x9c,0x94,0xd6,0x25,0x08),
|
||||
LL(0x1e,0x1e,0x78,0x1e,0xf0,0x66,0x3c,0xee),
|
||||
LL(0x43,0x43,0x11,0x43,0x22,0x52,0x86,0x61),
|
||||
LL(0xc7,0xc7,0x3b,0xc7,0x76,0xfc,0x93,0xb1),
|
||||
LL(0xfc,0xfc,0xd7,0xfc,0xb3,0x2b,0xe5,0x4f),
|
||||
LL(0x04,0x04,0x10,0x04,0x20,0x14,0x08,0x24),
|
||||
LL(0x51,0x51,0x59,0x51,0xb2,0x08,0xa2,0xe3),
|
||||
LL(0x99,0x99,0x5e,0x99,0xbc,0xc7,0x2f,0x25),
|
||||
LL(0x6d,0x6d,0xa9,0x6d,0x4f,0xc4,0xda,0x22),
|
||||
LL(0x0d,0x0d,0x34,0x0d,0x68,0x39,0x1a,0x65),
|
||||
LL(0xfa,0xfa,0xcf,0xfa,0x83,0x35,0xe9,0x79),
|
||||
LL(0xdf,0xdf,0x5b,0xdf,0xb6,0x84,0xa3,0x69),
|
||||
LL(0x7e,0x7e,0xe5,0x7e,0xd7,0x9b,0xfc,0xa9),
|
||||
LL(0x24,0x24,0x90,0x24,0x3d,0xb4,0x48,0x19),
|
||||
LL(0x3b,0x3b,0xec,0x3b,0xc5,0xd7,0x76,0xfe),
|
||||
LL(0xab,0xab,0x96,0xab,0x31,0x3d,0x4b,0x9a),
|
||||
LL(0xce,0xce,0x1f,0xce,0x3e,0xd1,0x81,0xf0),
|
||||
LL(0x11,0x11,0x44,0x11,0x88,0x55,0x22,0x99),
|
||||
LL(0x8f,0x8f,0x06,0x8f,0x0c,0x89,0x03,0x83),
|
||||
LL(0x4e,0x4e,0x25,0x4e,0x4a,0x6b,0x9c,0x04),
|
||||
LL(0xb7,0xb7,0xe6,0xb7,0xd1,0x51,0x73,0x66),
|
||||
LL(0xeb,0xeb,0x8b,0xeb,0x0b,0x60,0xcb,0xe0),
|
||||
LL(0x3c,0x3c,0xf0,0x3c,0xfd,0xcc,0x78,0xc1),
|
||||
LL(0x81,0x81,0x3e,0x81,0x7c,0xbf,0x1f,0xfd),
|
||||
LL(0x94,0x94,0x6a,0x94,0xd4,0xfe,0x35,0x40),
|
||||
LL(0xf7,0xf7,0xfb,0xf7,0xeb,0x0c,0xf3,0x1c),
|
||||
LL(0xb9,0xb9,0xde,0xb9,0xa1,0x67,0x6f,0x18),
|
||||
LL(0x13,0x13,0x4c,0x13,0x98,0x5f,0x26,0x8b),
|
||||
LL(0x2c,0x2c,0xb0,0x2c,0x7d,0x9c,0x58,0x51),
|
||||
LL(0xd3,0xd3,0x6b,0xd3,0xd6,0xb8,0xbb,0x05),
|
||||
LL(0xe7,0xe7,0xbb,0xe7,0x6b,0x5c,0xd3,0x8c),
|
||||
LL(0x6e,0x6e,0xa5,0x6e,0x57,0xcb,0xdc,0x39),
|
||||
LL(0xc4,0xc4,0x37,0xc4,0x6e,0xf3,0x95,0xaa),
|
||||
LL(0x03,0x03,0x0c,0x03,0x18,0x0f,0x06,0x1b),
|
||||
LL(0x56,0x56,0x45,0x56,0x8a,0x13,0xac,0xdc),
|
||||
LL(0x44,0x44,0x0d,0x44,0x1a,0x49,0x88,0x5e),
|
||||
LL(0x7f,0x7f,0xe1,0x7f,0xdf,0x9e,0xfe,0xa0),
|
||||
LL(0xa9,0xa9,0x9e,0xa9,0x21,0x37,0x4f,0x88),
|
||||
LL(0x2a,0x2a,0xa8,0x2a,0x4d,0x82,0x54,0x67),
|
||||
LL(0xbb,0xbb,0xd6,0xbb,0xb1,0x6d,0x6b,0x0a),
|
||||
LL(0xc1,0xc1,0x23,0xc1,0x46,0xe2,0x9f,0x87),
|
||||
LL(0x53,0x53,0x51,0x53,0xa2,0x02,0xa6,0xf1),
|
||||
LL(0xdc,0xdc,0x57,0xdc,0xae,0x8b,0xa5,0x72),
|
||||
LL(0x0b,0x0b,0x2c,0x0b,0x58,0x27,0x16,0x53),
|
||||
LL(0x9d,0x9d,0x4e,0x9d,0x9c,0xd3,0x27,0x01),
|
||||
LL(0x6c,0x6c,0xad,0x6c,0x47,0xc1,0xd8,0x2b),
|
||||
LL(0x31,0x31,0xc4,0x31,0x95,0xf5,0x62,0xa4),
|
||||
LL(0x74,0x74,0xcd,0x74,0x87,0xb9,0xe8,0xf3),
|
||||
LL(0xf6,0xf6,0xff,0xf6,0xe3,0x09,0xf1,0x15),
|
||||
LL(0x46,0x46,0x05,0x46,0x0a,0x43,0x8c,0x4c),
|
||||
LL(0xac,0xac,0x8a,0xac,0x09,0x26,0x45,0xa5),
|
||||
LL(0x89,0x89,0x1e,0x89,0x3c,0x97,0x0f,0xb5),
|
||||
LL(0x14,0x14,0x50,0x14,0xa0,0x44,0x28,0xb4),
|
||||
LL(0xe1,0xe1,0xa3,0xe1,0x5b,0x42,0xdf,0xba),
|
||||
LL(0x16,0x16,0x58,0x16,0xb0,0x4e,0x2c,0xa6),
|
||||
LL(0x3a,0x3a,0xe8,0x3a,0xcd,0xd2,0x74,0xf7),
|
||||
LL(0x69,0x69,0xb9,0x69,0x6f,0xd0,0xd2,0x06),
|
||||
LL(0x09,0x09,0x24,0x09,0x48,0x2d,0x12,0x41),
|
||||
LL(0x70,0x70,0xdd,0x70,0xa7,0xad,0xe0,0xd7),
|
||||
LL(0xb6,0xb6,0xe2,0xb6,0xd9,0x54,0x71,0x6f),
|
||||
LL(0xd0,0xd0,0x67,0xd0,0xce,0xb7,0xbd,0x1e),
|
||||
LL(0xed,0xed,0x93,0xed,0x3b,0x7e,0xc7,0xd6),
|
||||
LL(0xcc,0xcc,0x17,0xcc,0x2e,0xdb,0x85,0xe2),
|
||||
LL(0x42,0x42,0x15,0x42,0x2a,0x57,0x84,0x68),
|
||||
LL(0x98,0x98,0x5a,0x98,0xb4,0xc2,0x2d,0x2c),
|
||||
LL(0xa4,0xa4,0xaa,0xa4,0x49,0x0e,0x55,0xed),
|
||||
LL(0x28,0x28,0xa0,0x28,0x5d,0x88,0x50,0x75),
|
||||
LL(0x5c,0x5c,0x6d,0x5c,0xda,0x31,0xb8,0x86),
|
||||
LL(0xf8,0xf8,0xc7,0xf8,0x93,0x3f,0xed,0x6b),
|
||||
LL(0x86,0x86,0x22,0x86,0x44,0xa4,0x11,0xc2),
|
||||
#define RC (&(Cx.q[256*N]))
|
||||
0x18,0x23,0xc6,0xe8,0x87,0xb8,0x01,0x4f, /* rc[ROUNDS] */
|
||||
0x36,0xa6,0xd2,0xf5,0x79,0x6f,0x91,0x52,
|
||||
0x60,0xbc,0x9b,0x8e,0xa3,0x0c,0x7b,0x35,
|
||||
0x1d,0xe0,0xd7,0xc2,0x2e,0x4b,0xfe,0x57,
|
||||
0x15,0x77,0x37,0xe5,0x9f,0xf0,0x4a,0xda,
|
||||
0x58,0xc9,0x29,0x0a,0xb1,0xa0,0x6b,0x85,
|
||||
0xbd,0x5d,0x10,0xf4,0xcb,0x3e,0x05,0x67,
|
||||
0xe4,0x27,0x41,0x8b,0xa7,0x7d,0x95,0xd8,
|
||||
0xfb,0xee,0x7c,0x66,0xdd,0x17,0x47,0x9e,
|
||||
0xca,0x2d,0xbf,0x07,0xad,0x5a,0x83,0x33
|
||||
}
|
||||
};
|
||||
|
||||
void whirlpool_block(WHIRLPOOL_CTX *ctx,const void *inp,size_t n)
|
||||
{
|
||||
int r;
|
||||
const u8 *p=inp;
|
||||
union { u64 q[8]; u8 c[64]; } S,K,*H=(void *)ctx->H.q;
|
||||
|
||||
#ifdef GO_FOR_MMX
|
||||
GO_FOR_MMX(ctx,inp,n);
|
||||
#endif
|
||||
do {
|
||||
#ifdef OPENSSL_SMALL_FOOTPRINT
|
||||
u64 L[8];
|
||||
int i;
|
||||
|
||||
for (i=0;i<64;i++) S.c[i] = (K.c[i] = H->c[i]) ^ p[i];
|
||||
for (r=0;r<ROUNDS;r++)
|
||||
{
|
||||
for (i=0;i<8;i++)
|
||||
{
|
||||
L[i] = i ? 0 : RC[r];
|
||||
L[i] ^= C0(K,i) ^ C1(K,(i-1)&7) ^
|
||||
C2(K,(i-2)&7) ^ C3(K,(i-3)&7) ^
|
||||
C4(K,(i-4)&7) ^ C5(K,(i-5)&7) ^
|
||||
C6(K,(i-6)&7) ^ C7(K,(i-7)&7);
|
||||
}
|
||||
memcpy (K.q,L,64);
|
||||
for (i=0;i<8;i++)
|
||||
{
|
||||
L[i] ^= C0(S,i) ^ C1(S,(i-1)&7) ^
|
||||
C2(S,(i-2)&7) ^ C3(S,(i-3)&7) ^
|
||||
C4(S,(i-4)&7) ^ C5(S,(i-5)&7) ^
|
||||
C6(S,(i-6)&7) ^ C7(S,(i-7)&7);
|
||||
}
|
||||
memcpy (S.q,L,64);
|
||||
}
|
||||
for (i=0;i<64;i++) H->c[i] ^= S.c[i] ^ p[i];
|
||||
#else
|
||||
u64 L0,L1,L2,L3,L4,L5,L6,L7;
|
||||
|
||||
#ifdef __STRICT_ALIGNMENT
|
||||
if ((size_t)p & 7)
|
||||
{
|
||||
memcpy (S.c,p,64);
|
||||
S.q[0] ^= (K.q[0] = H->q[0]);
|
||||
S.q[1] ^= (K.q[1] = H->q[1]);
|
||||
S.q[2] ^= (K.q[2] = H->q[2]);
|
||||
S.q[3] ^= (K.q[3] = H->q[3]);
|
||||
S.q[4] ^= (K.q[4] = H->q[4]);
|
||||
S.q[5] ^= (K.q[5] = H->q[5]);
|
||||
S.q[6] ^= (K.q[6] = H->q[6]);
|
||||
S.q[7] ^= (K.q[7] = H->q[7]);
|
||||
}
|
||||
else
|
||||
#endif
|
||||
{
|
||||
const u64 *pa = (const u64*)p;
|
||||
S.q[0] = (K.q[0] = H->q[0]) ^ pa[0];
|
||||
S.q[1] = (K.q[1] = H->q[1]) ^ pa[1];
|
||||
S.q[2] = (K.q[2] = H->q[2]) ^ pa[2];
|
||||
S.q[3] = (K.q[3] = H->q[3]) ^ pa[3];
|
||||
S.q[4] = (K.q[4] = H->q[4]) ^ pa[4];
|
||||
S.q[5] = (K.q[5] = H->q[5]) ^ pa[5];
|
||||
S.q[6] = (K.q[6] = H->q[6]) ^ pa[6];
|
||||
S.q[7] = (K.q[7] = H->q[7]) ^ pa[7];
|
||||
}
|
||||
|
||||
for(r=0;r<ROUNDS;r++)
|
||||
{
|
||||
#ifdef SMALL_REGISTER_BANK
|
||||
L0 = C0(K,0) ^ C1(K,7) ^ C2(K,6) ^ C3(K,5) ^
|
||||
C4(K,4) ^ C5(K,3) ^ C6(K,2) ^ C7(K,1) ^ RC[r];
|
||||
L1 = C0(K,1) ^ C1(K,0) ^ C2(K,7) ^ C3(K,6) ^
|
||||
C4(K,5) ^ C5(K,4) ^ C6(K,3) ^ C7(K,2);
|
||||
L2 = C0(K,2) ^ C1(K,1) ^ C2(K,0) ^ C3(K,7) ^
|
||||
C4(K,6) ^ C5(K,5) ^ C6(K,4) ^ C7(K,3);
|
||||
L3 = C0(K,3) ^ C1(K,2) ^ C2(K,1) ^ C3(K,0) ^
|
||||
C4(K,7) ^ C5(K,6) ^ C6(K,5) ^ C7(K,4);
|
||||
L4 = C0(K,4) ^ C1(K,3) ^ C2(K,2) ^ C3(K,1) ^
|
||||
C4(K,0) ^ C5(K,7) ^ C6(K,6) ^ C7(K,5);
|
||||
L5 = C0(K,5) ^ C1(K,4) ^ C2(K,3) ^ C3(K,2) ^
|
||||
C4(K,1) ^ C5(K,0) ^ C6(K,7) ^ C7(K,6);
|
||||
L6 = C0(K,6) ^ C1(K,5) ^ C2(K,4) ^ C3(K,3) ^
|
||||
C4(K,2) ^ C5(K,1) ^ C6(K,0) ^ C7(K,7);
|
||||
L7 = C0(K,7) ^ C1(K,6) ^ C2(K,5) ^ C3(K,4) ^
|
||||
C4(K,3) ^ C5(K,2) ^ C6(K,1) ^ C7(K,0);
|
||||
|
||||
K.q[0] = L0; K.q[1] = L1; K.q[2] = L2; K.q[3] = L3;
|
||||
K.q[4] = L4; K.q[5] = L5; K.q[6] = L6; K.q[7] = L7;
|
||||
|
||||
L0 ^= C0(S,0) ^ C1(S,7) ^ C2(S,6) ^ C3(S,5) ^
|
||||
C4(S,4) ^ C5(S,3) ^ C6(S,2) ^ C7(S,1);
|
||||
L1 ^= C0(S,1) ^ C1(S,0) ^ C2(S,7) ^ C3(S,6) ^
|
||||
C4(S,5) ^ C5(S,4) ^ C6(S,3) ^ C7(S,2);
|
||||
L2 ^= C0(S,2) ^ C1(S,1) ^ C2(S,0) ^ C3(S,7) ^
|
||||
C4(S,6) ^ C5(S,5) ^ C6(S,4) ^ C7(S,3);
|
||||
L3 ^= C0(S,3) ^ C1(S,2) ^ C2(S,1) ^ C3(S,0) ^
|
||||
C4(S,7) ^ C5(S,6) ^ C6(S,5) ^ C7(S,4);
|
||||
L4 ^= C0(S,4) ^ C1(S,3) ^ C2(S,2) ^ C3(S,1) ^
|
||||
C4(S,0) ^ C5(S,7) ^ C6(S,6) ^ C7(S,5);
|
||||
L5 ^= C0(S,5) ^ C1(S,4) ^ C2(S,3) ^ C3(S,2) ^
|
||||
C4(S,1) ^ C5(S,0) ^ C6(S,7) ^ C7(S,6);
|
||||
L6 ^= C0(S,6) ^ C1(S,5) ^ C2(S,4) ^ C3(S,3) ^
|
||||
C4(S,2) ^ C5(S,1) ^ C6(S,0) ^ C7(S,7);
|
||||
L7 ^= C0(S,7) ^ C1(S,6) ^ C2(S,5) ^ C3(S,4) ^
|
||||
C4(S,3) ^ C5(S,2) ^ C6(S,1) ^ C7(S,0);
|
||||
|
||||
S.q[0] = L0; S.q[1] = L1; S.q[2] = L2; S.q[3] = L3;
|
||||
S.q[4] = L4; S.q[5] = L5; S.q[6] = L6; S.q[7] = L7;
|
||||
#else
|
||||
L0 = C0(K,0); L1 = C1(K,0); L2 = C2(K,0); L3 = C3(K,0);
|
||||
L4 = C4(K,0); L5 = C5(K,0); L6 = C6(K,0); L7 = C7(K,0);
|
||||
L0 ^= RC[r];
|
||||
|
||||
L1 ^= C0(K,1); L2 ^= C1(K,1); L3 ^= C2(K,1); L4 ^= C3(K,1);
|
||||
L5 ^= C4(K,1); L6 ^= C5(K,1); L7 ^= C6(K,1); L0 ^= C7(K,1);
|
||||
|
||||
L2 ^= C0(K,2); L3 ^= C1(K,2); L4 ^= C2(K,2); L5 ^= C3(K,2);
|
||||
L6 ^= C4(K,2); L7 ^= C5(K,2); L0 ^= C6(K,2); L1 ^= C7(K,2);
|
||||
|
||||
L3 ^= C0(K,3); L4 ^= C1(K,3); L5 ^= C2(K,3); L6 ^= C3(K,3);
|
||||
L7 ^= C4(K,3); L0 ^= C5(K,3); L1 ^= C6(K,3); L2 ^= C7(K,3);
|
||||
|
||||
L4 ^= C0(K,4); L5 ^= C1(K,4); L6 ^= C2(K,4); L7 ^= C3(K,4);
|
||||
L0 ^= C4(K,4); L1 ^= C5(K,4); L2 ^= C6(K,4); L3 ^= C7(K,4);
|
||||
|
||||
L5 ^= C0(K,5); L6 ^= C1(K,5); L7 ^= C2(K,5); L0 ^= C3(K,5);
|
||||
L1 ^= C4(K,5); L2 ^= C5(K,5); L3 ^= C6(K,5); L4 ^= C7(K,5);
|
||||
|
||||
L6 ^= C0(K,6); L7 ^= C1(K,6); L0 ^= C2(K,6); L1 ^= C3(K,6);
|
||||
L2 ^= C4(K,6); L3 ^= C5(K,6); L4 ^= C6(K,6); L5 ^= C7(K,6);
|
||||
|
||||
L7 ^= C0(K,7); L0 ^= C1(K,7); L1 ^= C2(K,7); L2 ^= C3(K,7);
|
||||
L3 ^= C4(K,7); L4 ^= C5(K,7); L5 ^= C6(K,7); L6 ^= C7(K,7);
|
||||
|
||||
K.q[0] = L0; K.q[1] = L1; K.q[2] = L2; K.q[3] = L3;
|
||||
K.q[4] = L4; K.q[5] = L5; K.q[6] = L6; K.q[7] = L7;
|
||||
|
||||
L0 ^= C0(S,0); L1 ^= C1(S,0); L2 ^= C2(S,0); L3 ^= C3(S,0);
|
||||
L4 ^= C4(S,0); L5 ^= C5(S,0); L6 ^= C6(S,0); L7 ^= C7(S,0);
|
||||
|
||||
L1 ^= C0(S,1); L2 ^= C1(S,1); L3 ^= C2(S,1); L4 ^= C3(S,1);
|
||||
L5 ^= C4(S,1); L6 ^= C5(S,1); L7 ^= C6(S,1); L0 ^= C7(S,1);
|
||||
|
||||
L2 ^= C0(S,2); L3 ^= C1(S,2); L4 ^= C2(S,2); L5 ^= C3(S,2);
|
||||
L6 ^= C4(S,2); L7 ^= C5(S,2); L0 ^= C6(S,2); L1 ^= C7(S,2);
|
||||
|
||||
L3 ^= C0(S,3); L4 ^= C1(S,3); L5 ^= C2(S,3); L6 ^= C3(S,3);
|
||||
L7 ^= C4(S,3); L0 ^= C5(S,3); L1 ^= C6(S,3); L2 ^= C7(S,3);
|
||||
|
||||
L4 ^= C0(S,4); L5 ^= C1(S,4); L6 ^= C2(S,4); L7 ^= C3(S,4);
|
||||
L0 ^= C4(S,4); L1 ^= C5(S,4); L2 ^= C6(S,4); L3 ^= C7(S,4);
|
||||
|
||||
L5 ^= C0(S,5); L6 ^= C1(S,5); L7 ^= C2(S,5); L0 ^= C3(S,5);
|
||||
L1 ^= C4(S,5); L2 ^= C5(S,5); L3 ^= C6(S,5); L4 ^= C7(S,5);
|
||||
|
||||
L6 ^= C0(S,6); L7 ^= C1(S,6); L0 ^= C2(S,6); L1 ^= C3(S,6);
|
||||
L2 ^= C4(S,6); L3 ^= C5(S,6); L4 ^= C6(S,6); L5 ^= C7(S,6);
|
||||
|
||||
L7 ^= C0(S,7); L0 ^= C1(S,7); L1 ^= C2(S,7); L2 ^= C3(S,7);
|
||||
L3 ^= C4(S,7); L4 ^= C5(S,7); L5 ^= C6(S,7); L6 ^= C7(S,7);
|
||||
|
||||
S.q[0] = L0; S.q[1] = L1; S.q[2] = L2; S.q[3] = L3;
|
||||
S.q[4] = L4; S.q[5] = L5; S.q[6] = L6; S.q[7] = L7;
|
||||
#endif
|
||||
}
|
||||
|
||||
#ifdef __STRICT_ALIGNMENT
|
||||
if ((size_t)p & 7)
|
||||
{
|
||||
int i;
|
||||
for(i=0;i<64;i++) H->c[i] ^= S.c[i] ^ p[i];
|
||||
}
|
||||
else
|
||||
#endif
|
||||
{
|
||||
const u64 *pa=(const u64 *)p;
|
||||
H->q[0] ^= S.q[0] ^ pa[0];
|
||||
H->q[1] ^= S.q[1] ^ pa[1];
|
||||
H->q[2] ^= S.q[2] ^ pa[2];
|
||||
H->q[3] ^= S.q[3] ^ pa[3];
|
||||
H->q[4] ^= S.q[4] ^ pa[4];
|
||||
H->q[5] ^= S.q[5] ^ pa[5];
|
||||
H->q[6] ^= S.q[6] ^ pa[6];
|
||||
H->q[7] ^= S.q[7] ^ pa[7];
|
||||
}
|
||||
#endif
|
||||
p += 64;
|
||||
} while(--n);
|
||||
}
|
||||
|
||||
int
|
||||
WHIRLPOOL_Init(WHIRLPOOL_CTX *c)
|
||||
{
|
||||
memset (c, 0, sizeof(*c));
|
||||
return (1);
|
||||
}
|
||||
LCRYPTO_ALIAS(WHIRLPOOL_Init);
|
||||
|
||||
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);
|
||||
const unsigned char *inp = _inp;
|
||||
|
||||
while (bytes >= chunk) {
|
||||
WHIRLPOOL_BitUpdate(c, inp, chunk*8);
|
||||
bytes -= chunk;
|
||||
inp += chunk;
|
||||
}
|
||||
if (bytes)
|
||||
WHIRLPOOL_BitUpdate(c, inp, bytes*8);
|
||||
|
||||
return (1);
|
||||
}
|
||||
LCRYPTO_ALIAS(WHIRLPOOL_Update);
|
||||
|
||||
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;
|
||||
|
||||
/* 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)));
|
||||
}
|
||||
|
||||
#ifndef OPENSSL_SMALL_FOOTPRINT
|
||||
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;
|
||||
bits %= WHIRLPOOL_BBLOCK;
|
||||
} else {
|
||||
unsigned int byteoff = bitoff/8;
|
||||
|
||||
bitrem = WHIRLPOOL_BBLOCK - bitoff;/* re-use bitrem */
|
||||
if (bits >= bitrem) {
|
||||
bits -= bitrem;
|
||||
bitrem /= 8;
|
||||
memcpy(c->data + byteoff, inp, bitrem);
|
||||
inp += bitrem;
|
||||
whirlpool_block(c, c->data, 1);
|
||||
bitoff = 0;
|
||||
} else {
|
||||
memcpy(c->data + byteoff, inp, bits/8);
|
||||
bitoff += (unsigned int)bits;
|
||||
bits = 0;
|
||||
}
|
||||
c->bitoff = bitoff;
|
||||
}
|
||||
}
|
||||
}
|
||||
else /* bit-oriented loop */
|
||||
#endif
|
||||
{
|
||||
/*
|
||||
inp
|
||||
|
|
||||
+-------+-------+-------
|
||||
|||||||||||||||||||||
|
||||
+-------+-------+-------
|
||||
+-------+-------+-------+-------+-------
|
||||
|||||||||||||| c->data
|
||||
+-------+-------+-------+-------+-------
|
||||
|
|
||||
c->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;
|
||||
bitoff += inpgap; bitrem = 0; /* bitoff%8 */
|
||||
bits -= inpgap; inpgap = 0; /* bits%8 */
|
||||
inp++;
|
||||
if (bitoff == WHIRLPOOL_BBLOCK) {
|
||||
whirlpool_block(c, c->data, 1);
|
||||
bitoff = 0;
|
||||
}
|
||||
c->bitoff = bitoff;
|
||||
goto reconsider;
|
||||
} else
|
||||
#endif
|
||||
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;
|
||||
bitoff += 8;
|
||||
bits -= 8;
|
||||
inp++;
|
||||
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;
|
||||
}
|
||||
}
|
||||
}
|
||||
LCRYPTO_ALIAS(WHIRLPOOL_BitUpdate);
|
||||
|
||||
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;
|
||||
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);
|
||||
byteoff = 0;
|
||||
}
|
||||
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)
|
||||
*p-- = (unsigned char)(v&0xff);
|
||||
|
||||
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);
|
||||
}
|
||||
LCRYPTO_ALIAS(WHIRLPOOL_Final);
|
||||
|
||||
unsigned char *
|
||||
WHIRLPOOL(const void *inp, size_t bytes, unsigned char *md)
|
||||
{
|
||||
WHIRLPOOL_CTX ctx;
|
||||
|
||||
WHIRLPOOL_Init(&ctx);
|
||||
WHIRLPOOL_Update(&ctx, inp, bytes);
|
||||
WHIRLPOOL_Final(md, &ctx);
|
||||
return (md);
|
||||
}
|
||||
LCRYPTO_ALIAS(WHIRLPOOL);
|
|
@ -1,48 +0,0 @@
|
|||
/* $OpenBSD: whrlpool.h,v 1.8 2024/06/01 17:56:44 tb Exp $ */
|
||||
|
||||
#include <stddef.h>
|
||||
|
||||
#ifndef HEADER_WHRLPOOL_H
|
||||
#define HEADER_WHRLPOOL_H
|
||||
|
||||
#if !defined(HAVE_ATTRIBUTE__BOUNDED__) && !defined(__OpenBSD__)
|
||||
#define __bounded__(x, y, z)
|
||||
#endif
|
||||
|
||||
#include <openssl/opensslconf.h>
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
#define WHIRLPOOL_DIGEST_LENGTH (512/8)
|
||||
#define WHIRLPOOL_BBLOCK 512
|
||||
#define WHIRLPOOL_COUNTER (256/8)
|
||||
|
||||
typedef struct {
|
||||
union {
|
||||
unsigned char c[WHIRLPOOL_DIGEST_LENGTH];
|
||||
/* double q is here to ensure 64-bit alignment */
|
||||
double q[WHIRLPOOL_DIGEST_LENGTH/sizeof(double)];
|
||||
} H;
|
||||
unsigned char data[WHIRLPOOL_BBLOCK/8];
|
||||
unsigned int bitoff;
|
||||
size_t bitlen[WHIRLPOOL_COUNTER/sizeof(size_t)];
|
||||
} WHIRLPOOL_CTX;
|
||||
|
||||
#ifndef OPENSSL_NO_WHIRLPOOL
|
||||
int WHIRLPOOL_Init (WHIRLPOOL_CTX *c);
|
||||
int WHIRLPOOL_Update (WHIRLPOOL_CTX *c,const void *inp,size_t bytes)
|
||||
__attribute__ ((__bounded__(__buffer__, 2, 3)));
|
||||
void WHIRLPOOL_BitUpdate(WHIRLPOOL_CTX *c,const void *inp,size_t bits);
|
||||
int WHIRLPOOL_Final (unsigned char *md,WHIRLPOOL_CTX *c);
|
||||
unsigned char *WHIRLPOOL(const void *inp,size_t bytes,unsigned char *md)
|
||||
__attribute__ ((__bounded__(__buffer__, 1, 2)))
|
||||
__attribute__ ((__nonnull__(3)));
|
||||
#endif
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif
|
|
@ -1,4 +1,4 @@
|
|||
/* $OpenBSD: by_dir.c,v 1.47 2024/03/25 00:05:49 beck Exp $ */
|
||||
/* $OpenBSD: by_dir.c,v 1.48 2024/08/31 10:19:17 tb Exp $ */
|
||||
/* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com)
|
||||
* All rights reserved.
|
||||
*
|
||||
|
@ -96,7 +96,7 @@ static int add_cert_dir(BY_DIR *ctx, const char *dir, int type);
|
|||
static int get_cert_by_subject(X509_LOOKUP *xl, int type, X509_NAME *name,
|
||||
X509_OBJECT *ret);
|
||||
|
||||
static X509_LOOKUP_METHOD x509_dir_lookup = {
|
||||
static const X509_LOOKUP_METHOD x509_dir_lookup = {
|
||||
.name = "Load certs from files in a directory",
|
||||
.new_item = new_dir,
|
||||
.free = free_dir,
|
||||
|
@ -104,7 +104,7 @@ static X509_LOOKUP_METHOD x509_dir_lookup = {
|
|||
.get_by_subject = get_cert_by_subject,
|
||||
};
|
||||
|
||||
X509_LOOKUP_METHOD *
|
||||
const X509_LOOKUP_METHOD *
|
||||
X509_LOOKUP_hash_dir(void)
|
||||
{
|
||||
return &x509_dir_lookup;
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
/* $OpenBSD: by_file.c,v 1.30 2023/12/25 22:14:23 tb Exp $ */
|
||||
/* $OpenBSD: by_file.c,v 1.31 2024/08/31 10:19:17 tb Exp $ */
|
||||
/* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com)
|
||||
* All rights reserved.
|
||||
*
|
||||
|
@ -71,7 +71,7 @@
|
|||
static int by_file_ctrl(X509_LOOKUP *ctx, int cmd, const char *argc,
|
||||
long argl, char **ret);
|
||||
|
||||
static X509_LOOKUP_METHOD x509_file_lookup = {
|
||||
static const X509_LOOKUP_METHOD x509_file_lookup = {
|
||||
.name = "Load file into cache",
|
||||
.new_item = NULL,
|
||||
.free = NULL,
|
||||
|
@ -79,7 +79,7 @@ static X509_LOOKUP_METHOD x509_file_lookup = {
|
|||
.get_by_subject = NULL,
|
||||
};
|
||||
|
||||
X509_LOOKUP_METHOD *
|
||||
const X509_LOOKUP_METHOD *
|
||||
X509_LOOKUP_file(void)
|
||||
{
|
||||
return &x509_file_lookup;
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
/* $OpenBSD: by_mem.c,v 1.9 2023/12/25 22:14:23 tb Exp $ */
|
||||
/* $OpenBSD: by_mem.c,v 1.10 2024/08/31 10:19:17 tb Exp $ */
|
||||
/* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com)
|
||||
* All rights reserved.
|
||||
*
|
||||
|
@ -72,7 +72,7 @@
|
|||
|
||||
static int by_mem_ctrl(X509_LOOKUP *, int, const char *, long, char **);
|
||||
|
||||
static X509_LOOKUP_METHOD x509_mem_lookup = {
|
||||
static const X509_LOOKUP_METHOD x509_mem_lookup = {
|
||||
.name = "Load cert from memory",
|
||||
.new_item = NULL,
|
||||
.free = NULL,
|
||||
|
@ -80,7 +80,7 @@ static X509_LOOKUP_METHOD x509_mem_lookup = {
|
|||
.get_by_subject = NULL,
|
||||
};
|
||||
|
||||
X509_LOOKUP_METHOD *
|
||||
const X509_LOOKUP_METHOD *
|
||||
X509_LOOKUP_mem(void)
|
||||
{
|
||||
return (&x509_mem_lookup);
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
/* $OpenBSD: x509.h,v 1.113 2024/08/28 07:15:04 tb Exp $ */
|
||||
/* $OpenBSD: x509.h,v 1.119 2024/08/31 10:49:35 tb Exp $ */
|
||||
/* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com)
|
||||
* All rights reserved.
|
||||
*
|
||||
|
@ -122,10 +122,7 @@ struct X509_algor_st {
|
|||
|
||||
typedef STACK_OF(X509_ALGOR) X509_ALGORS;
|
||||
|
||||
typedef struct X509_val_st {
|
||||
ASN1_TIME *notBefore;
|
||||
ASN1_TIME *notAfter;
|
||||
} X509_VAL;
|
||||
typedef struct X509_val_st X509_VAL;
|
||||
|
||||
typedef struct X509_sig_st X509_SIG;
|
||||
|
||||
|
@ -153,11 +150,6 @@ typedef struct x509_cinf_st X509_CINF;
|
|||
|
||||
DECLARE_STACK_OF(X509)
|
||||
|
||||
/* standard trust ids */
|
||||
|
||||
/* OpenSSL changed this to 0 */
|
||||
#define X509_TRUST_DEFAULT -1 /* Only valid in purpose settings */
|
||||
|
||||
#define X509_TRUST_COMPAT 1
|
||||
#define X509_TRUST_SSL_CLIENT 2
|
||||
#define X509_TRUST_SSL_SERVER 3
|
||||
|
@ -171,17 +163,6 @@ DECLARE_STACK_OF(X509)
|
|||
#define X509_TRUST_MIN 1
|
||||
#define X509_TRUST_MAX 8
|
||||
|
||||
|
||||
/* trust_flags values */
|
||||
#define X509_TRUST_DYNAMIC 1
|
||||
#define X509_TRUST_DYNAMIC_NAME 2
|
||||
|
||||
/* check_trust return codes */
|
||||
|
||||
#define X509_TRUST_TRUSTED 1
|
||||
#define X509_TRUST_REJECTED 2
|
||||
#define X509_TRUST_UNTRUSTED 3
|
||||
|
||||
/* Flags for X509_print_ex() */
|
||||
|
||||
#define X509_FLAG_COMPAT 0
|
||||
|
@ -622,13 +603,11 @@ X509 * d2i_X509_AUX(X509 **a,const unsigned char **pp,long length);
|
|||
|
||||
int i2d_re_X509_tbs(X509 *x, unsigned char **pp);
|
||||
|
||||
#if defined(LIBRESSL_INTERNAL) || defined(LIBRESSL_NEXT_API)
|
||||
/* Flags returned by X509_get_signature_info(): valid and suitable for TLS. */
|
||||
#define X509_SIG_INFO_VALID 1
|
||||
#define X509_SIG_INFO_TLS 2
|
||||
int X509_get_signature_info(X509 *x, int *mdnid, int *pknid, int *secbits,
|
||||
uint32_t *flags);
|
||||
#endif
|
||||
|
||||
void X509_get0_signature(const ASN1_BIT_STRING **psig,
|
||||
const X509_ALGOR **palg, const X509 *x);
|
||||
|
@ -740,8 +719,6 @@ EVP_PKEY * X509_REQ_get_pubkey(X509_REQ *req);
|
|||
int i2d_re_X509_REQ_tbs(X509_REQ *req, unsigned char **pp);
|
||||
EVP_PKEY * X509_REQ_get0_pubkey(X509_REQ *req);
|
||||
int X509_REQ_extension_nid(int nid);
|
||||
int * X509_REQ_get_extension_nids(void);
|
||||
void X509_REQ_set_extension_nids(int *nids);
|
||||
STACK_OF(X509_EXTENSION) *X509_REQ_get_extensions(X509_REQ *req);
|
||||
int X509_REQ_add_extensions_nid(X509_REQ *req, STACK_OF(X509_EXTENSION) *exts,
|
||||
int nid);
|
||||
|
@ -927,26 +904,6 @@ ASN1_OBJECT * X509_EXTENSION_get_object(X509_EXTENSION *ex);
|
|||
ASN1_OCTET_STRING *X509_EXTENSION_get_data(X509_EXTENSION *ne);
|
||||
int X509_EXTENSION_get_critical(const X509_EXTENSION *ex);
|
||||
|
||||
int X509at_get_attr_count(const STACK_OF(X509_ATTRIBUTE) *x);
|
||||
int X509at_get_attr_by_NID(const STACK_OF(X509_ATTRIBUTE) *x, int nid,
|
||||
int lastpos);
|
||||
int X509at_get_attr_by_OBJ(const STACK_OF(X509_ATTRIBUTE) *sk,
|
||||
const ASN1_OBJECT *obj, int lastpos);
|
||||
X509_ATTRIBUTE *X509at_get_attr(const STACK_OF(X509_ATTRIBUTE) *x, int loc);
|
||||
X509_ATTRIBUTE *X509at_delete_attr(STACK_OF(X509_ATTRIBUTE) *x, int loc);
|
||||
STACK_OF(X509_ATTRIBUTE) *X509at_add1_attr(STACK_OF(X509_ATTRIBUTE) **x,
|
||||
X509_ATTRIBUTE *attr);
|
||||
STACK_OF(X509_ATTRIBUTE) *X509at_add1_attr_by_OBJ(STACK_OF(X509_ATTRIBUTE) **x,
|
||||
const ASN1_OBJECT *obj, int type,
|
||||
const unsigned char *bytes, int len);
|
||||
STACK_OF(X509_ATTRIBUTE) *X509at_add1_attr_by_NID(STACK_OF(X509_ATTRIBUTE) **x,
|
||||
int nid, int type,
|
||||
const unsigned char *bytes, int len);
|
||||
STACK_OF(X509_ATTRIBUTE) *X509at_add1_attr_by_txt(STACK_OF(X509_ATTRIBUTE) **x,
|
||||
const char *attrname, int type,
|
||||
const unsigned char *bytes, int len);
|
||||
void *X509at_get0_data_by_OBJ(STACK_OF(X509_ATTRIBUTE) *x,
|
||||
const ASN1_OBJECT *obj, int lastpos, int type);
|
||||
X509_ATTRIBUTE *X509_ATTRIBUTE_create_by_NID(X509_ATTRIBUTE **attr, int nid,
|
||||
int atrtype, const void *data, int len);
|
||||
X509_ATTRIBUTE *X509_ATTRIBUTE_create_by_OBJ(X509_ATTRIBUTE **attr,
|
||||
|
@ -961,24 +918,6 @@ int X509_ATTRIBUTE_count(const X509_ATTRIBUTE *attr);
|
|||
ASN1_OBJECT *X509_ATTRIBUTE_get0_object(X509_ATTRIBUTE *attr);
|
||||
ASN1_TYPE *X509_ATTRIBUTE_get0_type(X509_ATTRIBUTE *attr, int idx);
|
||||
|
||||
int EVP_PKEY_get_attr_count(const EVP_PKEY *key);
|
||||
int EVP_PKEY_get_attr_by_NID(const EVP_PKEY *key, int nid,
|
||||
int lastpos);
|
||||
int EVP_PKEY_get_attr_by_OBJ(const EVP_PKEY *key, const ASN1_OBJECT *obj,
|
||||
int lastpos);
|
||||
X509_ATTRIBUTE *EVP_PKEY_get_attr(const EVP_PKEY *key, int loc);
|
||||
X509_ATTRIBUTE *EVP_PKEY_delete_attr(EVP_PKEY *key, int loc);
|
||||
int EVP_PKEY_add1_attr(EVP_PKEY *key, X509_ATTRIBUTE *attr);
|
||||
int EVP_PKEY_add1_attr_by_OBJ(EVP_PKEY *key,
|
||||
const ASN1_OBJECT *obj, int type,
|
||||
const unsigned char *bytes, int len);
|
||||
int EVP_PKEY_add1_attr_by_NID(EVP_PKEY *key,
|
||||
int nid, int type,
|
||||
const unsigned char *bytes, int len);
|
||||
int EVP_PKEY_add1_attr_by_txt(EVP_PKEY *key,
|
||||
const char *attrname, int type,
|
||||
const unsigned char *bytes, int len);
|
||||
|
||||
int X509_verify_cert(X509_STORE_CTX *ctx);
|
||||
|
||||
/* lookup a cert from a X509 STACK */
|
||||
|
@ -1013,8 +952,6 @@ int X509_PUBKEY_set0_param(X509_PUBKEY *pub, ASN1_OBJECT *aobj, int ptype,
|
|||
int X509_PUBKEY_get0_param(ASN1_OBJECT **ppkalg, const unsigned char **pk,
|
||||
int *ppklen, X509_ALGOR **pa, X509_PUBKEY *pub);
|
||||
|
||||
int X509_check_trust(X509 *x, int id, int flags);
|
||||
|
||||
int X509_up_ref(X509 *x);
|
||||
STACK_OF(X509) *X509_chain_up_ref(STACK_OF(X509) *chain);
|
||||
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
/* $OpenBSD: x509_akey.c,v 1.2 2024/07/13 15:08:58 tb Exp $ */
|
||||
/* $OpenBSD: x509_akey.c,v 1.3 2024/08/31 10:03:03 tb Exp $ */
|
||||
/* Written by Dr Stephen N Henson (steve@openssl.org) for the OpenSSL
|
||||
* project 1999.
|
||||
*/
|
||||
|
@ -65,6 +65,8 @@
|
|||
#include <openssl/err.h>
|
||||
#include <openssl/x509v3.h>
|
||||
|
||||
#include "x509_local.h"
|
||||
|
||||
static STACK_OF(CONF_VALUE) *i2v_AUTHORITY_KEYID(X509V3_EXT_METHOD *method,
|
||||
AUTHORITY_KEYID *akeyid, STACK_OF(CONF_VALUE) *extlist);
|
||||
static AUTHORITY_KEYID *v2i_AUTHORITY_KEYID(X509V3_EXT_METHOD *method,
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
/* $OpenBSD: x509_att.c,v 1.24 2024/07/26 13:33:39 tb Exp $ */
|
||||
/* $OpenBSD: x509_att.c,v 1.25 2024/08/31 10:46:40 tb Exp $ */
|
||||
/* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com)
|
||||
* All rights reserved.
|
||||
*
|
||||
|
@ -68,14 +68,6 @@
|
|||
|
||||
#include "x509_local.h"
|
||||
|
||||
int
|
||||
X509at_get_attr_count(const STACK_OF(X509_ATTRIBUTE) *x)
|
||||
{
|
||||
X509error(ERR_R_DISABLED);
|
||||
return 0;
|
||||
}
|
||||
LCRYPTO_ALIAS(X509at_get_attr_count);
|
||||
|
||||
int
|
||||
X509at_get_attr_by_NID(const STACK_OF(X509_ATTRIBUTE) *x, int nid, int lastpos)
|
||||
{
|
||||
|
@ -86,7 +78,6 @@ X509at_get_attr_by_NID(const STACK_OF(X509_ATTRIBUTE) *x, int nid, int lastpos)
|
|||
return (-2);
|
||||
return (X509at_get_attr_by_OBJ(x, obj, lastpos));
|
||||
}
|
||||
LCRYPTO_ALIAS(X509at_get_attr_by_NID);
|
||||
|
||||
int
|
||||
X509at_get_attr_by_OBJ(const STACK_OF(X509_ATTRIBUTE) *sk,
|
||||
|
@ -108,23 +99,6 @@ X509at_get_attr_by_OBJ(const STACK_OF(X509_ATTRIBUTE) *sk,
|
|||
}
|
||||
return (-1);
|
||||
}
|
||||
LCRYPTO_ALIAS(X509at_get_attr_by_OBJ);
|
||||
|
||||
X509_ATTRIBUTE *
|
||||
X509at_get_attr(const STACK_OF(X509_ATTRIBUTE) *x, int loc)
|
||||
{
|
||||
X509error(ERR_R_DISABLED);
|
||||
return NULL;
|
||||
}
|
||||
LCRYPTO_ALIAS(X509at_get_attr);
|
||||
|
||||
X509_ATTRIBUTE *
|
||||
X509at_delete_attr(STACK_OF(X509_ATTRIBUTE) *x, int loc)
|
||||
{
|
||||
X509error(ERR_R_DISABLED);
|
||||
return NULL;
|
||||
}
|
||||
LCRYPTO_ALIAS(X509at_delete_attr);
|
||||
|
||||
STACK_OF(X509_ATTRIBUTE) *
|
||||
X509at_add1_attr(STACK_OF(X509_ATTRIBUTE) **x, X509_ATTRIBUTE *attr)
|
||||
|
@ -160,7 +134,6 @@ err2:
|
|||
sk_X509_ATTRIBUTE_free(sk);
|
||||
return (NULL);
|
||||
}
|
||||
LCRYPTO_ALIAS(X509at_add1_attr);
|
||||
|
||||
STACK_OF(X509_ATTRIBUTE) *
|
||||
X509at_add1_attr_by_OBJ(STACK_OF(X509_ATTRIBUTE) **x, const ASN1_OBJECT *obj,
|
||||
|
@ -176,7 +149,6 @@ X509at_add1_attr_by_OBJ(STACK_OF(X509_ATTRIBUTE) **x, const ASN1_OBJECT *obj,
|
|||
X509_ATTRIBUTE_free(attr);
|
||||
return ret;
|
||||
}
|
||||
LCRYPTO_ALIAS(X509at_add1_attr_by_OBJ);
|
||||
|
||||
STACK_OF(X509_ATTRIBUTE) *
|
||||
X509at_add1_attr_by_NID(STACK_OF(X509_ATTRIBUTE) **x, int nid, int type,
|
||||
|
@ -192,7 +164,6 @@ X509at_add1_attr_by_NID(STACK_OF(X509_ATTRIBUTE) **x, int nid, int type,
|
|||
X509_ATTRIBUTE_free(attr);
|
||||
return ret;
|
||||
}
|
||||
LCRYPTO_ALIAS(X509at_add1_attr_by_NID);
|
||||
|
||||
STACK_OF(X509_ATTRIBUTE) *
|
||||
X509at_add1_attr_by_txt(STACK_OF(X509_ATTRIBUTE) **x, const char *attrname,
|
||||
|
@ -208,7 +179,6 @@ X509at_add1_attr_by_txt(STACK_OF(X509_ATTRIBUTE) **x, const char *attrname,
|
|||
X509_ATTRIBUTE_free(attr);
|
||||
return ret;
|
||||
}
|
||||
LCRYPTO_ALIAS(X509at_add1_attr_by_txt);
|
||||
|
||||
void *
|
||||
X509at_get0_data_by_OBJ(STACK_OF(X509_ATTRIBUTE) *x, const ASN1_OBJECT *obj,
|
||||
|
@ -227,7 +197,6 @@ X509at_get0_data_by_OBJ(STACK_OF(X509_ATTRIBUTE) *x, const ASN1_OBJECT *obj,
|
|||
return NULL;
|
||||
return X509_ATTRIBUTE_get0_data(at, 0, type, NULL);
|
||||
}
|
||||
LCRYPTO_ALIAS(X509at_get0_data_by_OBJ);
|
||||
|
||||
X509_ATTRIBUTE *
|
||||
X509_ATTRIBUTE_create_by_NID(X509_ATTRIBUTE **attr, int nid, int atrtype,
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
/* $OpenBSD: x509_bcons.c,v 1.5 2024/07/13 15:08:58 tb Exp $ */
|
||||
/* $OpenBSD: x509_bcons.c,v 1.6 2024/08/31 10:03:03 tb Exp $ */
|
||||
/* Written by Dr Stephen N Henson (steve@openssl.org) for the OpenSSL
|
||||
* project 1999.
|
||||
*/
|
||||
|
@ -65,6 +65,8 @@
|
|||
#include <openssl/err.h>
|
||||
#include <openssl/x509v3.h>
|
||||
|
||||
#include "x509_local.h"
|
||||
|
||||
static STACK_OF(CONF_VALUE) *i2v_BASIC_CONSTRAINTS(X509V3_EXT_METHOD *method,
|
||||
BASIC_CONSTRAINTS *bcons, STACK_OF(CONF_VALUE) *extlist);
|
||||
static BASIC_CONSTRAINTS *v2i_BASIC_CONSTRAINTS(X509V3_EXT_METHOD *method,
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
/* $OpenBSD: x509_bitst.c,v 1.6 2024/07/13 15:08:58 tb Exp $ */
|
||||
/* $OpenBSD: x509_bitst.c,v 1.8 2024/08/31 10:23:13 tb Exp $ */
|
||||
/* Written by Dr Stephen N Henson (steve@openssl.org) for the OpenSSL
|
||||
* project 1999.
|
||||
*/
|
||||
|
@ -63,7 +63,9 @@
|
|||
#include <openssl/err.h>
|
||||
#include <openssl/x509v3.h>
|
||||
|
||||
static BIT_STRING_BITNAME ns_cert_type_table[] = {
|
||||
#include "x509_local.h"
|
||||
|
||||
static const BIT_STRING_BITNAME ns_cert_type_table[] = {
|
||||
{0, "SSL Client", "client"},
|
||||
{1, "SSL Server", "server"},
|
||||
{2, "S/MIME", "email"},
|
||||
|
@ -75,7 +77,7 @@ static BIT_STRING_BITNAME ns_cert_type_table[] = {
|
|||
{-1, NULL, NULL}
|
||||
};
|
||||
|
||||
static BIT_STRING_BITNAME key_usage_type_table[] = {
|
||||
static const BIT_STRING_BITNAME key_usage_type_table[] = {
|
||||
{0, "Digital Signature", "digitalSignature"},
|
||||
{1, "Non Repudiation", "nonRepudiation"},
|
||||
{2, "Key Encipherment", "keyEncipherment"},
|
||||
|
@ -88,7 +90,7 @@ static BIT_STRING_BITNAME key_usage_type_table[] = {
|
|||
{-1, NULL, NULL}
|
||||
};
|
||||
|
||||
static BIT_STRING_BITNAME crl_reasons[] = {
|
||||
static const BIT_STRING_BITNAME crl_reasons[] = {
|
||||
{CRL_REASON_UNSPECIFIED, "Unspecified", "unspecified"},
|
||||
{CRL_REASON_KEY_COMPROMISE, "Key Compromise", "keyCompromise"},
|
||||
{CRL_REASON_CA_COMPROMISE, "CA Compromise", "CACompromise"},
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
/* $OpenBSD: x509_conf.c,v 1.22 2024/08/28 08:59:03 tb Exp $ */
|
||||
/* $OpenBSD: x509_conf.c,v 1.27 2024/08/31 10:04:50 tb Exp $ */
|
||||
/* Written by Dr Stephen N Henson (steve@openssl.org) for the OpenSSL
|
||||
* project 1999.
|
||||
*/
|
||||
|
@ -66,6 +66,7 @@
|
|||
#include <openssl/x509.h>
|
||||
#include <openssl/x509v3.h>
|
||||
|
||||
#include "conf_local.h"
|
||||
#include "x509_local.h"
|
||||
|
||||
static int v3_check_critical(const char **value);
|
||||
|
@ -403,15 +404,6 @@ X509V3_EXT_REQ_add_nconf(CONF *conf, X509V3_CTX *ctx, const char *section,
|
|||
}
|
||||
LCRYPTO_ALIAS(X509V3_EXT_REQ_add_nconf);
|
||||
|
||||
/* XXX - remove in next bump. */
|
||||
char *
|
||||
X509V3_get_string(X509V3_CTX *ctx, const char *name, const char *section)
|
||||
{
|
||||
X509V3error(ERR_R_DISABLED);
|
||||
return NULL;
|
||||
}
|
||||
LCRYPTO_ALIAS(X509V3_get_string);
|
||||
|
||||
STACK_OF(CONF_VALUE) *
|
||||
X509V3_get_section(X509V3_CTX *ctx, const char *section)
|
||||
{
|
||||
|
@ -421,22 +413,12 @@ X509V3_get_section(X509V3_CTX *ctx, const char *section)
|
|||
}
|
||||
return NCONF_get_section(ctx->db, section);
|
||||
}
|
||||
LCRYPTO_ALIAS(X509V3_get_section);
|
||||
|
||||
/* XXX - remove in next bump. */
|
||||
void
|
||||
X509V3_string_free(X509V3_CTX *ctx, char *str)
|
||||
{
|
||||
return;
|
||||
}
|
||||
LCRYPTO_ALIAS(X509V3_string_free);
|
||||
|
||||
void
|
||||
X509V3_section_free(X509V3_CTX *ctx, STACK_OF(CONF_VALUE) *section)
|
||||
{
|
||||
return;
|
||||
}
|
||||
LCRYPTO_ALIAS(X509V3_section_free);
|
||||
|
||||
void
|
||||
X509V3_set_nconf(X509V3_CTX *ctx, CONF *conf)
|
||||
|
@ -478,40 +460,3 @@ X509V3_EXT_conf_nid(LHASH_OF(CONF_VALUE) *conf, X509V3_CTX *ctx, int nid,
|
|||
return X509V3_EXT_nconf_nid(&ctmp, ctx, nid, value);
|
||||
}
|
||||
LCRYPTO_ALIAS(X509V3_EXT_conf_nid);
|
||||
|
||||
/*
|
||||
* XXX - remove everything below in the next bump.
|
||||
*/
|
||||
|
||||
void
|
||||
X509V3_set_conf_lhash(X509V3_CTX *ctx, LHASH_OF(CONF_VALUE) *lhash)
|
||||
{
|
||||
}
|
||||
LCRYPTO_ALIAS(X509V3_set_conf_lhash);
|
||||
|
||||
int
|
||||
X509V3_EXT_add_conf(LHASH_OF(CONF_VALUE) *conf, X509V3_CTX *ctx,
|
||||
const char *section, X509 *cert)
|
||||
{
|
||||
X509V3error(ERR_R_DISABLED);
|
||||
return 0;
|
||||
}
|
||||
LCRYPTO_ALIAS(X509V3_EXT_add_conf);
|
||||
|
||||
int
|
||||
X509V3_EXT_CRL_add_conf(LHASH_OF(CONF_VALUE) *conf, X509V3_CTX *ctx,
|
||||
const char *section, X509_CRL *crl)
|
||||
{
|
||||
X509V3error(ERR_R_DISABLED);
|
||||
return 0;
|
||||
}
|
||||
LCRYPTO_ALIAS(X509V3_EXT_CRL_add_conf);
|
||||
|
||||
int
|
||||
X509V3_EXT_REQ_add_conf(LHASH_OF(CONF_VALUE) *conf, X509V3_CTX *ctx,
|
||||
const char *section, X509_REQ *req)
|
||||
{
|
||||
X509V3error(ERR_R_DISABLED);
|
||||
return 0;
|
||||
}
|
||||
LCRYPTO_ALIAS(X509V3_EXT_REQ_add_conf);
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
/* $OpenBSD: x509_extku.c,v 1.5 2024/07/13 15:08:58 tb Exp $ */
|
||||
/* $OpenBSD: x509_extku.c,v 1.6 2024/08/31 10:03:03 tb Exp $ */
|
||||
/* Written by Dr Stephen N Henson (steve@openssl.org) for the OpenSSL
|
||||
* project 1999.
|
||||
*/
|
||||
|
@ -63,6 +63,8 @@
|
|||
#include <openssl/err.h>
|
||||
#include <openssl/x509v3.h>
|
||||
|
||||
#include "x509_local.h"
|
||||
|
||||
static void *v2i_EXTENDED_KEY_USAGE(const X509V3_EXT_METHOD *method,
|
||||
X509V3_CTX *ctx, STACK_OF(CONF_VALUE) *nval);
|
||||
static STACK_OF(CONF_VALUE) *i2v_EXTENDED_KEY_USAGE(
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
/* $OpenBSD: x509_local.h,v 1.26 2024/07/13 15:08:58 tb Exp $ */
|
||||
/* $OpenBSD: x509_local.h,v 1.32 2024/08/31 10:46:40 tb Exp $ */
|
||||
/* Written by Dr Stephen N Henson (steve@openssl.org) for the OpenSSL
|
||||
* project 2013.
|
||||
*/
|
||||
|
@ -71,14 +71,20 @@ __BEGIN_HIDDEN_DECLS
|
|||
#define X509_CRL_HASH_EVP EVP_sha512()
|
||||
#define X509_CRL_HASH_LEN SHA512_DIGEST_LENGTH
|
||||
|
||||
/*
|
||||
* Used internally instead of the confusing X509_TRUST_DEFAULT,
|
||||
* which is not the default for X509_check_trust.
|
||||
* XXX Make X509_check_trust internal, and move the other
|
||||
* X509_TRUST values here to clean up this mess.
|
||||
*/
|
||||
#define X509_TRUST_ACCEPT_ALL -1
|
||||
|
||||
/* check_trust return codes */
|
||||
#define X509_TRUST_TRUSTED 1
|
||||
#define X509_TRUST_REJECTED 2
|
||||
#define X509_TRUST_UNTRUSTED 3
|
||||
|
||||
int X509_check_trust(X509 *x, int id, int flags);
|
||||
|
||||
struct X509_val_st {
|
||||
ASN1_TIME *notBefore;
|
||||
ASN1_TIME *notAfter;
|
||||
} /* X509_VAL */;
|
||||
|
||||
struct X509_pubkey_st {
|
||||
X509_ALGOR *algor;
|
||||
ASN1_BIT_STRING *public_key;
|
||||
|
@ -312,7 +318,7 @@ struct x509_store_st {
|
|||
|
||||
/* This is the functions plus an instance of the local variables. */
|
||||
struct x509_lookup_st {
|
||||
X509_LOOKUP_METHOD *method; /* the functions */
|
||||
const X509_LOOKUP_METHOD *method; /* the functions */
|
||||
void *method_data; /* method data */
|
||||
|
||||
X509_STORE *store_ctx; /* who owns us */
|
||||
|
@ -418,6 +424,36 @@ X509_ALGOR *PKCS5_pbkdf2_set(int iter, unsigned char *salt, int saltlen,
|
|||
int X509_PURPOSE_get_by_id(int id);
|
||||
int X509_PURPOSE_get_trust(const X509_PURPOSE *xp);
|
||||
|
||||
int X509at_get_attr_by_NID(const STACK_OF(X509_ATTRIBUTE) *x, int nid,
|
||||
int lastpos);
|
||||
int X509at_get_attr_by_OBJ(const STACK_OF(X509_ATTRIBUTE) *sk,
|
||||
const ASN1_OBJECT *obj, int lastpos);
|
||||
STACK_OF(X509_ATTRIBUTE) *X509at_add1_attr(STACK_OF(X509_ATTRIBUTE) **x,
|
||||
X509_ATTRIBUTE *attr);
|
||||
STACK_OF(X509_ATTRIBUTE) *X509at_add1_attr_by_OBJ(STACK_OF(X509_ATTRIBUTE) **x,
|
||||
const ASN1_OBJECT *obj, int type, const unsigned char *bytes, int len);
|
||||
STACK_OF(X509_ATTRIBUTE) *X509at_add1_attr_by_NID(STACK_OF(X509_ATTRIBUTE) **x,
|
||||
int nid, int type, const unsigned char *bytes, int len);
|
||||
STACK_OF(X509_ATTRIBUTE) *X509at_add1_attr_by_txt(STACK_OF(X509_ATTRIBUTE) **x,
|
||||
const char *attrname, int type, const unsigned char *bytes, int len);
|
||||
void *X509at_get0_data_by_OBJ(STACK_OF(X509_ATTRIBUTE) *x,
|
||||
const ASN1_OBJECT *obj, int lastpos, int type);
|
||||
|
||||
int X509V3_add_value(const char *name, const char *value,
|
||||
STACK_OF(CONF_VALUE) **extlist);
|
||||
int X509V3_add_value_uchar(const char *name, const unsigned char *value,
|
||||
STACK_OF(CONF_VALUE) **extlist);
|
||||
int X509V3_add_value_bool(const char *name, int asn1_bool,
|
||||
STACK_OF(CONF_VALUE) **extlist);
|
||||
int X509V3_add_value_int(const char *name, const ASN1_INTEGER *aint,
|
||||
STACK_OF(CONF_VALUE) **extlist);
|
||||
|
||||
int X509V3_get_value_bool(const CONF_VALUE *value, int *asn1_bool);
|
||||
int X509V3_get_value_int(const CONF_VALUE *value, ASN1_INTEGER **aint);
|
||||
|
||||
STACK_OF(CONF_VALUE) *X509V3_get_section(X509V3_CTX *ctx, const char *section);
|
||||
void X509V3_section_free(X509V3_CTX *ctx, STACK_OF(CONF_VALUE) *section);
|
||||
|
||||
const X509V3_EXT_METHOD *x509v3_ext_method_authority_key_identifier(void);
|
||||
const X509V3_EXT_METHOD *x509v3_ext_method_basic_constraints(void);
|
||||
const X509V3_EXT_METHOD *x509v3_ext_method_certificate_issuer(void);
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
/* $OpenBSD: x509_lu.c,v 1.65 2024/03/22 06:24:54 tb Exp $ */
|
||||
/* $OpenBSD: x509_lu.c,v 1.66 2024/08/31 10:19:17 tb Exp $ */
|
||||
/* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com)
|
||||
* All rights reserved.
|
||||
*
|
||||
|
@ -67,7 +67,7 @@
|
|||
#include "x509_local.h"
|
||||
|
||||
static X509_LOOKUP *
|
||||
X509_LOOKUP_new(X509_LOOKUP_METHOD *method)
|
||||
X509_LOOKUP_new(const X509_LOOKUP_METHOD *method)
|
||||
{
|
||||
X509_LOOKUP *lu;
|
||||
|
||||
|
@ -245,7 +245,7 @@ X509_STORE_up_ref(X509_STORE *store)
|
|||
LCRYPTO_ALIAS(X509_STORE_up_ref);
|
||||
|
||||
X509_LOOKUP *
|
||||
X509_STORE_add_lookup(X509_STORE *store, X509_LOOKUP_METHOD *method)
|
||||
X509_STORE_add_lookup(X509_STORE *store, const X509_LOOKUP_METHOD *method)
|
||||
{
|
||||
STACK_OF(X509_LOOKUP) *sk;
|
||||
X509_LOOKUP *lu;
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
/* $OpenBSD: x509_pcons.c,v 1.5 2024/07/13 15:08:58 tb Exp $ */
|
||||
/* $OpenBSD: x509_pcons.c,v 1.6 2024/08/31 10:03:03 tb Exp $ */
|
||||
/* Written by Dr Stephen N Henson (steve@openssl.org) for the OpenSSL
|
||||
* project.
|
||||
*/
|
||||
|
@ -65,6 +65,8 @@
|
|||
#include <openssl/err.h>
|
||||
#include <openssl/x509v3.h>
|
||||
|
||||
#include "x509_local.h"
|
||||
|
||||
static STACK_OF(CONF_VALUE) *
|
||||
i2v_POLICY_CONSTRAINTS(const X509V3_EXT_METHOD *method, void *bcons,
|
||||
STACK_OF(CONF_VALUE) *extlist);
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
/* $OpenBSD: x509_pmaps.c,v 1.5 2024/07/13 15:08:58 tb Exp $ */
|
||||
/* $OpenBSD: x509_pmaps.c,v 1.6 2024/08/31 10:03:03 tb Exp $ */
|
||||
/* Written by Dr Stephen N Henson (steve@openssl.org) for the OpenSSL
|
||||
* project.
|
||||
*/
|
||||
|
@ -64,6 +64,8 @@
|
|||
#include <openssl/err.h>
|
||||
#include <openssl/x509v3.h>
|
||||
|
||||
#include "x509_local.h"
|
||||
|
||||
static void *v2i_POLICY_MAPPINGS(const X509V3_EXT_METHOD *method,
|
||||
X509V3_CTX *ctx, STACK_OF(CONF_VALUE) *nval);
|
||||
static STACK_OF(CONF_VALUE) *i2v_POLICY_MAPPINGS(
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
/* $OpenBSD: x509_req.c,v 1.42 2024/07/26 13:24:39 tb Exp $ */
|
||||
/* $OpenBSD: x509_req.c,v 1.43 2024/08/31 10:16:52 tb Exp $ */
|
||||
/* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com)
|
||||
* All rights reserved.
|
||||
*
|
||||
|
@ -318,22 +318,3 @@ i2d_re_X509_REQ_tbs(X509_REQ *req, unsigned char **pp)
|
|||
return i2d_X509_REQ_INFO(req->req_info, pp);
|
||||
}
|
||||
LCRYPTO_ALIAS(i2d_re_X509_REQ_tbs);
|
||||
|
||||
/*
|
||||
* XXX - remove the API below in the next major bump
|
||||
*/
|
||||
|
||||
int *
|
||||
X509_REQ_get_extension_nids(void)
|
||||
{
|
||||
X509error(ERR_R_DISABLED);
|
||||
return NULL;
|
||||
}
|
||||
LCRYPTO_ALIAS(X509_REQ_get_extension_nids);
|
||||
|
||||
void
|
||||
X509_REQ_set_extension_nids(int *nids)
|
||||
{
|
||||
X509error(ERR_R_DISABLED);
|
||||
}
|
||||
LCRYPTO_ALIAS(X509_REQ_set_extension_nids);
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
/* $OpenBSD: x509_trs.c,v 1.57 2024/07/12 18:15:10 beck Exp $ */
|
||||
/* $OpenBSD: x509_trs.c,v 1.58 2024/08/31 10:12:23 tb Exp $ */
|
||||
/* Written by Dr Stephen N Henson (steve@openssl.org) for the OpenSSL
|
||||
* project 1999.
|
||||
*/
|
||||
|
@ -147,10 +147,6 @@ X509_check_trust(X509 *x, int trust_id, int flags)
|
|||
if (!x509v3_cache_extensions(x))
|
||||
return X509_TRUST_UNTRUSTED;
|
||||
|
||||
/*
|
||||
* XXX make X509_TRUST_ACCEPT_ALL a real boy once it does not
|
||||
* need to have the same -1 value as X509_TRUST_DEFAULT
|
||||
*/
|
||||
if (trust_id == X509_TRUST_ACCEPT_ALL)
|
||||
return 1;
|
||||
|
||||
|
@ -175,4 +171,3 @@ X509_check_trust(X509 *x, int trust_id, int flags)
|
|||
return trust_if_self_signed(x);
|
||||
}
|
||||
}
|
||||
LCRYPTO_ALIAS(X509_check_trust);
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
/* $OpenBSD: x509_utl.c,v 1.19 2024/07/08 06:57:37 jca Exp $ */
|
||||
/* $OpenBSD: x509_utl.c,v 1.22 2024/08/31 18:38:46 tb Exp $ */
|
||||
/* Written by Dr Stephen N Henson (steve@openssl.org) for the OpenSSL
|
||||
* project.
|
||||
*/
|
||||
|
@ -67,6 +67,8 @@
|
|||
#include <openssl/err.h>
|
||||
#include <openssl/x509v3.h>
|
||||
|
||||
#include "conf_local.h"
|
||||
|
||||
#include "bytestring.h"
|
||||
|
||||
static char *bn_to_string(const BIGNUM *bn);
|
||||
|
@ -85,42 +87,54 @@ static int ipv6_hex(unsigned char *out, const char *in, int inlen);
|
|||
/* Add a CONF_VALUE name-value pair to stack. */
|
||||
int
|
||||
X509V3_add_value(const char *name, const char *value,
|
||||
STACK_OF(CONF_VALUE) **extlist)
|
||||
STACK_OF(CONF_VALUE) **out_extlist)
|
||||
{
|
||||
CONF_VALUE *vtmp = NULL;
|
||||
STACK_OF(CONF_VALUE) *free_exts = NULL;
|
||||
STACK_OF(CONF_VALUE) *extlist = NULL;
|
||||
CONF_VALUE *conf_value = NULL;
|
||||
int ret = 0;
|
||||
|
||||
if ((vtmp = calloc(1, sizeof(CONF_VALUE))) == NULL)
|
||||
if ((conf_value = calloc(1, sizeof(*conf_value))) == NULL) {
|
||||
X509V3error(ERR_R_MALLOC_FAILURE);
|
||||
goto err;
|
||||
}
|
||||
if (name != NULL) {
|
||||
if ((vtmp->name = strdup(name)) == NULL)
|
||||
if ((conf_value->name = strdup(name)) == NULL) {
|
||||
X509V3error(ERR_R_MALLOC_FAILURE);
|
||||
goto err;
|
||||
}
|
||||
}
|
||||
if (value != NULL) {
|
||||
if ((vtmp->value = strdup(value)) == NULL)
|
||||
if ((conf_value->value = strdup(value)) == NULL) {
|
||||
X509V3error(ERR_R_MALLOC_FAILURE);
|
||||
goto err;
|
||||
}
|
||||
}
|
||||
|
||||
if (*extlist == NULL) {
|
||||
if ((free_exts = *extlist = sk_CONF_VALUE_new_null()) == NULL)
|
||||
goto err;
|
||||
}
|
||||
|
||||
if (!sk_CONF_VALUE_push(*extlist, vtmp))
|
||||
if ((extlist = *out_extlist) == NULL)
|
||||
extlist = sk_CONF_VALUE_new_null();
|
||||
if (extlist == NULL) {
|
||||
X509V3error(ERR_R_MALLOC_FAILURE);
|
||||
goto err;
|
||||
}
|
||||
|
||||
return 1;
|
||||
if (!sk_CONF_VALUE_push(extlist, conf_value)) {
|
||||
X509V3error(ERR_R_MALLOC_FAILURE);
|
||||
goto err;
|
||||
}
|
||||
conf_value = NULL;
|
||||
|
||||
*out_extlist = extlist;
|
||||
extlist = NULL;
|
||||
|
||||
ret = 1;
|
||||
|
||||
err:
|
||||
X509V3error(ERR_R_MALLOC_FAILURE);
|
||||
X509V3_conf_free(vtmp);
|
||||
if (free_exts != NULL) {
|
||||
sk_CONF_VALUE_free(*extlist);
|
||||
*extlist = NULL;
|
||||
}
|
||||
return 0;
|
||||
if (extlist != *out_extlist)
|
||||
sk_CONF_VALUE_pop_free(extlist, X509V3_conf_free);
|
||||
X509V3_conf_free(conf_value);
|
||||
|
||||
return ret;
|
||||
}
|
||||
LCRYPTO_ALIAS(X509V3_add_value);
|
||||
|
||||
int
|
||||
X509V3_add_value_uchar(const char *name, const unsigned char *value,
|
||||
|
@ -128,7 +142,6 @@ X509V3_add_value_uchar(const char *name, const unsigned char *value,
|
|||
{
|
||||
return X509V3_add_value(name, (const char *)value, extlist);
|
||||
}
|
||||
LCRYPTO_ALIAS(X509V3_add_value_uchar);
|
||||
|
||||
/* Free function for STACK_OF(CONF_VALUE) */
|
||||
|
||||
|
@ -152,17 +165,6 @@ X509V3_add_value_bool(const char *name, int asn1_bool,
|
|||
return X509V3_add_value(name, "TRUE", extlist);
|
||||
return X509V3_add_value(name, "FALSE", extlist);
|
||||
}
|
||||
LCRYPTO_ALIAS(X509V3_add_value_bool);
|
||||
|
||||
int
|
||||
X509V3_add_value_bool_nf(const char *name, int asn1_bool,
|
||||
STACK_OF(CONF_VALUE) **extlist)
|
||||
{
|
||||
if (asn1_bool)
|
||||
return X509V3_add_value(name, "TRUE", extlist);
|
||||
return 1;
|
||||
}
|
||||
LCRYPTO_ALIAS(X509V3_add_value_bool_nf);
|
||||
|
||||
static char *
|
||||
bn_to_string(const BIGNUM *bn)
|
||||
|
@ -305,7 +307,6 @@ X509V3_add_value_int(const char *name, const ASN1_INTEGER *aint,
|
|||
free(strtmp);
|
||||
return ret;
|
||||
}
|
||||
LCRYPTO_ALIAS(X509V3_add_value_int);
|
||||
|
||||
int
|
||||
X509V3_get_value_bool(const CONF_VALUE *value, int *asn1_bool)
|
||||
|
@ -331,7 +332,6 @@ X509V3_get_value_bool(const CONF_VALUE *value, int *asn1_bool)
|
|||
X509V3_conf_err(value);
|
||||
return 0;
|
||||
}
|
||||
LCRYPTO_ALIAS(X509V3_get_value_bool);
|
||||
|
||||
int
|
||||
X509V3_get_value_int(const CONF_VALUE *value, ASN1_INTEGER **aint)
|
||||
|
@ -345,7 +345,6 @@ X509V3_get_value_int(const CONF_VALUE *value, ASN1_INTEGER **aint)
|
|||
*aint = itmp;
|
||||
return 1;
|
||||
}
|
||||
LCRYPTO_ALIAS(X509V3_get_value_int);
|
||||
|
||||
#define HDR_NAME 1
|
||||
#define HDR_VALUE 2
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
/* $OpenBSD: x509_vfy.h,v 1.68 2024/03/02 10:57:03 tb Exp $ */
|
||||
/* $OpenBSD: x509_vfy.h,v 1.69 2024/08/31 10:19:17 tb Exp $ */
|
||||
/* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com)
|
||||
* All rights reserved.
|
||||
*
|
||||
|
@ -341,11 +341,11 @@ void X509_STORE_CTX_trusted_stack(X509_STORE_CTX *ctx, STACK_OF(X509) *sk);
|
|||
void X509_STORE_CTX_set0_trusted_stack(X509_STORE_CTX *ctx, STACK_OF(X509) *sk);
|
||||
void X509_STORE_CTX_cleanup(X509_STORE_CTX *ctx);
|
||||
|
||||
X509_LOOKUP *X509_STORE_add_lookup(X509_STORE *v, X509_LOOKUP_METHOD *m);
|
||||
X509_LOOKUP *X509_STORE_add_lookup(X509_STORE *v, const X509_LOOKUP_METHOD *m);
|
||||
|
||||
X509_LOOKUP_METHOD *X509_LOOKUP_hash_dir(void);
|
||||
X509_LOOKUP_METHOD *X509_LOOKUP_file(void);
|
||||
X509_LOOKUP_METHOD *X509_LOOKUP_mem(void);
|
||||
const X509_LOOKUP_METHOD *X509_LOOKUP_hash_dir(void);
|
||||
const X509_LOOKUP_METHOD *X509_LOOKUP_file(void);
|
||||
const X509_LOOKUP_METHOD *X509_LOOKUP_mem(void);
|
||||
|
||||
int X509_STORE_add_cert(X509_STORE *ctx, X509 *x);
|
||||
int X509_STORE_add_crl(X509_STORE *ctx, X509_CRL *x);
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
/* $OpenBSD: x509v3.h,v 1.30 2024/08/28 08:22:57 tb Exp $ */
|
||||
/* $OpenBSD: x509v3.h,v 1.35 2024/08/31 10:23:13 tb Exp $ */
|
||||
/* Written by Dr Stephen N Henson (steve@openssl.org) for the OpenSSL
|
||||
* project 1999.
|
||||
*/
|
||||
|
@ -117,17 +117,9 @@ struct v3_ext_method {
|
|||
X509V3_EXT_I2R i2r;
|
||||
X509V3_EXT_R2I r2i;
|
||||
|
||||
void *usr_data; /* Any extension specific data */
|
||||
const void *usr_data; /* Any extension specific data */
|
||||
};
|
||||
|
||||
/* XXX - remove in next bump. */
|
||||
typedef struct X509V3_CONF_METHOD_st {
|
||||
char *(*get_string)(void *db, const char *section, const char *value);
|
||||
STACK_OF(CONF_VALUE) *(*get_section)(void *db, const char *section);
|
||||
void (*free_string)(void *db, char *string);
|
||||
void (*free_section)(void *db, STACK_OF(CONF_VALUE) *section);
|
||||
} X509V3_CONF_METHOD;
|
||||
|
||||
struct v3_ext_ctx {
|
||||
#define CTX_TEST 0x1
|
||||
int flags;
|
||||
|
@ -135,7 +127,6 @@ struct v3_ext_ctx {
|
|||
X509 *subject_cert;
|
||||
X509_REQ *subject_req;
|
||||
X509_CRL *crl;
|
||||
X509V3_CONF_METHOD *db_meth; /* XXX - remove in next bump. */
|
||||
void *db;
|
||||
};
|
||||
|
||||
|
@ -647,37 +638,13 @@ X509_EXTENSION *X509V3_EXT_conf_nid(LHASH_OF(CONF_VALUE) *conf, X509V3_CTX *ctx,
|
|||
int ext_nid, const char *value);
|
||||
X509_EXTENSION *X509V3_EXT_conf(LHASH_OF(CONF_VALUE) *conf, X509V3_CTX *ctx,
|
||||
const char *name, const char *value);
|
||||
int X509V3_EXT_add_conf(LHASH_OF(CONF_VALUE) *conf, X509V3_CTX *ctx,
|
||||
const char *section, X509 *cert);
|
||||
int X509V3_EXT_REQ_add_conf(LHASH_OF(CONF_VALUE) *conf, X509V3_CTX *ctx,
|
||||
const char *section, X509_REQ *req);
|
||||
int X509V3_EXT_CRL_add_conf(LHASH_OF(CONF_VALUE) *conf, X509V3_CTX *ctx,
|
||||
const char *section, X509_CRL *crl);
|
||||
|
||||
int X509V3_add_value_bool_nf(const char *name, int asn1_bool,
|
||||
STACK_OF(CONF_VALUE) **extlist);
|
||||
int X509V3_get_value_bool(const CONF_VALUE *value, int *asn1_bool);
|
||||
int X509V3_get_value_int(const CONF_VALUE *value, ASN1_INTEGER **aint);
|
||||
void X509V3_set_nconf(X509V3_CTX *ctx, CONF *conf);
|
||||
void X509V3_set_conf_lhash(X509V3_CTX *ctx, LHASH_OF(CONF_VALUE) *lhash);
|
||||
#endif
|
||||
|
||||
char *X509V3_get_string(X509V3_CTX *ctx, const char *name,
|
||||
const char *section);
|
||||
STACK_OF(CONF_VALUE) *X509V3_get_section(X509V3_CTX *ctx, const char *section);
|
||||
void X509V3_string_free(X509V3_CTX *ctx, char *str);
|
||||
void X509V3_section_free( X509V3_CTX *ctx, STACK_OF(CONF_VALUE) *section);
|
||||
void X509V3_set_ctx(X509V3_CTX *ctx, X509 *issuer, X509 *subject,
|
||||
X509_REQ *req, X509_CRL *crl, int flags);
|
||||
|
||||
int X509V3_add_value(const char *name, const char *value,
|
||||
STACK_OF(CONF_VALUE) **extlist);
|
||||
int X509V3_add_value_uchar(const char *name, const unsigned char *value,
|
||||
STACK_OF(CONF_VALUE) **extlist);
|
||||
int X509V3_add_value_bool(const char *name, int asn1_bool,
|
||||
STACK_OF(CONF_VALUE) **extlist);
|
||||
int X509V3_add_value_int(const char *name, const ASN1_INTEGER *aint,
|
||||
STACK_OF(CONF_VALUE) **extlist);
|
||||
char *i2s_ASN1_INTEGER(X509V3_EXT_METHOD *meth, const ASN1_INTEGER *aint);
|
||||
ASN1_INTEGER *s2i_ASN1_INTEGER(X509V3_EXT_METHOD *meth, const char *value);
|
||||
char *i2s_ASN1_ENUMERATED(X509V3_EXT_METHOD *meth, const ASN1_ENUMERATED *aint);
|
||||
|
@ -692,7 +659,6 @@ void *X509V3_EXT_d2i(X509_EXTENSION *ext);
|
|||
void *X509V3_get_d2i(const STACK_OF(X509_EXTENSION) *x, int nid, int *crit,
|
||||
int *idx);
|
||||
|
||||
|
||||
X509_EXTENSION *X509V3_EXT_i2d(int ext_nid, int crit, void *ext_struc);
|
||||
int X509V3_add1_i2d(STACK_OF(X509_EXTENSION) **x, int nid, void *value, int crit, unsigned long flags);
|
||||
|
||||
|
|
|
@ -32,7 +32,6 @@ SSL_CIPHER_get_name
|
|||
SSL_CIPHER_get_value
|
||||
SSL_CIPHER_get_version
|
||||
SSL_CIPHER_is_aead
|
||||
SSL_COMP_add_compression_method
|
||||
SSL_COMP_get_compression_methods
|
||||
SSL_COMP_get_name
|
||||
SSL_CTX_add0_chain_cert
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
/* $OpenBSD: ssl.h,v 1.8 2024/08/03 04:50:27 tb Exp $ */
|
||||
/* $OpenBSD: ssl.h,v 1.9 2024/08/31 10:51:48 tb Exp $ */
|
||||
/*
|
||||
* Copyright (c) 2023 Bob Beck <beck@openbsd.org>
|
||||
*
|
||||
|
@ -355,7 +355,6 @@ LSSL_USED(SSL_get_current_expansion);
|
|||
LSSL_USED(SSL_get_peer_certificate);
|
||||
LSSL_USED(SSL_COMP_get_name);
|
||||
LSSL_USED(SSL_COMP_get_compression_methods);
|
||||
LSSL_USED(SSL_COMP_add_compression_method);
|
||||
LSSL_USED(SSL_set_session_ticket_ext);
|
||||
LSSL_USED(SSL_set_session_ticket_ext_cb);
|
||||
LSSL_USED(SSL_set_session_secret_cb);
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
.\" $OpenBSD: SSL_COMP_add_compression_method.3,v 1.6 2024/05/23 06:49:55 tb Exp $
|
||||
.\" $OpenBSD: SSL_COMP_add_compression_method.3,v 1.7 2024/08/31 10:51:48 tb Exp $
|
||||
.\"
|
||||
.\" Copyright (c) 2016 Ingo Schwarze <schwarze@openbsd.org>
|
||||
.\"
|
||||
|
@ -14,45 +14,29 @@
|
|||
.\" ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
|
||||
.\" OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
|
||||
.\"
|
||||
.Dd $Mdocdate: May 23 2024 $
|
||||
.Dd $Mdocdate: August 31 2024 $
|
||||
.Dt SSL_COMP_ADD_COMPRESSION_METHOD 3
|
||||
.Os
|
||||
.Sh NAME
|
||||
.Nm SSL_COMP_add_compression_method ,
|
||||
.Nm SSL_COMP_get_compression_methods
|
||||
.Nd handle SSL/TLS integrated compression methods
|
||||
.Sh SYNOPSIS
|
||||
.In openssl/ssl.h
|
||||
.Ft int
|
||||
.Fn SSL_COMP_add_compression_method "int id" "void *cm"
|
||||
.Ft STACK_OF(SSL_COMP) *
|
||||
.Fn SSL_COMP_get_compression_methods void
|
||||
.Sh DESCRIPTION
|
||||
These functions are deprecated and have no effect.
|
||||
They are provided purely for compatibility with legacy application code.
|
||||
.Pp
|
||||
.Fn SSL_COMP_add_compression_method
|
||||
used to add the compression method
|
||||
.Fa cm
|
||||
with the identifier
|
||||
.Fa id
|
||||
to the list of available compression methods.
|
||||
This function is deprecated and has no effect.
|
||||
It is provided purely for compatibility with legacy application code.
|
||||
.Pp
|
||||
.Fn SSL_COMP_get_compression_methods
|
||||
used to return a stack of available compression methods.
|
||||
.Sh RETURN VALUES
|
||||
.Fn SSL_COMP_add_compression_method
|
||||
always returns 1.
|
||||
.Fn SSL_COMP_get_compression_methods
|
||||
always returns
|
||||
.Dv NULL .
|
||||
.Sh SEE ALSO
|
||||
.Xr ssl 3
|
||||
.Sh HISTORY
|
||||
.Fn SSL_COMP_add_compression_method
|
||||
first appeared in OpenSSL 0.9.2b and has been available since
|
||||
.Ox 2.6 .
|
||||
.Pp
|
||||
.Fn SSL_COMP_get_compression_methods
|
||||
first appeared in OpenSSL 0.9.8 and has been available since
|
||||
.Ox 4.5 .
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
.\" $OpenBSD: ssl.3,v 1.25 2024/07/13 18:33:18 tb Exp $
|
||||
.\" $OpenBSD: ssl.3,v 1.26 2024/08/31 10:51:48 tb Exp $
|
||||
.\" full merge up to: OpenSSL e330f55d Nov 11 00:51:04 2016 +0100
|
||||
.\" selective merge up to: OpenSSL 322755cc Sep 1 08:40:51 2018 +0800
|
||||
.\"
|
||||
|
@ -51,7 +51,7 @@
|
|||
.\" ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
|
||||
.\" OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
.\"
|
||||
.Dd $Mdocdate: July 13 2024 $
|
||||
.Dd $Mdocdate: August 31 2024 $
|
||||
.Dt SSL 3
|
||||
.Os
|
||||
.Sh NAME
|
||||
|
@ -339,7 +339,7 @@ To inspect the state during ongoing communication:
|
|||
.Xr SSL_load_client_CA_file 3
|
||||
.Ss Obsolete functions
|
||||
.Xr OPENSSL_init_ssl 3 ,
|
||||
.Xr SSL_COMP_add_compression_method 3 ,
|
||||
.Xr SSL_COMP_get_compression_methods 3 ,
|
||||
.Xr SSL_CTX_set_tmp_rsa_callback 3 ,
|
||||
.Xr SSL_library_init 3 ,
|
||||
.Xr SSL_set_tmp_ecdh 3
|
||||
|
|
|
@ -1,3 +1,3 @@
|
|||
# Don't forget to give libtls the same type of bump!
|
||||
major=57
|
||||
minor=1
|
||||
major=58
|
||||
minor=0
|
||||
|
|
Some files were not shown because too many files have changed in this diff Show more
Loading…
Add table
Add a link
Reference in a new issue