sync with OpenBSD -current
This commit is contained in:
parent
a51405ccff
commit
4250ddb86f
16 changed files with 2065 additions and 1231 deletions
|
@ -1,331 +0,0 @@
|
|||
/* $OpenBSD: c_all.c,v 1.33 2023/10/24 13:09:54 tb 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 <pthread.h>
|
||||
|
||||
#include <openssl/opensslconf.h>
|
||||
|
||||
#include <openssl/conf.h>
|
||||
#include <openssl/evp.h>
|
||||
#include <openssl/objects.h>
|
||||
|
||||
#include "cryptlib.h"
|
||||
|
||||
static void
|
||||
OpenSSL_add_all_ciphers_internal(void)
|
||||
{
|
||||
#ifndef OPENSSL_NO_DES
|
||||
EVP_add_cipher(EVP_des_cfb());
|
||||
EVP_add_cipher(EVP_des_cfb1());
|
||||
EVP_add_cipher(EVP_des_cfb8());
|
||||
EVP_add_cipher(EVP_des_ede_cfb());
|
||||
EVP_add_cipher(EVP_des_ede3_cfb());
|
||||
EVP_add_cipher(EVP_des_ede3_cfb1());
|
||||
EVP_add_cipher(EVP_des_ede3_cfb8());
|
||||
|
||||
EVP_add_cipher(EVP_des_ofb());
|
||||
EVP_add_cipher(EVP_des_ede_ofb());
|
||||
EVP_add_cipher(EVP_des_ede3_ofb());
|
||||
|
||||
EVP_add_cipher(EVP_desx_cbc());
|
||||
EVP_add_cipher_alias(SN_desx_cbc, "DESX");
|
||||
EVP_add_cipher_alias(SN_desx_cbc, "desx");
|
||||
|
||||
EVP_add_cipher(EVP_des_cbc());
|
||||
EVP_add_cipher_alias(SN_des_cbc, "DES");
|
||||
EVP_add_cipher_alias(SN_des_cbc, "des");
|
||||
EVP_add_cipher(EVP_des_ede_cbc());
|
||||
EVP_add_cipher(EVP_des_ede3_cbc());
|
||||
EVP_add_cipher_alias(SN_des_ede3_cbc, "DES3");
|
||||
EVP_add_cipher_alias(SN_des_ede3_cbc, "des3");
|
||||
|
||||
EVP_add_cipher(EVP_des_ecb());
|
||||
EVP_add_cipher(EVP_des_ede());
|
||||
EVP_add_cipher(EVP_des_ede3());
|
||||
#endif
|
||||
|
||||
#ifndef OPENSSL_NO_RC4
|
||||
EVP_add_cipher(EVP_rc4());
|
||||
EVP_add_cipher(EVP_rc4_40());
|
||||
#ifndef OPENSSL_NO_MD5
|
||||
EVP_add_cipher(EVP_rc4_hmac_md5());
|
||||
#endif
|
||||
#endif
|
||||
|
||||
#ifndef OPENSSL_NO_IDEA
|
||||
EVP_add_cipher(EVP_idea_ecb());
|
||||
EVP_add_cipher(EVP_idea_cfb());
|
||||
EVP_add_cipher(EVP_idea_ofb());
|
||||
EVP_add_cipher(EVP_idea_cbc());
|
||||
EVP_add_cipher_alias(SN_idea_cbc, "IDEA");
|
||||
EVP_add_cipher_alias(SN_idea_cbc, "idea");
|
||||
#endif
|
||||
|
||||
#ifndef OPENSSL_NO_RC2
|
||||
EVP_add_cipher(EVP_rc2_ecb());
|
||||
EVP_add_cipher(EVP_rc2_cfb());
|
||||
EVP_add_cipher(EVP_rc2_ofb());
|
||||
EVP_add_cipher(EVP_rc2_cbc());
|
||||
EVP_add_cipher(EVP_rc2_40_cbc());
|
||||
EVP_add_cipher(EVP_rc2_64_cbc());
|
||||
EVP_add_cipher_alias(SN_rc2_cbc, "RC2");
|
||||
EVP_add_cipher_alias(SN_rc2_cbc, "rc2");
|
||||
#endif
|
||||
|
||||
#ifndef OPENSSL_NO_BF
|
||||
EVP_add_cipher(EVP_bf_ecb());
|
||||
EVP_add_cipher(EVP_bf_cfb());
|
||||
EVP_add_cipher(EVP_bf_ofb());
|
||||
EVP_add_cipher(EVP_bf_cbc());
|
||||
EVP_add_cipher_alias(SN_bf_cbc, "BF");
|
||||
EVP_add_cipher_alias(SN_bf_cbc, "bf");
|
||||
EVP_add_cipher_alias(SN_bf_cbc, "blowfish");
|
||||
#endif
|
||||
|
||||
#ifndef OPENSSL_NO_CAST
|
||||
EVP_add_cipher(EVP_cast5_ecb());
|
||||
EVP_add_cipher(EVP_cast5_cfb());
|
||||
EVP_add_cipher(EVP_cast5_ofb());
|
||||
EVP_add_cipher(EVP_cast5_cbc());
|
||||
EVP_add_cipher_alias(SN_cast5_cbc, "CAST");
|
||||
EVP_add_cipher_alias(SN_cast5_cbc, "cast");
|
||||
EVP_add_cipher_alias(SN_cast5_cbc, "CAST-cbc");
|
||||
EVP_add_cipher_alias(SN_cast5_cbc, "cast-cbc");
|
||||
#endif
|
||||
|
||||
#ifndef OPENSSL_NO_AES
|
||||
EVP_add_cipher(EVP_aes_128_ecb());
|
||||
EVP_add_cipher(EVP_aes_128_cbc());
|
||||
EVP_add_cipher(EVP_aes_128_ccm());
|
||||
EVP_add_cipher(EVP_aes_128_cfb());
|
||||
EVP_add_cipher(EVP_aes_128_cfb1());
|
||||
EVP_add_cipher(EVP_aes_128_cfb8());
|
||||
EVP_add_cipher(EVP_aes_128_ofb());
|
||||
EVP_add_cipher(EVP_aes_128_ctr());
|
||||
EVP_add_cipher(EVP_aes_128_gcm());
|
||||
EVP_add_cipher(EVP_aes_128_wrap());
|
||||
EVP_add_cipher(EVP_aes_128_xts());
|
||||
EVP_add_cipher_alias(SN_aes_128_cbc, "AES128");
|
||||
EVP_add_cipher_alias(SN_aes_128_cbc, "aes128");
|
||||
EVP_add_cipher(EVP_aes_192_ecb());
|
||||
EVP_add_cipher(EVP_aes_192_cbc());
|
||||
EVP_add_cipher(EVP_aes_192_ccm());
|
||||
EVP_add_cipher(EVP_aes_192_cfb());
|
||||
EVP_add_cipher(EVP_aes_192_cfb1());
|
||||
EVP_add_cipher(EVP_aes_192_cfb8());
|
||||
EVP_add_cipher(EVP_aes_192_ofb());
|
||||
EVP_add_cipher(EVP_aes_192_ctr());
|
||||
EVP_add_cipher(EVP_aes_192_gcm());
|
||||
EVP_add_cipher(EVP_aes_192_wrap());
|
||||
EVP_add_cipher_alias(SN_aes_192_cbc, "AES192");
|
||||
EVP_add_cipher_alias(SN_aes_192_cbc, "aes192");
|
||||
EVP_add_cipher(EVP_aes_256_ecb());
|
||||
EVP_add_cipher(EVP_aes_256_cbc());
|
||||
EVP_add_cipher(EVP_aes_256_ccm());
|
||||
EVP_add_cipher(EVP_aes_256_cfb());
|
||||
EVP_add_cipher(EVP_aes_256_cfb1());
|
||||
EVP_add_cipher(EVP_aes_256_cfb8());
|
||||
EVP_add_cipher(EVP_aes_256_ofb());
|
||||
EVP_add_cipher(EVP_aes_256_ctr());
|
||||
EVP_add_cipher(EVP_aes_256_gcm());
|
||||
EVP_add_cipher(EVP_aes_256_wrap());
|
||||
EVP_add_cipher(EVP_aes_256_xts());
|
||||
EVP_add_cipher_alias(SN_aes_256_cbc, "AES256");
|
||||
EVP_add_cipher_alias(SN_aes_256_cbc, "aes256");
|
||||
#if !defined(OPENSSL_NO_SHA) && !defined(OPENSSL_NO_SHA1)
|
||||
EVP_add_cipher(EVP_aes_128_cbc_hmac_sha1());
|
||||
EVP_add_cipher(EVP_aes_256_cbc_hmac_sha1());
|
||||
#endif
|
||||
#endif
|
||||
|
||||
#ifndef OPENSSL_NO_CAMELLIA
|
||||
EVP_add_cipher(EVP_camellia_128_ecb());
|
||||
EVP_add_cipher(EVP_camellia_128_cbc());
|
||||
EVP_add_cipher(EVP_camellia_128_cfb());
|
||||
EVP_add_cipher(EVP_camellia_128_cfb1());
|
||||
EVP_add_cipher(EVP_camellia_128_cfb8());
|
||||
EVP_add_cipher(EVP_camellia_128_ofb());
|
||||
EVP_add_cipher_alias(SN_camellia_128_cbc, "CAMELLIA128");
|
||||
EVP_add_cipher_alias(SN_camellia_128_cbc, "camellia128");
|
||||
EVP_add_cipher(EVP_camellia_192_ecb());
|
||||
EVP_add_cipher(EVP_camellia_192_cbc());
|
||||
EVP_add_cipher(EVP_camellia_192_cfb());
|
||||
EVP_add_cipher(EVP_camellia_192_cfb1());
|
||||
EVP_add_cipher(EVP_camellia_192_cfb8());
|
||||
EVP_add_cipher(EVP_camellia_192_ofb());
|
||||
EVP_add_cipher_alias(SN_camellia_192_cbc, "CAMELLIA192");
|
||||
EVP_add_cipher_alias(SN_camellia_192_cbc, "camellia192");
|
||||
EVP_add_cipher(EVP_camellia_256_ecb());
|
||||
EVP_add_cipher(EVP_camellia_256_cbc());
|
||||
EVP_add_cipher(EVP_camellia_256_cfb());
|
||||
EVP_add_cipher(EVP_camellia_256_cfb1());
|
||||
EVP_add_cipher(EVP_camellia_256_cfb8());
|
||||
EVP_add_cipher(EVP_camellia_256_ofb());
|
||||
EVP_add_cipher_alias(SN_camellia_256_cbc, "CAMELLIA256");
|
||||
EVP_add_cipher_alias(SN_camellia_256_cbc, "camellia256");
|
||||
#endif
|
||||
|
||||
#ifndef OPENSSL_NO_CHACHA
|
||||
EVP_add_cipher(EVP_chacha20());
|
||||
EVP_add_cipher_alias(SN_chacha20, "ChaCha20");
|
||||
EVP_add_cipher_alias(LN_chacha20, "chacha20");
|
||||
#endif
|
||||
#if !defined(OPENSSL_NO_CHACHA) && !defined(OPENSSL_NO_POLY1305)
|
||||
EVP_add_cipher(EVP_chacha20_poly1305());
|
||||
#endif
|
||||
|
||||
#ifndef OPENSSL_NO_GOST
|
||||
EVP_add_cipher(EVP_gost2814789_ecb());
|
||||
EVP_add_cipher(EVP_gost2814789_cfb64());
|
||||
EVP_add_cipher(EVP_gost2814789_cnt());
|
||||
#endif
|
||||
|
||||
#ifndef OPENSSL_NO_SM4
|
||||
EVP_add_cipher(EVP_sm4_ecb());
|
||||
EVP_add_cipher(EVP_sm4_cbc());
|
||||
EVP_add_cipher(EVP_sm4_cfb());
|
||||
EVP_add_cipher(EVP_sm4_ofb());
|
||||
EVP_add_cipher(EVP_sm4_ctr());
|
||||
EVP_add_cipher_alias(SN_sm4_cbc, "SM4");
|
||||
EVP_add_cipher_alias(SN_sm4_cbc, "sm4");
|
||||
#endif
|
||||
}
|
||||
|
||||
void
|
||||
OpenSSL_add_all_ciphers(void)
|
||||
{
|
||||
static pthread_once_t add_all_ciphers_once = PTHREAD_ONCE_INIT;
|
||||
(void) pthread_once(&add_all_ciphers_once, OpenSSL_add_all_ciphers_internal);
|
||||
}
|
||||
|
||||
static void
|
||||
OpenSSL_add_all_digests_internal(void)
|
||||
{
|
||||
#ifndef OPENSSL_NO_MD4
|
||||
EVP_add_digest(EVP_md4());
|
||||
#endif
|
||||
|
||||
#ifndef OPENSSL_NO_MD5
|
||||
EVP_add_digest(EVP_md5());
|
||||
EVP_add_digest(EVP_md5_sha1());
|
||||
EVP_add_digest_alias(SN_md5, "ssl2-md5");
|
||||
EVP_add_digest_alias(SN_md5, "ssl3-md5");
|
||||
#endif
|
||||
|
||||
#if !defined(OPENSSL_NO_SHA) && !defined(OPENSSL_NO_SHA1)
|
||||
EVP_add_digest(EVP_sha1());
|
||||
EVP_add_digest_alias(SN_sha1, "ssl3-sha1");
|
||||
EVP_add_digest_alias(SN_sha1WithRSAEncryption, SN_sha1WithRSA);
|
||||
#endif
|
||||
|
||||
#ifndef OPENSSL_NO_GOST
|
||||
EVP_add_digest(EVP_gostr341194());
|
||||
EVP_add_digest(EVP_gost2814789imit());
|
||||
EVP_add_digest(EVP_streebog256());
|
||||
EVP_add_digest(EVP_streebog512());
|
||||
#endif
|
||||
#ifndef OPENSSL_NO_RIPEMD
|
||||
EVP_add_digest(EVP_ripemd160());
|
||||
EVP_add_digest_alias(SN_ripemd160, "ripemd");
|
||||
EVP_add_digest_alias(SN_ripemd160, "rmd160");
|
||||
#endif
|
||||
#ifndef OPENSSL_NO_SHA256
|
||||
EVP_add_digest(EVP_sha224());
|
||||
EVP_add_digest(EVP_sha256());
|
||||
#endif
|
||||
#ifndef OPENSSL_NO_SHA512
|
||||
EVP_add_digest(EVP_sha384());
|
||||
EVP_add_digest(EVP_sha512());
|
||||
EVP_add_digest(EVP_sha512_224());
|
||||
EVP_add_digest(EVP_sha512_256());
|
||||
#endif
|
||||
#ifndef OPENSSL_NO_SHA3
|
||||
EVP_add_digest(EVP_sha3_224());
|
||||
EVP_add_digest(EVP_sha3_256());
|
||||
EVP_add_digest(EVP_sha3_384());
|
||||
EVP_add_digest(EVP_sha3_512());
|
||||
#endif
|
||||
#ifndef OPENSSL_NO_SM3
|
||||
EVP_add_digest(EVP_sm3());
|
||||
#endif
|
||||
#ifndef OPENSSL_NO_WHIRLPOOL
|
||||
EVP_add_digest(EVP_whirlpool());
|
||||
#endif
|
||||
}
|
||||
|
||||
void
|
||||
OpenSSL_add_all_digests(void)
|
||||
{
|
||||
static pthread_once_t add_all_digests_once = PTHREAD_ONCE_INIT;
|
||||
(void) pthread_once(&add_all_digests_once, OpenSSL_add_all_digests_internal);
|
||||
}
|
||||
|
||||
void
|
||||
OPENSSL_add_all_algorithms_noconf(void)
|
||||
{
|
||||
OpenSSL_add_all_ciphers();
|
||||
OpenSSL_add_all_digests();
|
||||
}
|
||||
|
||||
void
|
||||
OPENSSL_add_all_algorithms_conf(void)
|
||||
{
|
||||
OPENSSL_add_all_algorithms_noconf();
|
||||
OPENSSL_config(NULL);
|
||||
}
|
1838
lib/libcrypto/evp/evp_names.c
Normal file
1838
lib/libcrypto/evp/evp_names.c
Normal file
File diff suppressed because it is too large
Load diff
|
@ -1,239 +0,0 @@
|
|||
/* $OpenBSD: names.c,v 1.22 2023/12/15 14:22:10 tb 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/evp.h>
|
||||
#include <openssl/objects.h>
|
||||
#include <openssl/x509.h>
|
||||
|
||||
#include "evp_local.h"
|
||||
|
||||
extern int obj_cleanup_defer;
|
||||
void check_defer(int nid);
|
||||
|
||||
int
|
||||
EVP_add_cipher(const EVP_CIPHER *c)
|
||||
{
|
||||
int r;
|
||||
|
||||
if (c == NULL)
|
||||
return 0;
|
||||
|
||||
r = OBJ_NAME_add(OBJ_nid2sn(c->nid), OBJ_NAME_TYPE_CIPHER_METH,
|
||||
(const char *)c);
|
||||
if (r == 0)
|
||||
return (0);
|
||||
check_defer(c->nid);
|
||||
r = OBJ_NAME_add(OBJ_nid2ln(c->nid), OBJ_NAME_TYPE_CIPHER_METH,
|
||||
(const char *)c);
|
||||
return (r);
|
||||
}
|
||||
|
||||
int
|
||||
EVP_add_digest(const EVP_MD *md)
|
||||
{
|
||||
int r;
|
||||
const char *name;
|
||||
|
||||
name = OBJ_nid2sn(md->type);
|
||||
r = OBJ_NAME_add(name, OBJ_NAME_TYPE_MD_METH, (const char *)md);
|
||||
if (r == 0)
|
||||
return (0);
|
||||
check_defer(md->type);
|
||||
r = OBJ_NAME_add(OBJ_nid2ln(md->type), OBJ_NAME_TYPE_MD_METH,
|
||||
(const char *)md);
|
||||
if (r == 0)
|
||||
return (0);
|
||||
|
||||
if (md->pkey_type && md->type != md->pkey_type) {
|
||||
r = OBJ_NAME_add(OBJ_nid2sn(md->pkey_type),
|
||||
OBJ_NAME_TYPE_MD_METH|OBJ_NAME_ALIAS, name);
|
||||
if (r == 0)
|
||||
return (0);
|
||||
check_defer(md->pkey_type);
|
||||
r = OBJ_NAME_add(OBJ_nid2ln(md->pkey_type),
|
||||
OBJ_NAME_TYPE_MD_METH|OBJ_NAME_ALIAS, name);
|
||||
}
|
||||
return (r);
|
||||
}
|
||||
|
||||
const EVP_CIPHER *
|
||||
EVP_get_cipherbyname(const char *name)
|
||||
{
|
||||
if (!OPENSSL_init_crypto(0, NULL))
|
||||
return NULL;
|
||||
|
||||
return (const EVP_CIPHER *)OBJ_NAME_get(name, OBJ_NAME_TYPE_CIPHER_METH);
|
||||
}
|
||||
|
||||
const EVP_MD *
|
||||
EVP_get_digestbyname(const char *name)
|
||||
{
|
||||
if (!OPENSSL_init_crypto(0, NULL))
|
||||
return NULL;
|
||||
|
||||
return (const EVP_MD *)OBJ_NAME_get(name, OBJ_NAME_TYPE_MD_METH);
|
||||
}
|
||||
|
||||
void
|
||||
EVP_cleanup(void)
|
||||
{
|
||||
OBJ_NAME_cleanup(OBJ_NAME_TYPE_CIPHER_METH);
|
||||
OBJ_NAME_cleanup(OBJ_NAME_TYPE_MD_METH);
|
||||
/* The above calls will only clean out the contents of the name
|
||||
hash table, but not the hash table itself. The following line
|
||||
does that part. -- Richard Levitte */
|
||||
OBJ_NAME_cleanup(-1);
|
||||
|
||||
if (obj_cleanup_defer == 2) {
|
||||
obj_cleanup_defer = 0;
|
||||
OBJ_cleanup();
|
||||
}
|
||||
}
|
||||
|
||||
struct doall_cipher {
|
||||
void *arg;
|
||||
void (*fn)(const EVP_CIPHER *ciph, const char *from, const char *to,
|
||||
void *arg);
|
||||
};
|
||||
|
||||
static void
|
||||
do_all_cipher_fn(const OBJ_NAME *nm, void *arg)
|
||||
{
|
||||
struct doall_cipher *dc = arg;
|
||||
|
||||
if (nm->alias)
|
||||
dc->fn(NULL, nm->name, nm->data, dc->arg);
|
||||
else
|
||||
dc->fn((const EVP_CIPHER *)nm->data, nm->name, NULL, dc->arg);
|
||||
}
|
||||
|
||||
void
|
||||
EVP_CIPHER_do_all(void (*fn)(const EVP_CIPHER *ciph, const char *from,
|
||||
const char *to, void *x), void *arg)
|
||||
{
|
||||
struct doall_cipher dc;
|
||||
|
||||
/* Prayer and clean living lets you ignore errors, OpenSSL style */
|
||||
(void) OPENSSL_init_crypto(0, NULL);
|
||||
|
||||
dc.fn = fn;
|
||||
dc.arg = arg;
|
||||
OBJ_NAME_do_all(OBJ_NAME_TYPE_CIPHER_METH, do_all_cipher_fn, &dc);
|
||||
}
|
||||
|
||||
void
|
||||
EVP_CIPHER_do_all_sorted(void (*fn)(const EVP_CIPHER *ciph, const char *from,
|
||||
const char *to, void *x), void *arg)
|
||||
{
|
||||
struct doall_cipher dc;
|
||||
|
||||
/* Prayer and clean living lets you ignore errors, OpenSSL style */
|
||||
(void) OPENSSL_init_crypto(0, NULL);
|
||||
|
||||
dc.fn = fn;
|
||||
dc.arg = arg;
|
||||
OBJ_NAME_do_all_sorted(OBJ_NAME_TYPE_CIPHER_METH,
|
||||
do_all_cipher_fn, &dc);
|
||||
}
|
||||
|
||||
struct doall_md {
|
||||
void *arg;
|
||||
void (*fn)(const EVP_MD *ciph, const char *from, const char *to,
|
||||
void *arg);
|
||||
};
|
||||
|
||||
static void
|
||||
do_all_md_fn(const OBJ_NAME *nm, void *arg)
|
||||
{
|
||||
struct doall_md *dc = arg;
|
||||
|
||||
if (nm->alias)
|
||||
dc->fn(NULL, nm->name, nm->data, dc->arg);
|
||||
else
|
||||
dc->fn((const EVP_MD *)nm->data, nm->name, NULL, dc->arg);
|
||||
}
|
||||
|
||||
void
|
||||
EVP_MD_do_all(void (*fn)(const EVP_MD *md, const char *from, const char *to,
|
||||
void *x), void *arg)
|
||||
{
|
||||
struct doall_md dc;
|
||||
|
||||
/* Prayer and clean living lets you ignore errors, OpenSSL style */
|
||||
(void) OPENSSL_init_crypto(0, NULL);
|
||||
|
||||
dc.fn = fn;
|
||||
dc.arg = arg;
|
||||
OBJ_NAME_do_all(OBJ_NAME_TYPE_MD_METH, do_all_md_fn, &dc);
|
||||
}
|
||||
|
||||
void
|
||||
EVP_MD_do_all_sorted(void (*fn)(const EVP_MD *md,
|
||||
const char *from, const char *to, void *x), void *arg)
|
||||
{
|
||||
struct doall_md dc;
|
||||
|
||||
/* Prayer and clean living lets you ignore errors, OpenSSL style */
|
||||
(void) OPENSSL_init_crypto(0, NULL);
|
||||
|
||||
dc.fn = fn;
|
||||
dc.arg = arg;
|
||||
OBJ_NAME_do_all_sorted(OBJ_NAME_TYPE_MD_METH, do_all_md_fn, &dc);
|
||||
}
|
|
@ -1,4 +1,4 @@
|
|||
/* $OpenBSD: pmeth_lib.c,v 1.36 2024/01/04 20:15:01 tb Exp $ */
|
||||
/* $OpenBSD: pmeth_lib.c,v 1.37 2024/01/13 12:46:59 tb Exp $ */
|
||||
/* Written by Dr Stephen N Henson (steve@openssl.org) for the OpenSSL
|
||||
* project 2006.
|
||||
*/
|
||||
|
@ -101,14 +101,14 @@ static const EVP_PKEY_METHOD *pkey_methods[] = {
|
|||
|
||||
#define N_PKEY_METHODS (sizeof(pkey_methods) / sizeof(pkey_methods[0]))
|
||||
|
||||
const EVP_PKEY_METHOD *
|
||||
EVP_PKEY_meth_find(int type)
|
||||
static const EVP_PKEY_METHOD *
|
||||
evp_pkey_method_find(int nid)
|
||||
{
|
||||
size_t i;
|
||||
|
||||
for (i = 0; i < N_PKEY_METHODS; i++) {
|
||||
const EVP_PKEY_METHOD *pmeth = pkey_methods[i];
|
||||
if (pmeth->pkey_id == type)
|
||||
if (pmeth->pkey_id == nid)
|
||||
return pmeth;
|
||||
}
|
||||
|
||||
|
@ -116,18 +116,18 @@ EVP_PKEY_meth_find(int type)
|
|||
}
|
||||
|
||||
static EVP_PKEY_CTX *
|
||||
evp_pkey_ctx_new(EVP_PKEY *pkey, int id)
|
||||
evp_pkey_ctx_new(EVP_PKEY *pkey, int nid)
|
||||
{
|
||||
EVP_PKEY_CTX *pkey_ctx = NULL;
|
||||
const EVP_PKEY_METHOD *pmeth;
|
||||
|
||||
if (id == -1) {
|
||||
if (nid == -1) {
|
||||
if (pkey == NULL || pkey->ameth == NULL)
|
||||
return NULL;
|
||||
id = pkey->ameth->pkey_id;
|
||||
nid = pkey->ameth->pkey_id;
|
||||
}
|
||||
|
||||
if ((pmeth = EVP_PKEY_meth_find(id)) == NULL) {
|
||||
if ((pmeth = evp_pkey_method_find(nid)) == NULL) {
|
||||
EVPerror(EVP_R_UNSUPPORTED_ALGORITHM);
|
||||
goto err;
|
||||
}
|
||||
|
@ -154,50 +154,6 @@ evp_pkey_ctx_new(EVP_PKEY *pkey, int id)
|
|||
return NULL;
|
||||
}
|
||||
|
||||
EVP_PKEY_METHOD*
|
||||
EVP_PKEY_meth_new(int id, int flags)
|
||||
{
|
||||
EVP_PKEY_METHOD *pmeth;
|
||||
|
||||
if ((pmeth = calloc(1, sizeof(EVP_PKEY_METHOD))) == NULL)
|
||||
return NULL;
|
||||
|
||||
pmeth->pkey_id = id;
|
||||
pmeth->flags = flags | EVP_PKEY_FLAG_DYNAMIC;
|
||||
|
||||
return pmeth;
|
||||
}
|
||||
|
||||
void
|
||||
EVP_PKEY_meth_get0_info(int *ppkey_id, int *pflags, const EVP_PKEY_METHOD *meth)
|
||||
{
|
||||
if (ppkey_id)
|
||||
*ppkey_id = meth->pkey_id;
|
||||
if (pflags)
|
||||
*pflags = meth->flags;
|
||||
}
|
||||
|
||||
void
|
||||
EVP_PKEY_meth_copy(EVP_PKEY_METHOD *dst, const EVP_PKEY_METHOD *src)
|
||||
{
|
||||
EVP_PKEY_METHOD preserve;
|
||||
|
||||
preserve.pkey_id = dst->pkey_id;
|
||||
preserve.flags = dst->flags;
|
||||
|
||||
*dst = *src;
|
||||
|
||||
dst->pkey_id = preserve.pkey_id;
|
||||
dst->flags = preserve.flags;
|
||||
}
|
||||
|
||||
void
|
||||
EVP_PKEY_meth_free(EVP_PKEY_METHOD *pmeth)
|
||||
{
|
||||
if (pmeth && (pmeth->flags & EVP_PKEY_FLAG_DYNAMIC))
|
||||
free(pmeth);
|
||||
}
|
||||
|
||||
EVP_PKEY_CTX *
|
||||
EVP_PKEY_CTX_new(EVP_PKEY *pkey, ENGINE *engine)
|
||||
{
|
||||
|
@ -205,9 +161,9 @@ EVP_PKEY_CTX_new(EVP_PKEY *pkey, ENGINE *engine)
|
|||
}
|
||||
|
||||
EVP_PKEY_CTX *
|
||||
EVP_PKEY_CTX_new_id(int id, ENGINE *engine)
|
||||
EVP_PKEY_CTX_new_id(int nid, ENGINE *engine)
|
||||
{
|
||||
return evp_pkey_ctx_new(NULL, id);
|
||||
return evp_pkey_ctx_new(NULL, nid);
|
||||
}
|
||||
|
||||
EVP_PKEY_CTX *
|
||||
|
@ -241,13 +197,6 @@ EVP_PKEY_CTX_dup(EVP_PKEY_CTX *pctx)
|
|||
return NULL;
|
||||
}
|
||||
|
||||
int
|
||||
EVP_PKEY_meth_add0(const EVP_PKEY_METHOD *pmeth)
|
||||
{
|
||||
EVPerror(ERR_R_DISABLED);
|
||||
return 0;
|
||||
}
|
||||
|
||||
void
|
||||
EVP_PKEY_CTX_free(EVP_PKEY_CTX *ctx)
|
||||
{
|
||||
|
@ -399,25 +348,62 @@ EVP_PKEY_CTX_get_app_data(EVP_PKEY_CTX *ctx)
|
|||
return ctx->app_data;
|
||||
}
|
||||
|
||||
/*
|
||||
* Remove all the functions below in the next major bump
|
||||
*/
|
||||
|
||||
const EVP_PKEY_METHOD *
|
||||
EVP_PKEY_meth_find(int type)
|
||||
{
|
||||
EVPerror(ERR_R_DISABLED);
|
||||
return NULL;
|
||||
}
|
||||
|
||||
EVP_PKEY_METHOD*
|
||||
EVP_PKEY_meth_new(int id, int flags)
|
||||
{
|
||||
EVPerror(ERR_R_DISABLED);
|
||||
return NULL;
|
||||
}
|
||||
|
||||
void
|
||||
EVP_PKEY_meth_get0_info(int *ppkey_id, int *pflags, const EVP_PKEY_METHOD *meth)
|
||||
{
|
||||
}
|
||||
|
||||
void
|
||||
EVP_PKEY_meth_copy(EVP_PKEY_METHOD *dst, const EVP_PKEY_METHOD *src)
|
||||
{
|
||||
}
|
||||
|
||||
void
|
||||
EVP_PKEY_meth_free(EVP_PKEY_METHOD *pmeth)
|
||||
{
|
||||
}
|
||||
|
||||
int
|
||||
EVP_PKEY_meth_add0(const EVP_PKEY_METHOD *pmeth)
|
||||
{
|
||||
EVPerror(ERR_R_DISABLED);
|
||||
return 0;
|
||||
}
|
||||
|
||||
void
|
||||
EVP_PKEY_meth_set_init(EVP_PKEY_METHOD *pmeth,
|
||||
int (*init)(EVP_PKEY_CTX *ctx))
|
||||
{
|
||||
pmeth->init = init;
|
||||
}
|
||||
|
||||
void
|
||||
EVP_PKEY_meth_set_copy(EVP_PKEY_METHOD *pmeth,
|
||||
int (*copy)(EVP_PKEY_CTX *dst, EVP_PKEY_CTX *src))
|
||||
{
|
||||
pmeth->copy = copy;
|
||||
}
|
||||
|
||||
void
|
||||
EVP_PKEY_meth_set_cleanup(EVP_PKEY_METHOD *pmeth,
|
||||
void (*cleanup)(EVP_PKEY_CTX *ctx))
|
||||
{
|
||||
pmeth->cleanup = cleanup;
|
||||
}
|
||||
|
||||
void
|
||||
|
@ -425,8 +411,6 @@ EVP_PKEY_meth_set_paramgen(EVP_PKEY_METHOD *pmeth,
|
|||
int (*paramgen_init)(EVP_PKEY_CTX *ctx),
|
||||
int (*paramgen)(EVP_PKEY_CTX *ctx, EVP_PKEY *pkey))
|
||||
{
|
||||
pmeth->paramgen_init = paramgen_init;
|
||||
pmeth->paramgen = paramgen;
|
||||
}
|
||||
|
||||
void
|
||||
|
@ -434,8 +418,6 @@ EVP_PKEY_meth_set_keygen(EVP_PKEY_METHOD *pmeth,
|
|||
int (*keygen_init)(EVP_PKEY_CTX *ctx),
|
||||
int (*keygen)(EVP_PKEY_CTX *ctx, EVP_PKEY *pkey))
|
||||
{
|
||||
pmeth->keygen_init = keygen_init;
|
||||
pmeth->keygen = keygen;
|
||||
}
|
||||
|
||||
void
|
||||
|
@ -444,8 +426,6 @@ EVP_PKEY_meth_set_sign(EVP_PKEY_METHOD *pmeth,
|
|||
int (*sign)(EVP_PKEY_CTX *ctx, unsigned char *sig, size_t *siglen,
|
||||
const unsigned char *tbs, size_t tbslen))
|
||||
{
|
||||
pmeth->sign_init = sign_init;
|
||||
pmeth->sign = sign;
|
||||
}
|
||||
|
||||
void
|
||||
|
@ -454,8 +434,6 @@ EVP_PKEY_meth_set_verify(EVP_PKEY_METHOD *pmeth,
|
|||
int (*verify)(EVP_PKEY_CTX *ctx, const unsigned char *sig, size_t siglen,
|
||||
const unsigned char *tbs, size_t tbslen))
|
||||
{
|
||||
pmeth->verify_init = verify_init;
|
||||
pmeth->verify = verify;
|
||||
}
|
||||
|
||||
void
|
||||
|
@ -465,8 +443,6 @@ EVP_PKEY_meth_set_verify_recover(EVP_PKEY_METHOD *pmeth,
|
|||
unsigned char *sig, size_t *siglen,
|
||||
const unsigned char *tbs, size_t tbslen))
|
||||
{
|
||||
pmeth->verify_recover_init = verify_recover_init;
|
||||
pmeth->verify_recover = verify_recover;
|
||||
}
|
||||
|
||||
void
|
||||
|
@ -475,8 +451,6 @@ EVP_PKEY_meth_set_signctx(EVP_PKEY_METHOD *pmeth,
|
|||
int (*signctx)(EVP_PKEY_CTX *ctx, unsigned char *sig, size_t *siglen,
|
||||
EVP_MD_CTX *mctx))
|
||||
{
|
||||
pmeth->signctx_init = signctx_init;
|
||||
pmeth->signctx = signctx;
|
||||
}
|
||||
|
||||
void
|
||||
|
@ -485,8 +459,6 @@ EVP_PKEY_meth_set_verifyctx(EVP_PKEY_METHOD *pmeth,
|
|||
int (*verifyctx)(EVP_PKEY_CTX *ctx, const unsigned char *sig, int siglen,
|
||||
EVP_MD_CTX *mctx))
|
||||
{
|
||||
pmeth->verifyctx_init = verifyctx_init;
|
||||
pmeth->verifyctx = verifyctx;
|
||||
}
|
||||
|
||||
void
|
||||
|
@ -495,8 +467,6 @@ EVP_PKEY_meth_set_encrypt(EVP_PKEY_METHOD *pmeth,
|
|||
int (*encryptfn)(EVP_PKEY_CTX *ctx, unsigned char *out, size_t *outlen,
|
||||
const unsigned char *in, size_t inlen))
|
||||
{
|
||||
pmeth->encrypt_init = encrypt_init;
|
||||
pmeth->encrypt = encryptfn;
|
||||
}
|
||||
|
||||
void
|
||||
|
@ -505,8 +475,6 @@ EVP_PKEY_meth_set_decrypt(EVP_PKEY_METHOD *pmeth,
|
|||
int (*decrypt)(EVP_PKEY_CTX *ctx, unsigned char *out, size_t *outlen,
|
||||
const unsigned char *in, size_t inlen))
|
||||
{
|
||||
pmeth->decrypt_init = decrypt_init;
|
||||
pmeth->decrypt = decrypt;
|
||||
}
|
||||
|
||||
void
|
||||
|
@ -514,8 +482,6 @@ EVP_PKEY_meth_set_derive(EVP_PKEY_METHOD *pmeth,
|
|||
int (*derive_init)(EVP_PKEY_CTX *ctx),
|
||||
int (*derive)(EVP_PKEY_CTX *ctx, unsigned char *key, size_t *keylen))
|
||||
{
|
||||
pmeth->derive_init = derive_init;
|
||||
pmeth->derive = derive;
|
||||
}
|
||||
|
||||
void
|
||||
|
@ -523,26 +489,21 @@ EVP_PKEY_meth_set_ctrl(EVP_PKEY_METHOD *pmeth,
|
|||
int (*ctrl)(EVP_PKEY_CTX *ctx, int type, int p1, void *p2),
|
||||
int (*ctrl_str)(EVP_PKEY_CTX *ctx, const char *type, const char *value))
|
||||
{
|
||||
pmeth->ctrl = ctrl;
|
||||
pmeth->ctrl_str = ctrl_str;
|
||||
}
|
||||
|
||||
void
|
||||
EVP_PKEY_meth_set_check(EVP_PKEY_METHOD *pmeth, int (*check)(EVP_PKEY *pkey))
|
||||
{
|
||||
pmeth->check = check;
|
||||
}
|
||||
|
||||
void
|
||||
EVP_PKEY_meth_set_public_check(EVP_PKEY_METHOD *pmeth,
|
||||
int (*public_check)(EVP_PKEY *pkey))
|
||||
{
|
||||
pmeth->public_check = public_check;
|
||||
}
|
||||
|
||||
void
|
||||
EVP_PKEY_meth_set_param_check(EVP_PKEY_METHOD *pmeth,
|
||||
int (*param_check)(EVP_PKEY *pkey))
|
||||
{
|
||||
pmeth->param_check = param_check;
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue