Deprecate RSA harder

This deprecates all functions that deal with the types RSA and RSA_METHOD

Reviewed-by: Paul Dale <paul.dale@oracle.com>
(Merged from https://github.com/openssl/openssl/pull/13096)
This commit is contained in:
Richard Levitte 2020-10-04 16:34:31 +02:00
parent b24d6c335d
commit d7e498ac55
44 changed files with 1182 additions and 756 deletions

View File

@ -79,9 +79,7 @@ int genrsa_main(int argc, char **argv)
BN_GENCB *cb = BN_GENCB_new();
ENGINE *eng = NULL;
BIGNUM *bn = BN_new();
RSA *rsa;
BIO *out = NULL;
const BIGNUM *e;
EVP_PKEY *pkey = NULL;
EVP_PKEY_CTX *ctx = NULL;
const EVP_CIPHER *enc = NULL;
@ -205,9 +203,11 @@ opthelp:
}
if (verbose) {
if ((rsa = EVP_PKEY_get0_RSA(pkey)) != NULL) {
RSA_get0_key(rsa, NULL, &e, NULL);
} else {
BIGNUM *e = NULL;
/* Every RSA key has an 'e' */
EVP_PKEY_get_bn_param(pkey, "e", &e);
if (e == NULL) {
BIO_printf(bio_err, "Error cannot access RSA e\n");
goto end;
}
@ -218,6 +218,7 @@ opthelp:
}
OPENSSL_free(hexe);
OPENSSL_free(dece);
BN_free(e);
}
if (traditional) {
if (!PEM_write_bio_PrivateKey_traditional(out, pkey, enc, NULL, 0,

View File

@ -939,10 +939,13 @@ int req_main(int argc, char **argv)
}
fprintf(stdout, "Modulus=");
#ifndef OPENSSL_NO_RSA
if (EVP_PKEY_base_id(tpubkey) == EVP_PKEY_RSA) {
const BIGNUM *n;
RSA_get0_key(EVP_PKEY_get0_RSA(tpubkey), &n, NULL, NULL);
if (EVP_PKEY_is_a(tpubkey, "RSA")) {
BIGNUM *n;
/* Every RSA key has an 'n' */
EVP_PKEY_get_bn_param(pkey, "n", &n);
BN_print(out, n);
BN_free(n);
} else
#endif
fprintf(stdout, "Wrong Algorithm type");

View File

@ -22,6 +22,13 @@
#include <openssl/x509.h>
#include <openssl/pem.h>
#include <openssl/bn.h>
#include <openssl/encoder.h>
/*
* TODO: This include is to get OSSL_KEYMGMT_SELECT_*, which feels a bit
* much just for those macros... they might serve better as EVP macros.
*/
#include <openssl/core_dispatch.h>
typedef enum OPTION_choice {
OPT_ERR = -1, OPT_EOF = 0, OPT_HELP,
@ -62,12 +69,10 @@ const OPTIONS rsa_options[] = {
{"traditional", OPT_TRADITIONAL, '-',
"Use traditional format for private keys"},
#if !defined(OPENSSL_NO_DSA) && !defined(OPENSSL_NO_RC4)
OPT_SECTION("PVK"),
{"pvk-strong", OPT_PVK_STRONG, '-', "Enable 'Strong' PVK encoding level (default)"},
{"pvk-weak", OPT_PVK_WEAK, '-', "Enable 'Weak' PVK encoding level"},
{"pvk-none", OPT_PVK_NONE, '-', "Don't enforce PVK encoding"},
#endif
OPT_PROV_OPTIONS,
{NULL}
@ -77,20 +82,21 @@ int rsa_main(int argc, char **argv)
{
ENGINE *e = NULL;
BIO *out = NULL;
RSA *rsa = NULL;
EVP_PKEY *pkey = NULL;
EVP_PKEY_CTX *pctx;
const EVP_CIPHER *enc = NULL;
char *infile = NULL, *outfile = NULL, *prog;
char *passin = NULL, *passout = NULL, *passinarg = NULL, *passoutarg = NULL;
int i, private = 0;
int private = 0;
int informat = FORMAT_PEM, outformat = FORMAT_PEM, text = 0, check = 0;
int noout = 0, modulus = 0, pubin = 0, pubout = 0, ret = 1;
#if !defined(OPENSSL_NO_DSA) && !defined(OPENSSL_NO_RC4)
int pvk_encr = 2;
#endif
OPTION_CHOICE o;
int traditional = 0;
const char *output_type = NULL;
const char *output_structure = NULL;
int selection = 0;
OSSL_ENCODER_CTX *ectx = NULL;
prog = opt_init(argc, argv, rsa_options);
while ((o = opt_next()) != OPT_EOF) {
@ -142,9 +148,7 @@ int rsa_main(int argc, char **argv)
case OPT_PVK_STRONG: /* pvk_encr:= 2 */
case OPT_PVK_WEAK: /* pvk_encr:= 1 */
case OPT_PVK_NONE: /* pvk_encr:= 0 */
#if !defined(OPENSSL_NO_DSA) && !defined(OPENSSL_NO_RC4)
pvk_encr = (o - OPT_PVK_NONE);
#endif
break;
case OPT_NOOUT:
noout = 1;
@ -203,13 +207,14 @@ int rsa_main(int argc, char **argv)
pkey = load_key(infile, informat, 1, passin, e, "private key");
}
if (pkey != NULL)
rsa = EVP_PKEY_get1_RSA(pkey);
if (rsa == NULL) {
if (pkey == NULL) {
ERR_print_errors(bio_err);
goto end;
}
if (!EVP_PKEY_is_a(pkey, "RSA")) {
BIO_printf(bio_err, "Not an RSA key\n");
goto end;
}
out = bio_open_owner(outfile, outformat, private);
if (out == NULL)
@ -226,11 +231,14 @@ int rsa_main(int argc, char **argv)
}
if (modulus) {
const BIGNUM *n;
RSA_get0_key(rsa, &n, NULL, NULL);
BIGNUM *n = NULL;
/* Every RSA key has an 'n' */
EVP_PKEY_get_bn_param(pkey, "n", &n);
BIO_printf(out, "Modulus=");
BN_print(out, n);
BIO_printf(out, "\n");
BN_free(n);
}
if (check) {
@ -268,77 +276,81 @@ int rsa_main(int argc, char **argv)
goto end;
}
BIO_printf(bio_err, "writing RSA key\n");
if (outformat == FORMAT_ASN1) {
if (pubout || pubin) {
if (pubout == 2)
i = i2d_RSAPublicKey_bio(out, rsa);
else
i = i2d_RSA_PUBKEY_bio(out, rsa);
} else {
assert(private);
i = i2d_RSAPrivateKey_bio(out, rsa);
}
} else if (outformat == FORMAT_PEM) {
if (pubout || pubin) {
if (pubout == 2)
i = PEM_write_bio_RSAPublicKey(out, rsa);
else
i = PEM_write_bio_RSA_PUBKEY(out, rsa);
} else {
assert(private);
if (traditional) {
i = PEM_write_bio_PrivateKey_traditional(out, pkey, enc, NULL, 0,
NULL, passout);
} else {
i = PEM_write_bio_PrivateKey(out, pkey,
enc, NULL, 0, NULL, passout);
}
}
#ifndef OPENSSL_NO_DSA
} else if (outformat == FORMAT_MSBLOB || outformat == FORMAT_PVK) {
EVP_PKEY *pk;
pk = EVP_PKEY_new();
if (pk == NULL)
goto end;
EVP_PKEY_set1_RSA(pk, rsa);
if (outformat == FORMAT_PVK) {
if (pubin) {
BIO_printf(bio_err, "PVK form impossible with public key input\n");
EVP_PKEY_free(pk);
goto end;
}
assert(private);
# ifdef OPENSSL_NO_RC4
BIO_printf(bio_err, "PVK format not supported\n");
EVP_PKEY_free(pk);
/* Choose output type for the format */
if (outformat == FORMAT_ASN1) {
output_type = "DER";
} else if (outformat == FORMAT_PEM) {
output_type = "PEM";
} else if (outformat == FORMAT_MSBLOB) {
output_type = "MSBLOB";
} else if (outformat == FORMAT_PVK) {
if (pubin) {
BIO_printf(bio_err, "PVK form impossible with public key input\n");
goto end;
# else
i = i2b_PVK_bio(out, pk, pvk_encr, 0, passout);
# endif
} else if (pubin || pubout) {
i = i2b_PublicKey_bio(out, pk);
} else {
assert(private);
i = i2b_PrivateKey_bio(out, pk);
}
EVP_PKEY_free(pk);
#endif
output_type = "PVK";
} else {
BIO_printf(bio_err, "bad output format specified for outfile\n");
goto end;
}
if (i <= 0) {
/* Select what you want in the output */
if (pubout || pubin) {
selection = OSSL_KEYMGMT_SELECT_PUBLIC_KEY;
} else {
assert(private);
selection = (OSSL_KEYMGMT_SELECT_KEYPAIR
| OSSL_KEYMGMT_SELECT_ALL_PARAMETERS);
}
/* For DER based output, select the desired output structure */
if (outformat == FORMAT_ASN1 || outformat == FORMAT_PEM) {
if (pubout || pubin) {
if (pubout == 2)
output_structure = "SubjectPublicKeyInfo";
else
output_structure = "pkcs1"; /* "type-specific" would work too */
} else {
assert(private);
if (traditional)
output_structure = "pkcs1"; /* "type-specific" would work too */
else
output_structure = "pkcs8";
}
}
/* Now, perform the encoding */
ectx = OSSL_ENCODER_CTX_new_by_EVP_PKEY(pkey, selection,
output_type, output_structure,
NULL, NULL);
if (OSSL_ENCODER_CTX_get_num_encoders(ectx) == 0) {
BIO_printf(bio_err, "%s format not supported\n", output_type);
goto end;
}
/* PVK is a bit special... */
if (outformat == FORMAT_PVK) {
OSSL_PARAM params[2] = { OSSL_PARAM_END, OSSL_PARAM_END };
params[0] = OSSL_PARAM_construct_int("encrypt-level", &pvk_encr);
if (!OSSL_ENCODER_CTX_set_params(ectx, params)) {
BIO_printf(bio_err, "invalid PVK encryption level\n");
goto end;
}
}
if (!OSSL_ENCODER_to_bio(ectx, out)) {
BIO_printf(bio_err, "unable to write key\n");
ERR_print_errors(bio_err);
} else {
ret = 0;
goto end;
}
ret = 0;
end:
OSSL_ENCODER_CTX_free(ectx);
release_engine(e);
BIO_free_all(out);
EVP_PKEY_free(pkey);
RSA_free(rsa);
OPENSSL_free(passin);
OPENSSL_free(passout);
return ret;

View File

@ -7,9 +7,6 @@
* https://www.openssl.org/source/license.html
*/
/* We need to use the deprecated RSA low level calls */
#define OPENSSL_SUPPRESS_DEPRECATED
#include <openssl/opensslconf.h>
#include "apps.h"
@ -78,14 +75,15 @@ int rsautl_main(int argc, char **argv)
BIO *in = NULL, *out = NULL;
ENGINE *e = NULL;
EVP_PKEY *pkey = NULL;
RSA *rsa = NULL;
EVP_PKEY_CTX *ctx = NULL;
X509 *x;
char *infile = NULL, *outfile = NULL, *keyfile = NULL;
char *passinarg = NULL, *passin = NULL, *prog;
char rsa_mode = RSA_VERIFY, key_type = KEY_PRIVKEY;
unsigned char *rsa_in = NULL, *rsa_out = NULL, pad = RSA_PKCS1_PADDING;
int rsa_inlen, keyformat = FORMAT_PEM, keysize, ret = 1;
int rsa_outlen = 0, hexdump = 0, asn1parse = 0, need_priv = 0, rev = 0;
size_t rsa_inlen, rsa_outlen = 0;
int keyformat = FORMAT_PEM, keysize, ret = 1, rv;
int hexdump = 0, asn1parse = 0, need_priv = 0, rev = 0;
OPTION_CHOICE o;
prog = opt_init(argc, argv, rsautl_options);
@ -208,15 +206,6 @@ int rsautl_main(int argc, char **argv)
if (pkey == NULL)
return 1;
rsa = EVP_PKEY_get1_RSA(pkey);
EVP_PKEY_free(pkey);
if (rsa == NULL) {
BIO_printf(bio_err, "Error getting RSA key\n");
ERR_print_errors(bio_err);
goto end;
}
in = bio_open_default(infile, 'r', FORMAT_BINARY);
if (in == NULL)
goto end;
@ -224,48 +213,58 @@ int rsautl_main(int argc, char **argv)
if (out == NULL)
goto end;
keysize = RSA_size(rsa);
keysize = EVP_PKEY_size(pkey);
rsa_in = app_malloc(keysize * 2, "hold rsa key");
rsa_out = app_malloc(keysize, "output rsa key");
rsa_outlen = keysize;
/* Read the input data */
rsa_inlen = BIO_read(in, rsa_in, keysize * 2);
if (rsa_inlen < 0) {
rv = BIO_read(in, rsa_in, keysize * 2);
if (rv < 0) {
BIO_printf(bio_err, "Error reading input Data\n");
goto end;
}
rsa_inlen = rv;
if (rev) {
int i;
size_t i;
unsigned char ctmp;
for (i = 0; i < rsa_inlen / 2; i++) {
ctmp = rsa_in[i];
rsa_in[i] = rsa_in[rsa_inlen - 1 - i];
rsa_in[rsa_inlen - 1 - i] = ctmp;
}
}
if ((ctx = EVP_PKEY_CTX_new_from_pkey(NULL, pkey, NULL)) == NULL)
goto end;
switch (rsa_mode) {
case RSA_VERIFY:
rsa_outlen = RSA_public_decrypt(rsa_inlen, rsa_in, rsa_out, rsa, pad);
rv = EVP_PKEY_verify_recover_init(ctx)
&& EVP_PKEY_CTX_set_rsa_padding(ctx, pad)
&& EVP_PKEY_verify_recover(ctx, rsa_out, &rsa_outlen,
rsa_in, rsa_inlen);
break;
case RSA_SIGN:
rsa_outlen =
RSA_private_encrypt(rsa_inlen, rsa_in, rsa_out, rsa, pad);
rv = EVP_PKEY_sign_init(ctx)
&& EVP_PKEY_CTX_set_rsa_padding(ctx, pad)
&& EVP_PKEY_sign(ctx, rsa_out, &rsa_outlen, rsa_in, rsa_inlen);
break;
case RSA_ENCRYPT:
rsa_outlen = RSA_public_encrypt(rsa_inlen, rsa_in, rsa_out, rsa, pad);
rv = EVP_PKEY_encrypt_init(ctx)
&& EVP_PKEY_CTX_set_rsa_padding(ctx, pad)
&& EVP_PKEY_encrypt(ctx, rsa_out, &rsa_outlen, rsa_in, rsa_inlen);
break;
case RSA_DECRYPT:
rsa_outlen =
RSA_private_decrypt(rsa_inlen, rsa_in, rsa_out, rsa, pad);
rv = EVP_PKEY_decrypt_init(ctx)
&& EVP_PKEY_CTX_set_rsa_padding(ctx, pad)
&& EVP_PKEY_decrypt(ctx, rsa_out, &rsa_outlen, rsa_in, rsa_inlen);
break;
}
if (rsa_outlen < 0) {
if (!rv) {
BIO_printf(bio_err, "RSA operation error\n");
ERR_print_errors(bio_err);
goto end;
@ -281,7 +280,8 @@ int rsautl_main(int argc, char **argv)
BIO_write(out, rsa_out, rsa_outlen);
}
end:
RSA_free(rsa);
EVP_PKEY_CTX_free(ctx);
EVP_PKEY_free(pkey);
release_engine(e);
BIO_free(in);
BIO_free_all(out);

View File

@ -757,10 +757,13 @@ int x509_main(int argc, char **argv)
}
BIO_printf(out, "Modulus=");
#ifndef OPENSSL_NO_RSA
if (EVP_PKEY_id(pkey) == EVP_PKEY_RSA) {
const BIGNUM *n;
RSA_get0_key(EVP_PKEY_get0_RSA(pkey), &n, NULL, NULL);
if (EVP_PKEY_is_a(pkey, "RSA")) {
BIGNUM *n;
/* Every RSA key has an 'n' */
EVP_PKEY_get_bn_param(pkey, "n", &n);
BN_print(out, n);
BN_free(n);
} else
#endif
#ifndef OPENSSL_NO_DSA

View File

@ -7,6 +7,9 @@
* https://www.openssl.org/source/license.html
*/
/* We need to use the low level ASN1 items until they are removed */
#define OPENSSL_SUPPRESS_DEPRECATED
#include <stdio.h>
#include "internal/cryptlib.h"
#include <openssl/asn1.h>

View File

@ -135,10 +135,12 @@ static ASN1_ITEM_EXP *asn1_item_list[] = {
ASN1_ITEM_ref(PROXY_CERT_INFO_EXTENSION),
ASN1_ITEM_ref(PROXY_POLICY),
#ifndef OPENSSL_NO_RSA
# ifndef OPENSSL_NO_DEPRECATED_3_0
ASN1_ITEM_ref(RSAPrivateKey),
ASN1_ITEM_ref(RSAPublicKey),
ASN1_ITEM_ref(RSA_OAEP_PARAMS),
ASN1_ITEM_ref(RSA_PSS_PARAMS),
# endif
#endif
#ifndef OPENSSL_NO_SCRYPT
ASN1_ITEM_ref(SCRYPT_PARAMS),

View File

@ -16,7 +16,9 @@
#include <openssl/encoder.h>
#include <openssl/buffer.h>
#include <openssl/x509.h>
#include <openssl/rsa.h> /* For i2d_RSAPublicKey */
#ifndef OPENSSL_NO_DEPRECATED_3_0
# include <openssl/rsa.h> /* For i2d_RSAPublicKey */
#endif
#include <openssl/dsa.h> /* For i2d_DSAPublicKey */
#include <openssl/ec.h> /* For i2o_ECPublicKey */
#include "crypto/asn1.h"
@ -105,9 +107,11 @@ int i2d_PublicKey(const EVP_PKEY *a, unsigned char **pp)
return i2d_provided(a, EVP_PKEY_PUBLIC_KEY, output_structures, pp);
}
switch (EVP_PKEY_id(a)) {
#ifndef OPENSSL_NO_RSA
#ifndef OPENSSL_NO_DEPRECATED_3_0
# ifndef OPENSSL_NO_RSA
case EVP_PKEY_RSA:
return i2d_RSAPublicKey(EVP_PKEY_get0_RSA(a), pp);
# endif
#endif
#ifndef OPENSSL_NO_DSA
case EVP_PKEY_DSA:

View File

@ -9,7 +9,7 @@ SOURCE[../../libcrypto]=$COMMON\
e_des.c e_bf.c e_idea.c e_des3.c \
e_rc4.c e_aes.c names.c e_aria.c e_sm4.c \
e_xcbc_d.c e_rc2.c e_cast.c e_rc5.c m_null.c \
p_seal.c p_sign.c p_verify.c \
p_seal.c p_sign.c p_verify.c p_legacy.c \
bio_md.c bio_b64.c bio_enc.c evp_err.c e_null.c \
c_allc.c c_alld.c bio_ok.c \
evp_pkey.c evp_pbe.c p5_crpt.c p5_crpt2.c pbe_scrypt.c \

View File

@ -7,11 +7,8 @@
* https://www.openssl.org/source/license.html
*/
/*
* RSA low level APIs are deprecated for public use, but still ok for
* internal use.
*/
#include "internal/deprecated.h"
/* We need to use the deprecated RSA low level calls */
#define OPENSSL_SUPPRESS_DEPRECATED
#include <stdio.h>
#include "internal/cryptlib.h"

View File

@ -7,11 +7,8 @@
* https://www.openssl.org/source/license.html
*/
/*
* RSA low level APIs are deprecated for public use, but still ok for
* internal use.
*/
#include "internal/deprecated.h"
/* We need to use the deprecated RSA low level calls */
#define OPENSSL_SUPPRESS_DEPRECATED
#include <stdio.h>
#include "internal/cryptlib.h"

51
crypto/evp/p_legacy.c Normal file
View File

@ -0,0 +1,51 @@
/*
* Copyright 1995-2020 The OpenSSL Project Authors. All Rights Reserved.
*
* Licensed under the Apache License 2.0 (the "License"). You may not use
* this file except in compliance with the License. You can obtain a copy
* in the file LICENSE in the source distribution or at
* https://www.openssl.org/source/license.html
*/
/*
* Legacy EVP_PKEY assign/set/get APIs are deprecated for public use, but
* still ok for internal use, particularly in providers.
*/
#include "internal/deprecated.h"
#include <openssl/types.h>
#include <openssl/evp.h>
#include <openssl/err.h>
#include <openssl/rsa.h>
#include "crypto/types.h"
#include "crypto/evp.h"
#include "evp_local.h"
int EVP_PKEY_set1_RSA(EVP_PKEY *pkey, RSA *key)
{
int ret = EVP_PKEY_assign_RSA(pkey, key);
if (ret)
RSA_up_ref(key);
return ret;
}
RSA *EVP_PKEY_get0_RSA(const EVP_PKEY *pkey)
{
if (!evp_pkey_downgrade((EVP_PKEY *)pkey)) {
ERR_raise(ERR_LIB_EVP, EVP_R_INACCESSIBLE_KEY);
return NULL;
}
if (pkey->type != EVP_PKEY_RSA && pkey->type != EVP_PKEY_RSA_PSS) {
ERR_raise(ERR_LIB_EVP, EVP_R_EXPECTING_AN_RSA_KEY);
return NULL;
}
return pkey->pkey.rsa;
}
RSA *EVP_PKEY_get1_RSA(EVP_PKEY *pkey)
{
RSA *ret = EVP_PKEY_get0_RSA(pkey);
if (ret != NULL)
RSA_up_ref(ret);
return ret;
}

View File

@ -784,37 +784,6 @@ const unsigned char *EVP_PKEY_get0_siphash(const EVP_PKEY *pkey, size_t *len)
}
# endif
# ifndef OPENSSL_NO_RSA
int EVP_PKEY_set1_RSA(EVP_PKEY *pkey, RSA *key)
{
int ret = EVP_PKEY_assign_RSA(pkey, key);
if (ret)
RSA_up_ref(key);
return ret;
}
RSA *EVP_PKEY_get0_RSA(const EVP_PKEY *pkey)
{
if (!evp_pkey_downgrade((EVP_PKEY *)pkey)) {
ERR_raise(ERR_LIB_EVP, EVP_R_INACCESSIBLE_KEY);
return NULL;
}
if (pkey->type != EVP_PKEY_RSA && pkey->type != EVP_PKEY_RSA_PSS) {
ERR_raise(ERR_LIB_EVP, EVP_R_EXPECTING_AN_RSA_KEY);
return NULL;
}
return pkey->pkey.rsa;
}
RSA *EVP_PKEY_get1_RSA(EVP_PKEY *pkey)
{
RSA *ret = EVP_PKEY_get0_RSA(pkey);
if (ret != NULL)
RSA_up_ref(ret);
return ret;
}
# endif
# ifndef OPENSSL_NO_DSA
DSA *EVP_PKEY_get0_DSA(const EVP_PKEY *pkey)
{

View File

@ -45,7 +45,8 @@ IMPLEMENT_PEM_rw(PKCS7, PKCS7, PEM_STRING_PKCS7, PKCS7)
IMPLEMENT_PEM_rw(NETSCAPE_CERT_SEQUENCE, NETSCAPE_CERT_SEQUENCE,
PEM_STRING_X509, NETSCAPE_CERT_SEQUENCE)
#ifndef OPENSSL_NO_RSA
#ifndef OPENSSL_NO_DEPRECATED_3_0
# ifndef OPENSSL_NO_RSA
/*
* We treat RSA or DSA private keys as a special case. For private keys we
* read in an EVP_PKEY structure with PEM_read_bio_PrivateKey() and extract
@ -76,7 +77,7 @@ RSA *PEM_read_bio_RSAPrivateKey(BIO *bp, RSA **rsa, pem_password_cb *cb,
return pkey_get_rsa(pktmp, rsa);
}
# ifndef OPENSSL_NO_STDIO
# ifndef OPENSSL_NO_STDIO
RSA *PEM_read_RSAPrivateKey(FILE *fp, RSA **rsa, pem_password_cb *cb, void *u)
{
@ -85,11 +86,12 @@ RSA *PEM_read_RSAPrivateKey(FILE *fp, RSA **rsa, pem_password_cb *cb, void *u)
return pkey_get_rsa(pktmp, rsa);
}
# endif
# endif
IMPLEMENT_PEM_write_cb(RSAPrivateKey, RSA, PEM_STRING_RSA, RSAPrivateKey)
IMPLEMENT_PEM_rw(RSAPublicKey, RSA, PEM_STRING_RSA_PUBLIC, RSAPublicKey)
IMPLEMENT_PEM_rw(RSA_PUBKEY, RSA, PEM_STRING_PUBLIC, RSA_PUBKEY)
# endif
#endif
#ifndef OPENSSL_NO_DSA
static DSA *pkey_get_dsa(EVP_PKEY *key, DSA **dsa)

View File

@ -39,6 +39,9 @@
# define PEM_STRUCTURE_PrivateKey "pkcs8"
# define PEM_STRUCTURE_Parameters "type-specific"
# define PEM_STRUCTURE_RSAPrivateKey "type-specific"
# define PEM_STRUCTURE_RSAPublicKey "type-specific"
/* Alternative IMPLEMENT macros for provided encoders */
# define IMPLEMENT_PEM_provided_write_body_vars(type, asn1) \

View File

@ -7,6 +7,12 @@
* https://www.openssl.org/source/license.html
*/
/*
* RSA low level APIs are deprecated for public use, but still ok for
* internal use.
*/
#include "internal/deprecated.h"
#include <string.h>
#include <openssl/core_names.h>
#include <openssl/params.h>

View File

@ -10,7 +10,6 @@
#ifndef OSSL_CRYPTO_RSA_LOCAL_H
#define OSSL_CRYPTO_RSA_LOCAL_H
#include "crypto/rsa.h"
#include "internal/refcount.h"
#include "crypto/rsa.h"

View File

@ -0,0 +1,242 @@
=pod
=begin comment
Any deprecated keypair function from d2i_X509.pod are collected in this file.
=end comment
=head1 NAME
d2i_RSAPrivateKey,
d2i_RSAPrivateKey_bio,
d2i_RSAPrivateKey_fp,
d2i_RSAPublicKey,
d2i_RSAPublicKey_bio,
d2i_RSAPublicKey_fp,
d2i_RSA_PUBKEY,
d2i_RSA_PUBKEY_bio,
d2i_RSA_PUBKEY_fp,
i2d_RSAPrivateKey,
i2d_RSAPrivateKey_bio,
i2d_RSAPrivateKey_fp,
i2d_RSAPublicKey,
i2d_RSAPublicKey_bio,
i2d_RSAPublicKey_fp,
i2d_RSA_PUBKEY,
i2d_RSA_PUBKEY_bio,
i2d_RSA_PUBKEY_fp
- DEPRECATED
=head1 SYNOPSIS
=for openssl generic
Deprecated since OpenSSL 3.0, can be hidden entirely by defining
B<OPENSSL_API_COMPAT> with a suitable version value, see
L<openssl_user_macros(7)>:
TYPE *d2i_TYPEPrivateKey(TYPE **a, const unsigned char **ppin, long length);
TYPE *d2i_TYPEPrivateKey_bio(BIO *bp, TYPE **a);
TYPE *d2i_TYPEPrivateKey_fp(FILE *fp, TYPE **a);
TYPE *d2i_TYPEPublicKey(TYPE **a, const unsigned char **ppin, long length);
TYPE *d2i_TYPEPublicKey_bio(BIO *bp, TYPE **a);
TYPE *d2i_TYPEPublicKey_fp(FILE *fp, TYPE **a);
TYPE *d2i_TYPEparams(TYPE **a, const unsigned char **ppin, long length);
TYPE *d2i_TYPEparams_bio(BIO *bp, TYPE **a);
TYPE *d2i_TYPEparams_fp(FILE *fp, TYPE **a);
TYPE *d2i_TYPE_PUBKEY(TYPE **a, const unsigned char **ppin, long length);
TYPE *d2i_TYPE_PUBKEY_bio(BIO *bp, TYPE **a);
TYPE *d2i_TYPE_PUBKEY_fp(FILE *fp, TYPE **a);
int i2d_TYPEPrivateKey(const TYPE *a, unsigned char **ppout);
int i2d_TYPEPrivateKey(TYPE *a, unsigned char **ppout);
int i2d_TYPEPrivateKey_fp(FILE *fp, const TYPE *a);
int i2d_TYPEPrivateKey_fp(FILE *fp, TYPE *a);
int i2d_TYPEPrivateKey_bio(BIO *bp, const TYPE *a);
int i2d_TYPEPrivateKey_bio(BIO *bp, TYPE *a);
int i2d_TYPEPublicKey(const TYPE *a, unsigned char **ppout);
int i2d_TYPEPublicKey(TYPE *a, unsigned char **ppout);
int i2d_TYPEPublicKey_fp(FILE *fp, const TYPE *a);
int i2d_TYPEPublicKey_fp(FILE *fp, TYPE *a);
int i2d_TYPEPublicKey_bio(BIO *bp, const TYPE *a);
int i2d_TYPEPublicKey_bio(BIO *bp, TYPE *a);
int i2d_TYPEparams(const TYPE *a, unsigned char **ppout);
int i2d_TYPEparams(TYPE *a, unsigned char **ppout);
int i2d_TYPEparams_fp(FILE *fp, const TYPE *a);
int i2d_TYPEparams_fp(FILE *fp, TYPE *a);
int i2d_TYPEparams_bio(BIO *bp, const TYPE *a);
int i2d_TYPEparams_bio(BIO *bp, TYPE *a);
int i2d_TYPE_PUBKEY(const TYPE *a, unsigned char **ppout);
int i2d_TYPE_PUBKEY(TYPE *a, unsigned char **ppout);
int i2d_TYPE_PUBKEY_fp(FILE *fp, const TYPE *a);
int i2d_TYPE_PUBKEY_fp(FILE *fp, TYPE *a);
int i2d_TYPE_PUBKEY_bio(BIO *bp, const TYPE *a);
int i2d_TYPE_PUBKEY_bio(BIO *bp, TYPE *a);
=head1 DESCRIPTION
All functions described here are deprecated. Please use L<OSSL_DECODER(3)>
instead of the B<d2i> functions and L<OSSL_ENCODER(3)> instead of the B<i2d>
functions. See L</Migration> below.
In the description here, B<I<TYPE>> is used a placeholder for any of the
OpenSSL datatypes, such as B<RSA>.
The function parameters I<ppin> and I<ppout> are generally either both named
I<pp> in the headers, or I<in> and I<out>.
All the functions here behave the way that's described in L<d2i_X509(3)>.
Please note that not all functions in the synopsis are available for all key
types. For example, there are no d2i_RSAparams() or i2d_RSAparams(),
because the PKCS#1 B<RSA> structure doesn't include any key parameters.
B<d2i_I<TYPE>PrivateKey>() and derivates thereof decode DER encoded
B<I<TYPE>> private key data organized in a type specific structure.
B<d2i_I<TYPE>PublicKey>() and derivates thereof decode DER encoded
B<I<TYPE>> public key data organized in a type specific structure.
B<d2i_I<TYPE>params>() and derivates thereof decode DER encoded B<I<TYPE>>
key parameters organized in a type specific structure.
B<d2i_I<TYPE>_PUBKEY>() and derivates thereof decode DER encoded B<I<TYPE>>
public key data organized in a B<SubjectPublicKeyInfo> structure.
B<i2d_I<TYPE>PrivateKey>() and derivates thereof encode the private key
B<I<TYPE>> data into a type specific DER encoded structure.
B<i2d_I<TYPE>PublicKey>() and derivates thereof encode the public key
B<I<TYPE>> data into a type specific DER encoded structure.
B<i2d_I<TYPE>params>() and derivates thereof encode the B<I<TYPE>> key
parameters data into a type specific DER encoded structure.
B<i2d_I<TYPE>_PUBKEY>() and derivates thereof encode the public key
B<I<TYPE>> data into a DER encoded B<SubjectPublicKeyInfo> structure.
For example, d2i_RSAPrivateKey() and d2i_RSAPublicKey() expects the
structure defined by PKCS#1.
Similarly, i2d_RSAPrivateKey() and i2d_RSAPublicKey() produce DER encoded
string organized according to PKCS#1.
=head2 Migration
Migration from the diverse B<I<TYPE>>s requires using corresponding new
OpenSSL types. For all B<I<TYPE>>s described here, the corresponding new
type is B<EVP_PKEY>. The rest of this section assumes that this has been
done, exactly how to do that is described elsewhere.
There are two migration paths:
=over 4
=item *
Replace
b<d2i_I<TYPE>PrivateKey()> with L<d2i_PrivateKey(3)>,
b<d2i_I<TYPE>PublicKey()> with L<d2i_PublicKey(3)>,
b<d2i_I<TYPE>params()> with L<d2i_KeyParams(3)>,
b<d2i_I<TYPE>_PUBKEY()> with L<d2i_PUBKEY(3)>,
b<i2d_I<TYPE>PrivateKey()> with L<i2d_PrivateKey(3)>,
b<i2d_I<TYPE>PublicKey()> with L<i2d_PublicKey(3)>,
b<i2d_I<TYPE>params()> with L<i2d_KeyParams(3)>,
b<i2d_I<TYPE>_PUBKEY()> with L<i2d_PUBKEY(3)>.
A caveat is that L<i2d_PrivateKey(3)> may output a DER encoded PKCS#8
outermost structure instead of the type specific structure, and that
L<d2i_PrivateKey(3)> recognises and unpacks a PKCS#8 structures.
=item *
Use L<OSSL_DECODER(3)> and L<OSSL_ENCODER(3)>. How to migrate is described
below. All those descriptions assume that the key to be encoded is in the
variable I<pkey>.
=back
=head3 Migrating B<i2d> functions to B<OSSL_ENCODER>
The exact L<OSSL_ENCODER(3)> output is driven by arguments rather than by
function names. The sample code to get DER encoded output in a type
specific structure is uniform, the only things that vary are the selection
of what part of the B<EVP_PKEY> should be output, and the structure. The
B<i2d> functions names can therefore be translated into two variables,
I<selection> and I<structure> as follows:
=over 4
=item B<i2d_I<TYPE>PrivateKey>() translates into:
int selection = EVP_PKEY_PRIVATE_KEY;
const char *structure = "type-specific";
=item B<i2d_I<TYPE>PublicKey>() translates into:
int selection = EVP_PKEY_PUBLIC_KEY;
const char *structure = "type-specific";
=item B<i2d_I<TYPE>params>() translates into:
int selection = EVP_PKEY_PARAMETERS;
const char *structure = "type-specific";
=item B<i2d_I<TYPE>_PUBKEY>() translates into:
int selection = EVP_PKEY_PUBLIC_KEY;
const char *structure = "SubjectPublicKeyInfo";
=back
The following sample code does the rest of the work:
unsigned char *p = buffer; /* |buffer| is supplied by the caller */
size_t len = buffer_size; /* assumed be the size of |buffer| */
OSSL_ENCODER_CTX *ctx =
OSSL_ENCODER_CTX_new_by_EVP_PKEY(pkey, selection, "DER", structure,
NULL, NULL);
if (ctx == NULL) {
/* fatal error handling */
}
if (OSSL_ENCODER_CTX_get_num_encoders(ctx) == 0) {
OSSL_ENCODER_CTX_free(ctx);
/* non-fatal error handling */
}
if (!OSSL_ENCODER_to_data(ctx, &p, &len)) {
OSSL_ENCODER_CTX_free(ctx);
/* error handling */
}
OSSL_ENCODER_CTX_free(ctx);
=for comment TODO: a similar section on OSSL_DECODER is to be added
=head1 RETURN VALUES
B<d2i_I<TYPE>>(), B<d2i_I<TYPE>_bio>() and B<d2i_I<TYPE>_fp>() return a valid
B<I<TYPE>> structure or NULL if an error occurs. If the "reuse" capability has
been used with a valid structure being passed in via I<a>, then the object is
freed in the event of error and I<*a> is set to NULL.
B<i2d_I<TYPE>>() returns the number of bytes successfully encoded or a negative
value if an error occurs.
B<i2d_I<TYPE>_bio>() and B<i2d_I<TYPE>_fp>() return 1 for success and 0 if an
error occurs.
=head1 SEE ALSO
L<OSSL_ENCODER(3)>, L<OSSL_DECODER(3)>,
L<d2i_PrivateKey(3)>, L<d2i_PublicKey(3)>, L<d2i_KeyParams(3)>,
L<d2i_PUBKEY(3)>,
L<i2d_PrivateKey(3)>, L<i2d_PublicKey(3)>, L<i2d_KeyParams(3)>,
L<i2d_PUBKEY(3)>
=head1 COPYRIGHT
Copyright 2020 The OpenSSL Project Authors. All Rights Reserved.
Licensed under the Apache License 2.0 (the "License"). You may not use
this file except in compliance with the License. You can obtain a copy
in the file LICENSE in the source distribution or at
L<https://www.openssl.org/source/license.html>.
=cut

View File

@ -1,5 +1,12 @@
=pod
=begin comment
Any keypair function here that gets deprecated should be moved to
d2i_RSAPrivateKey.pod.
=end comment
=head1 NAME
d2i_ACCESS_DESCRIPTION,
@ -141,17 +148,8 @@ d2i_POLICYQUALINFO,
d2i_PROFESSION_INFO,
d2i_PROXY_CERT_INFO_EXTENSION,
d2i_PROXY_POLICY,
d2i_RSAPrivateKey,
d2i_RSAPrivateKey_bio,
d2i_RSAPrivateKey_fp,
d2i_RSAPublicKey,
d2i_RSAPublicKey_bio,
d2i_RSAPublicKey_fp,
d2i_RSA_OAEP_PARAMS,
d2i_RSA_PSS_PARAMS,
d2i_RSA_PUBKEY,
d2i_RSA_PUBKEY_bio,
d2i_RSA_PUBKEY_fp,
d2i_SCRYPT_PARAMS,
d2i_SCT_LIST,
d2i_SXNET,
@ -337,17 +335,8 @@ i2d_POLICYQUALINFO,
i2d_PROFESSION_INFO,
i2d_PROXY_CERT_INFO_EXTENSION,
i2d_PROXY_POLICY,
i2d_RSAPrivateKey,
i2d_RSAPrivateKey_bio,
i2d_RSAPrivateKey_fp,
i2d_RSAPublicKey,
i2d_RSAPublicKey_bio,
i2d_RSAPublicKey_fp,
i2d_RSA_OAEP_PARAMS,
i2d_RSA_PSS_PARAMS,
i2d_RSA_PUBKEY,
i2d_RSA_PUBKEY_bio,
i2d_RSA_PUBKEY_fp,
i2d_SCRYPT_PARAMS,
i2d_SCT_LIST,
i2d_SXNET,
@ -411,7 +400,7 @@ i2d_X509_VAL,
=head1 DESCRIPTION
In the description here, B<I<TYPE>> is used a placeholder
for any of the OpenSSL datatypes, such as I<X509_CRL>.
for any of the OpenSSL datatypes, such as B<X509_CRL>.
The function parameters I<ppin> and I<ppout> are generally
either both named I<pp> in the headers, or I<in> and I<out>.
@ -512,10 +501,6 @@ L<PEM_write_PrivateKey(3)>, or similar instead.
Represents an ECDSA signature.
=item B<RSAPublicKey>
Represents a PKCS#1 RSA public key structure.
=item B<X509_ALGOR>
Represents an B<AlgorithmIdentifier> structure as used in IETF RFC 6960 and

View File

@ -169,9 +169,11 @@ static ASN1_ITEM_EXP *item_type[] = {
ASN1_ITEM_ref(PROXY_CERT_INFO_EXTENSION),
ASN1_ITEM_ref(PROXY_POLICY),
ASN1_ITEM_ref(RSA_OAEP_PARAMS),
ASN1_ITEM_ref(RSAPrivateKey),
ASN1_ITEM_ref(RSA_PSS_PARAMS),
#ifndef OPENSSL_NO_DEPRECATED_3_0
ASN1_ITEM_ref(RSAPrivateKey),
ASN1_ITEM_ref(RSAPublicKey),
#endif
ASN1_ITEM_ref(SXNET),
ASN1_ITEM_ref(SXNETID),
ASN1_ITEM_ref(USERNOTICE),
@ -339,7 +341,9 @@ int FuzzerTestOneInput(const uint8_t *buf, size_t len)
DO_TEST_NO_PRINT(DSA, d2i_DSAPublicKey, i2d_DSAPublicKey);
DO_TEST_NO_PRINT(DSA, d2i_DSAparams, i2d_DSAparams);
#endif
#ifndef OPENSSL_NO_DEPRECATED_3_0
DO_TEST_NO_PRINT(RSA, d2i_RSAPublicKey, i2d_RSAPublicKey);
#endif
#ifndef OPENSSL_NO_EC
DO_TEST_PRINT_OFFSET(EC_GROUP, d2i_ECPKParameters, i2d_ECPKParameters, ECPKParameters_print);
DO_TEST_PRINT_OFFSET(EC_KEY, d2i_ECPrivateKey, i2d_ECPrivateKey, EC_KEY_print);

View File

@ -12,6 +12,9 @@
/* Test first part of SSL server handshake. */
/* We need to use the deprecated RSA low level calls */
#define OPENSSL_SUPPRESS_DEPRECATED
#include <time.h>
#include <openssl/rand.h>
#include <openssl/ssl.h>
@ -92,6 +95,7 @@ static const uint8_t kCertificateDER[] = {
0x76, 0x8a, 0xbb,
};
#ifndef OPENSSL_NO_DEPRECATED_3_0
static const uint8_t kRSAPrivateKeyDER[] = {
0x30, 0x82, 0x04, 0xa5, 0x02, 0x01, 0x00, 0x02, 0x82, 0x01, 0x01, 0x00,
0xce, 0x47, 0xcb, 0x11, 0xbb, 0xd2, 0x9d, 0x8e, 0x9e, 0xd2, 0x1e, 0x14,
@ -194,6 +198,7 @@ static const uint8_t kRSAPrivateKeyDER[] = {
0xb2, 0xc6, 0xb2, 0x0a, 0x2a, 0x7c, 0x6d, 0x6a, 0x40, 0xfc, 0xf5, 0x50,
0x98, 0x46, 0x89, 0x82, 0x40,
};
#endif
#ifndef OPENSSL_NO_EC
@ -512,7 +517,9 @@ int FuzzerTestOneInput(const uint8_t *buf, size_t len)
#endif
SSL_CTX *ctx;
int ret;
#ifndef OPENSSL_NO_DEPRECATED_3_0
RSA *privkey;
#endif
const uint8_t *bufp;
EVP_PKEY *pkey;
X509 *cert;
@ -539,6 +546,7 @@ int FuzzerTestOneInput(const uint8_t *buf, size_t len)
ret = SSL_CTX_set_cipher_list(ctx, "ALL:eNULL:@SECLEVEL=0");
OPENSSL_assert(ret == 1);
#ifndef OPENSSL_NO_DEPRECATED_3_0
/* RSA */
bufp = kRSAPrivateKeyDER;
privkey = d2i_RSAPrivateKey(NULL, &bufp, sizeof(kRSAPrivateKeyDER));
@ -548,6 +556,7 @@ int FuzzerTestOneInput(const uint8_t *buf, size_t len)
ret = SSL_CTX_use_PrivateKey(ctx, pkey);
OPENSSL_assert(ret == 1);
EVP_PKEY_free(pkey);
#endif
bufp = kCertificateDER;
cert = d2i_X509(NULL, &bufp, sizeof(kCertificateDER));

View File

@ -12,6 +12,7 @@
# include <openssl/core.h>
# include <openssl/rsa.h>
# include "crypto/types.h"
typedef struct rsa_pss_params_30_st {
int hash_algorithm_nid;

16
include/crypto/types.h Normal file
View File

@ -0,0 +1,16 @@
/*
* Copyright 2020 The OpenSSL Project Authors. All Rights Reserved.
*
* Licensed under the Apache License 2.0 (the "License"). You may not use
* this file except in compliance with the License. You can obtain a copy
* in the file LICENSE in the source distribution or at
* https://www.openssl.org/source/license.html
*/
/* When removal is simulated, we still need the type internally */
#ifdef OPENSSL_NO_DEPRECATED_3_0
typedef struct rsa_st RSA;
typedef struct rsa_meth_st RSA_METHOD;
#endif

View File

@ -457,9 +457,11 @@ typedef int (EVP_PBE_KEYGEN) (EVP_CIPHER_CTX *ctx, const char *pass,
const EVP_CIPHER *cipher, const EVP_MD *md,
int en_de);
# ifndef OPENSSL_NO_RSA
# define EVP_PKEY_assign_RSA(pkey,rsa) EVP_PKEY_assign((pkey),EVP_PKEY_RSA,\
(rsa))
# ifndef OPENSSL_NO_DEPRECATED_3_0
# ifndef OPENSSL_NO_RSA
# define EVP_PKEY_assign_RSA(pkey,rsa) EVP_PKEY_assign((pkey),EVP_PKEY_RSA,\
(rsa))
# endif
# endif
# ifndef OPENSSL_NO_DSA
@ -1211,11 +1213,16 @@ const unsigned char *EVP_PKEY_get0_poly1305(const EVP_PKEY *pkey, size_t *len);
const unsigned char *EVP_PKEY_get0_siphash(const EVP_PKEY *pkey, size_t *len);
# endif
# ifndef OPENSSL_NO_RSA
# ifndef OPENSSL_NO_DEPRECATED_3_0
# ifndef OPENSSL_NO_RSA
struct rsa_st;
OSSL_DEPRECATEDIN_3_0
int EVP_PKEY_set1_RSA(EVP_PKEY *pkey, struct rsa_st *key);
OSSL_DEPRECATEDIN_3_0
struct rsa_st *EVP_PKEY_get0_RSA(const EVP_PKEY *pkey);
OSSL_DEPRECATEDIN_3_0
struct rsa_st *EVP_PKEY_get1_RSA(EVP_PKEY *pkey);
# endif
# endif
# ifndef OPENSSL_NO_DSA
struct dsa_st;

View File

@ -373,10 +373,12 @@ DECLARE_PEM_rw(PKCS7, PKCS7)
DECLARE_PEM_rw(NETSCAPE_CERT_SEQUENCE, NETSCAPE_CERT_SEQUENCE)
DECLARE_PEM_rw(PKCS8, X509_SIG)
DECLARE_PEM_rw(PKCS8_PRIV_KEY_INFO, PKCS8_PRIV_KEY_INFO)
# ifndef OPENSSL_NO_RSA
DECLARE_PEM_rw_cb(RSAPrivateKey, RSA)
DECLARE_PEM_rw(RSAPublicKey, RSA)
DECLARE_PEM_rw(RSA_PUBKEY, RSA)
# ifndef OPENSSL_NO_DEPRECATED_3_0
# ifndef OPENSSL_NO_RSA
DECLARE_PEM_rw_cb_attr(OSSL_DEPRECATEDIN_3_0, RSAPrivateKey, RSA)
DECLARE_PEM_rw_attr(OSSL_DEPRECATEDIN_3_0, RSAPublicKey, RSA)
DECLARE_PEM_rw_attr(OSSL_DEPRECATEDIN_3_0, RSA_PUBKEY, RSA)
# endif
# endif
# ifndef OPENSSL_NO_DSA
DECLARE_PEM_rw_cb(DSAPrivateKey, DSA)

View File

@ -37,6 +37,9 @@ extern "C" {
# define OPENSSL_RSA_MAX_MODULUS_BITS 16384
# endif
# define RSA_3 0x3L
# define RSA_F4 0x10001L
# ifndef OPENSSL_NO_DEPRECATED_3_0
/* The types RSA and RSA_METHOD are defined in ossl_typ.h */
@ -50,24 +53,13 @@ extern "C" {
# ifndef OPENSSL_RSA_MAX_PUBEXP_BITS
# define OPENSSL_RSA_MAX_PUBEXP_BITS 64
# endif
# endif /* OPENSSL_NO_DEPRECATED_3_0 */
# define RSA_3 0x3L
# define RSA_F4 0x10001L
# ifndef OPENSSL_NO_DEPRECATED_3_0
/* based on RFC 8017 appendix A.1.2 */
# define RSA_ASN1_VERSION_DEFAULT 0
# define RSA_ASN1_VERSION_MULTI 1
# define RSA_DEFAULT_PRIME_NUM 2
# endif /* OPENSSL_NO_DEPRECATED_3_0 */
/* Don't check pub/private match */
/* TODO(3.0): deprecate this? It is exposed for sls/t1_lib.c's use */
# define RSA_METHOD_FLAG_NO_CHECK 0x0001
# ifndef OPENSSL_NO_DEPRECATED_3_0
# define RSA_METHOD_FLAG_NO_CHECK 0x0001
# define RSA_FLAG_CACHE_PUBLIC 0x0002
# define RSA_FLAG_CACHE_PRIVATE 0x0004
# define RSA_FLAG_BLINDING 0x0008
@ -132,11 +124,13 @@ int EVP_PKEY_CTX_set_rsa_pss_saltlen(EVP_PKEY_CTX *ctx, int saltlen);
int EVP_PKEY_CTX_get_rsa_pss_saltlen(EVP_PKEY_CTX *ctx, int *saltlen);
int EVP_PKEY_CTX_set_rsa_keygen_bits(EVP_PKEY_CTX *ctx, int bits);
DEPRECATEDIN_3_0(int EVP_PKEY_CTX_set_rsa_keygen_pubexp(EVP_PKEY_CTX *ctx,
BIGNUM *pubexp))
int EVP_PKEY_CTX_set1_rsa_keygen_pubexp(EVP_PKEY_CTX *ctx, BIGNUM *pubexp);
int EVP_PKEY_CTX_set_rsa_keygen_primes(EVP_PKEY_CTX *ctx, int primes);
int EVP_PKEY_CTX_set_rsa_pss_keygen_saltlen(EVP_PKEY_CTX *ctx, int saltlen);
# ifndef OPENSSL_NO_DEPRECATED_3_0
OSSL_DEPRECATEDIN_3_0
int EVP_PKEY_CTX_set_rsa_keygen_pubexp(EVP_PKEY_CTX *ctx, BIGNUM *pubexp);
# endif
/* Salt length matches digest */
# define RSA_PSS_SALTLEN_DIGEST -1
@ -206,100 +200,114 @@ int EVP_PKEY_CTX_get0_rsa_oaep_label(EVP_PKEY_CTX *ctx, unsigned char **label);
# define RSA_set_app_data(s,arg) RSA_set_ex_data(s,0,arg)
# define RSA_get_app_data(s) RSA_get_ex_data(s,0)
RSA *RSA_new(void);
DEPRECATEDIN_3_0(RSA *RSA_new_method(ENGINE *engine))
int RSA_bits(const RSA *rsa);
DEPRECATEDIN_3_0(int RSA_size(const RSA *rsa))
DEPRECATEDIN_3_0(int RSA_security_bits(const RSA *rsa))
# ifndef OPENSSL_NO_DEPRECATED_3_0
OSSL_DEPRECATEDIN_3_0 RSA *RSA_new(void);
OSSL_DEPRECATEDIN_3_0 RSA *RSA_new_method(ENGINE *engine);
OSSL_DEPRECATEDIN_3_0 int RSA_bits(const RSA *rsa);
OSSL_DEPRECATEDIN_3_0 int RSA_size(const RSA *rsa);
OSSL_DEPRECATEDIN_3_0 int RSA_security_bits(const RSA *rsa);
int RSA_set0_key(RSA *r, BIGNUM *n, BIGNUM *e, BIGNUM *d);
int RSA_set0_factors(RSA *r, BIGNUM *p, BIGNUM *q);
int RSA_set0_crt_params(RSA *r,BIGNUM *dmp1, BIGNUM *dmq1, BIGNUM *iqmp);
int RSA_set0_multi_prime_params(RSA *r, BIGNUM *primes[], BIGNUM *exps[],
BIGNUM *coeffs[], int pnum);
void RSA_get0_key(const RSA *r,
const BIGNUM **n, const BIGNUM **e, const BIGNUM **d);
void RSA_get0_factors(const RSA *r, const BIGNUM **p, const BIGNUM **q);
int RSA_get_multi_prime_extra_count(const RSA *r);
int RSA_get0_multi_prime_factors(const RSA *r, const BIGNUM *primes[]);
void RSA_get0_crt_params(const RSA *r,
const BIGNUM **dmp1, const BIGNUM **dmq1,
const BIGNUM **iqmp);
OSSL_DEPRECATEDIN_3_0 int RSA_set0_key(RSA *r, BIGNUM *n, BIGNUM *e, BIGNUM *d);
OSSL_DEPRECATEDIN_3_0 int RSA_set0_factors(RSA *r, BIGNUM *p, BIGNUM *q);
OSSL_DEPRECATEDIN_3_0 int RSA_set0_crt_params(RSA *r,
BIGNUM *dmp1, BIGNUM *dmq1,
BIGNUM *iqmp);
OSSL_DEPRECATEDIN_3_0 int RSA_set0_multi_prime_params(RSA *r,
BIGNUM *primes[],
BIGNUM *exps[],
BIGNUM *coeffs[],
int pnum);
OSSL_DEPRECATEDIN_3_0 void RSA_get0_key(const RSA *r,
const BIGNUM **n, const BIGNUM **e,
const BIGNUM **d);
OSSL_DEPRECATEDIN_3_0 void RSA_get0_factors(const RSA *r,
const BIGNUM **p, const BIGNUM **q);
OSSL_DEPRECATEDIN_3_0 int RSA_get_multi_prime_extra_count(const RSA *r);
OSSL_DEPRECATEDIN_3_0 int RSA_get0_multi_prime_factors(const RSA *r,
const BIGNUM *primes[]);
OSSL_DEPRECATEDIN_3_0 void RSA_get0_crt_params(const RSA *r,
const BIGNUM **dmp1,
const BIGNUM **dmq1,
const BIGNUM **iqmp);
OSSL_DEPRECATEDIN_3_0
int RSA_get0_multi_prime_crt_params(const RSA *r, const BIGNUM *exps[],
const BIGNUM *coeffs[]);
const BIGNUM *RSA_get0_n(const RSA *d);
const BIGNUM *RSA_get0_e(const RSA *d);
const BIGNUM *RSA_get0_d(const RSA *d);
const BIGNUM *RSA_get0_p(const RSA *d);
const BIGNUM *RSA_get0_q(const RSA *d);
const BIGNUM *RSA_get0_dmp1(const RSA *r);
const BIGNUM *RSA_get0_dmq1(const RSA *r);
const BIGNUM *RSA_get0_iqmp(const RSA *r);
DEPRECATEDIN_3_0(const RSA_PSS_PARAMS *RSA_get0_pss_params(const RSA *r))
void RSA_clear_flags(RSA *r, int flags);
int RSA_test_flags(const RSA *r, int flags);
void RSA_set_flags(RSA *r, int flags);
DEPRECATEDIN_3_0(int RSA_get_version(RSA *r))
DEPRECATEDIN_3_0(ENGINE *RSA_get0_engine(const RSA *r))
OSSL_DEPRECATEDIN_3_0 const BIGNUM *RSA_get0_n(const RSA *d);
OSSL_DEPRECATEDIN_3_0 const BIGNUM *RSA_get0_e(const RSA *d);
OSSL_DEPRECATEDIN_3_0 const BIGNUM *RSA_get0_d(const RSA *d);
OSSL_DEPRECATEDIN_3_0 const BIGNUM *RSA_get0_p(const RSA *d);
OSSL_DEPRECATEDIN_3_0 const BIGNUM *RSA_get0_q(const RSA *d);
OSSL_DEPRECATEDIN_3_0 const BIGNUM *RSA_get0_dmp1(const RSA *r);
OSSL_DEPRECATEDIN_3_0 const BIGNUM *RSA_get0_dmq1(const RSA *r);
OSSL_DEPRECATEDIN_3_0 const BIGNUM *RSA_get0_iqmp(const RSA *r);
OSSL_DEPRECATEDIN_3_0 const RSA_PSS_PARAMS *RSA_get0_pss_params(const RSA *r);
OSSL_DEPRECATEDIN_3_0 void RSA_clear_flags(RSA *r, int flags);
OSSL_DEPRECATEDIN_3_0 int RSA_test_flags(const RSA *r, int flags);
OSSL_DEPRECATEDIN_3_0 void RSA_set_flags(RSA *r, int flags);
OSSL_DEPRECATEDIN_3_0 int RSA_get_version(RSA *r);
OSSL_DEPRECATEDIN_3_0 ENGINE *RSA_get0_engine(const RSA *r);
/* Deprecated version */
DEPRECATEDIN_0_9_8(RSA *RSA_generate_key(int bits, unsigned long e, void
(*callback) (int, int, void *),
void *cb_arg))
OSSL_DEPRECATEDIN_0_9_8 RSA *RSA_generate_key(int bits, unsigned long e, void
(*callback) (int, int, void *),
void *cb_arg);
/* New version */
DEPRECATEDIN_3_0(int RSA_generate_key_ex(RSA *rsa, int bits, BIGNUM *e,
BN_GENCB *cb))
OSSL_DEPRECATEDIN_3_0 int RSA_generate_key_ex(RSA *rsa, int bits, BIGNUM *e,
BN_GENCB *cb);
/* Multi-prime version */
DEPRECATEDIN_3_0(int RSA_generate_multi_prime_key(RSA *rsa, int bits,
int primes, BIGNUM *e,
BN_GENCB *cb))
OSSL_DEPRECATEDIN_3_0 int RSA_generate_multi_prime_key(RSA *rsa, int bits,
int primes, BIGNUM *e,
BN_GENCB *cb);
DEPRECATEDIN_3_0(int RSA_X931_derive_ex(RSA *rsa, BIGNUM *p1, BIGNUM *p2,
BIGNUM *q1, BIGNUM *q2,
const BIGNUM *Xp1, const BIGNUM *Xp2,
const BIGNUM *Xp, const BIGNUM *Xq1,
const BIGNUM *Xq2, const BIGNUM *Xq,
const BIGNUM *e, BN_GENCB *cb))
DEPRECATEDIN_3_0(int RSA_X931_generate_key_ex(RSA *rsa, int bits,
const BIGNUM *e, BN_GENCB *cb))
OSSL_DEPRECATEDIN_3_0
int RSA_X931_derive_ex(RSA *rsa, BIGNUM *p1, BIGNUM *p2,
BIGNUM *q1, BIGNUM *q2,
const BIGNUM *Xp1, const BIGNUM *Xp2,
const BIGNUM *Xp, const BIGNUM *Xq1,
const BIGNUM *Xq2, const BIGNUM *Xq,
const BIGNUM *e, BN_GENCB *cb);
OSSL_DEPRECATEDIN_3_0 int RSA_X931_generate_key_ex(RSA *rsa, int bits,
const BIGNUM *e,
BN_GENCB *cb);
DEPRECATEDIN_3_0(int RSA_check_key(const RSA *))
DEPRECATEDIN_3_0(int RSA_check_key_ex(const RSA *, BN_GENCB *cb))
OSSL_DEPRECATEDIN_3_0 int RSA_check_key(const RSA *);
OSSL_DEPRECATEDIN_3_0 int RSA_check_key_ex(const RSA *, BN_GENCB *cb);
/* next 4 return -1 on error */
DEPRECATEDIN_3_0(int RSA_public_encrypt(int flen, const unsigned char *from,
unsigned char *to, RSA *rsa,
int padding))
DEPRECATEDIN_3_0(int RSA_private_encrypt(int flen, const unsigned char *from,
unsigned char *to, RSA *rsa,
int padding))
DEPRECATEDIN_3_0(int RSA_public_decrypt(int flen, const unsigned char *from,
unsigned char *to, RSA *rsa,
int padding))
DEPRECATEDIN_3_0(int RSA_private_decrypt(int flen, const unsigned char *from,
unsigned char *to, RSA *rsa,
int padding))
void RSA_free(RSA *r);
OSSL_DEPRECATEDIN_3_0
int RSA_public_encrypt(int flen, const unsigned char *from, unsigned char *to,
RSA *rsa, int padding);
OSSL_DEPRECATEDIN_3_0
int RSA_private_encrypt(int flen, const unsigned char *from, unsigned char *to,
RSA *rsa, int padding);
OSSL_DEPRECATEDIN_3_0
int RSA_public_decrypt(int flen, const unsigned char *from, unsigned char *to,
RSA *rsa, int padding);
OSSL_DEPRECATEDIN_3_0
int RSA_private_decrypt(int flen, const unsigned char *from, unsigned char *to,
RSA *rsa, int padding);
OSSL_DEPRECATEDIN_3_0 void RSA_free(RSA *r);
/* "up" the RSA object's reference count */
int RSA_up_ref(RSA *r);
OSSL_DEPRECATEDIN_3_0 int RSA_up_ref(RSA *r);
OSSL_DEPRECATEDIN_3_0 int RSA_flags(const RSA *r);
/* TODO(3.0): deprecate this one ssl/ssl_rsa.c can be changed to avoid it */
int RSA_flags(const RSA *r);
DEPRECATEDIN_3_0(void RSA_set_default_method(const RSA_METHOD *meth))
DEPRECATEDIN_3_0(const RSA_METHOD *RSA_get_default_method(void))
DEPRECATEDIN_3_0(const RSA_METHOD *RSA_null_method(void))
DEPRECATEDIN_3_0(const RSA_METHOD *RSA_get_method(const RSA *rsa))
DEPRECATEDIN_3_0(int RSA_set_method(RSA *rsa, const RSA_METHOD *meth))
OSSL_DEPRECATEDIN_3_0 void RSA_set_default_method(const RSA_METHOD *meth);
OSSL_DEPRECATEDIN_3_0 const RSA_METHOD *RSA_get_default_method(void);
OSSL_DEPRECATEDIN_3_0 const RSA_METHOD *RSA_null_method(void);
OSSL_DEPRECATEDIN_3_0 const RSA_METHOD *RSA_get_method(const RSA *rsa);
OSSL_DEPRECATEDIN_3_0 int RSA_set_method(RSA *rsa, const RSA_METHOD *meth);
/* these are the actual RSA functions */
DEPRECATEDIN_3_0(const RSA_METHOD *RSA_PKCS1_OpenSSL(void))
OSSL_DEPRECATEDIN_3_0 const RSA_METHOD *RSA_PKCS1_OpenSSL(void);
DECLARE_ASN1_ENCODE_FUNCTIONS_name_attr(OSSL_DEPRECATEDIN_3_0,
RSA, RSAPublicKey)
DECLARE_ASN1_ENCODE_FUNCTIONS_name_attr(OSSL_DEPRECATEDIN_3_0,
RSA, RSAPrivateKey)
# endif /* !OPENSSL_NO_DEPRECATED_3_0 */
int RSA_pkey_ctx_ctrl(EVP_PKEY_CTX *ctx, int optype, int cmd, int p1, void *p2);
DECLARE_ASN1_ENCODE_FUNCTIONS_name(RSA, RSAPublicKey)
DECLARE_ASN1_ENCODE_FUNCTIONS_name(RSA, RSAPrivateKey)
struct rsa_pss_params_st {
X509_ALGOR *hashAlgorithm;
X509_ALGOR *maskGenAlgorithm;
@ -321,130 +329,127 @@ typedef struct rsa_oaep_params_st {
DECLARE_ASN1_FUNCTIONS(RSA_OAEP_PARAMS)
# ifndef OPENSSL_NO_STDIO
DEPRECATEDIN_3_0(int RSA_print_fp(FILE *fp, const RSA *r, int offset))
# endif
# ifndef OPENSSL_NO_DEPRECATED_3_0
# ifndef OPENSSL_NO_STDIO
OSSL_DEPRECATEDIN_3_0 int RSA_print_fp(FILE *fp, const RSA *r, int offset);
# endif
DEPRECATEDIN_3_0(int RSA_print(BIO *bp, const RSA *r, int offset))
OSSL_DEPRECATEDIN_3_0 int RSA_print(BIO *bp, const RSA *r, int offset);
/*
* The following 2 functions sign and verify a X509_SIG ASN1 object inside
* PKCS#1 padded RSA encryption
*/
DEPRECATEDIN_3_0(int RSA_sign(int type, const unsigned char *m,
unsigned int m_length, unsigned char *sigret,
unsigned int *siglen, RSA *rsa))
DEPRECATEDIN_3_0(int RSA_verify(int type, const unsigned char *m,
unsigned int m_length,
const unsigned char *sigbuf,
unsigned int siglen, RSA *rsa))
OSSL_DEPRECATEDIN_3_0 int RSA_sign(int type, const unsigned char *m,
unsigned int m_length, unsigned char *sigret,
unsigned int *siglen, RSA *rsa);
OSSL_DEPRECATEDIN_3_0 int RSA_verify(int type, const unsigned char *m,
unsigned int m_length,
const unsigned char *sigbuf,
unsigned int siglen, RSA *rsa);
/*
* The following 2 function sign and verify a ASN1_OCTET_STRING object inside
* PKCS#1 padded RSA encryption
*/
DEPRECATEDIN_3_0(int RSA_sign_ASN1_OCTET_STRING(int type,
const unsigned char *m,
unsigned int m_length,
unsigned char *sigret,
unsigned int *siglen, RSA *rsa))
DEPRECATEDIN_3_0(int RSA_verify_ASN1_OCTET_STRING(int type,
const unsigned char *m,
unsigned int m_length,
unsigned char *sigbuf,
unsigned int siglen,
RSA *rsa))
OSSL_DEPRECATEDIN_3_0
int RSA_sign_ASN1_OCTET_STRING(int type,
const unsigned char *m, unsigned int m_length,
unsigned char *sigret, unsigned int *siglen,
RSA *rsa);
OSSL_DEPRECATEDIN_3_0
int RSA_verify_ASN1_OCTET_STRING(int type,
const unsigned char *m, unsigned int m_length,
unsigned char *sigbuf, unsigned int siglen,
RSA *rsa);
/* TODO(3.0): figure out how to deprecate these two */
int RSA_blinding_on(RSA *rsa, BN_CTX *ctx);
void RSA_blinding_off(RSA *rsa);
DEPRECATEDIN_3_0(BN_BLINDING *RSA_setup_blinding(RSA *rsa, BN_CTX *ctx))
OSSL_DEPRECATEDIN_3_0 int RSA_blinding_on(RSA *rsa, BN_CTX *ctx);
OSSL_DEPRECATEDIN_3_0 void RSA_blinding_off(RSA *rsa);
OSSL_DEPRECATEDIN_3_0 BN_BLINDING *RSA_setup_blinding(RSA *rsa, BN_CTX *ctx);
DEPRECATEDIN_3_0(int RSA_padding_add_PKCS1_type_1(unsigned char *to, int tlen,
const unsigned char *f,
int fl))
DEPRECATEDIN_3_0(int RSA_padding_check_PKCS1_type_1(unsigned char *to, int tlen,
const unsigned char *f,
int fl, int rsa_len))
DEPRECATEDIN_3_0(int RSA_padding_add_PKCS1_type_2(unsigned char *to, int tlen,
const unsigned char *f,
int fl))
DEPRECATEDIN_3_0(int RSA_padding_check_PKCS1_type_2(unsigned char *to, int tlen,
const unsigned char *f,
int fl, int rsa_len))
DEPRECATEDIN_3_0(int PKCS1_MGF1(unsigned char *mask, long len,
const unsigned char *seed, long seedlen,
const EVP_MD *dgst))
DEPRECATEDIN_3_0(int RSA_padding_add_PKCS1_OAEP(unsigned char *to, int tlen,
const unsigned char *f, int fl,
const unsigned char *p, int pl))
DEPRECATEDIN_3_0(int RSA_padding_check_PKCS1_OAEP(unsigned char *to, int tlen,
const unsigned char *f,
int fl, int rsa_len,
const unsigned char *p,
int pl))
DEPRECATEDIN_3_0(int RSA_padding_add_PKCS1_OAEP_mgf1(unsigned char *to,
int tlen,
const unsigned char *from,
int flen,
const unsigned char *param,
int plen,
const EVP_MD *md,
const EVP_MD *mgf1md))
DEPRECATEDIN_3_0(int RSA_padding_check_PKCS1_OAEP_mgf1(unsigned char *to,
int tlen,
const unsigned char *from,
int flen, int num,
const unsigned char *param,
int plen, const EVP_MD *md,
const EVP_MD *mgf1md))
DEPRECATEDIN_3_0(int RSA_padding_add_SSLv23(unsigned char *to, int tlen,
const unsigned char *f, int fl))
DEPRECATEDIN_3_0(int RSA_padding_check_SSLv23(unsigned char *to, int tlen,
const unsigned char *f, int fl,
int rsa_len))
DEPRECATEDIN_3_0(int RSA_padding_add_none(unsigned char *to, int tlen,
const unsigned char *f, int fl))
DEPRECATEDIN_3_0(int RSA_padding_check_none(unsigned char *to, int tlen,
const unsigned char *f, int fl,
int rsa_len))
DEPRECATEDIN_3_0(int RSA_padding_add_X931(unsigned char *to, int tlen,
const unsigned char *f, int fl))
DEPRECATEDIN_3_0(int RSA_padding_check_X931(unsigned char *to, int tlen,
const unsigned char *f, int fl,
int rsa_len))
DEPRECATEDIN_3_0(int RSA_X931_hash_id(int nid))
OSSL_DEPRECATEDIN_3_0
int RSA_padding_add_PKCS1_type_1(unsigned char *to, int tlen,
const unsigned char *f, int fl);
OSSL_DEPRECATEDIN_3_0
int RSA_padding_check_PKCS1_type_1(unsigned char *to, int tlen,
const unsigned char *f, int fl,
int rsa_len);
OSSL_DEPRECATEDIN_3_0
int RSA_padding_add_PKCS1_type_2(unsigned char *to, int tlen,
const unsigned char *f, int fl);
OSSL_DEPRECATEDIN_3_0
int RSA_padding_check_PKCS1_type_2(unsigned char *to, int tlen,
const unsigned char *f, int fl,
int rsa_len);
OSSL_DEPRECATEDIN_3_0 int PKCS1_MGF1(unsigned char *mask, long len,
const unsigned char *seed, long seedlen,
const EVP_MD *dgst);
OSSL_DEPRECATEDIN_3_0
int RSA_padding_add_PKCS1_OAEP(unsigned char *to, int tlen,
const unsigned char *f, int fl,
const unsigned char *p, int pl);
OSSL_DEPRECATEDIN_3_0
int RSA_padding_check_PKCS1_OAEP(unsigned char *to, int tlen,
const unsigned char *f, int fl, int rsa_len,
const unsigned char *p, int pl);
OSSL_DEPRECATEDIN_3_0
int RSA_padding_add_PKCS1_OAEP_mgf1(unsigned char *to, int tlen,
const unsigned char *from, int flen,
const unsigned char *param, int plen,
const EVP_MD *md, const EVP_MD *mgf1md);
OSSL_DEPRECATEDIN_3_0
int RSA_padding_check_PKCS1_OAEP_mgf1(unsigned char *to, int tlen,
const unsigned char *from, int flen,
int num,
const unsigned char *param, int plen,
const EVP_MD *md, const EVP_MD *mgf1md);
OSSL_DEPRECATEDIN_3_0
int RSA_padding_add_SSLv23(unsigned char *to, int tlen,
const unsigned char *f, int fl);
OSSL_DEPRECATEDIN_3_0
int RSA_padding_check_SSLv23(unsigned char *to, int tlen,
const unsigned char *f, int fl,
int rsa_len);
OSSL_DEPRECATEDIN_3_0 int RSA_padding_add_none(unsigned char *to, int tlen,
const unsigned char *f, int fl);
OSSL_DEPRECATEDIN_3_0 int RSA_padding_check_none(unsigned char *to, int tlen,
const unsigned char *f, int fl,
int rsa_len);
OSSL_DEPRECATEDIN_3_0 int RSA_padding_add_X931(unsigned char *to, int tlen,
const unsigned char *f, int fl);
OSSL_DEPRECATEDIN_3_0 int RSA_padding_check_X931(unsigned char *to, int tlen,
const unsigned char *f, int fl,
int rsa_len);
OSSL_DEPRECATEDIN_3_0 int RSA_X931_hash_id(int nid);
DEPRECATEDIN_3_0(int RSA_verify_PKCS1_PSS(RSA *rsa, const unsigned char *mHash,
const EVP_MD *Hash,
const unsigned char *EM, int sLen))
DEPRECATEDIN_3_0(int RSA_padding_add_PKCS1_PSS(RSA *rsa, unsigned char *EM,
const unsigned char *mHash,
const EVP_MD *Hash, int sLen))
OSSL_DEPRECATEDIN_3_0
int RSA_verify_PKCS1_PSS(RSA *rsa, const unsigned char *mHash,
const EVP_MD *Hash, const unsigned char *EM,
int sLen);
OSSL_DEPRECATEDIN_3_0
int RSA_padding_add_PKCS1_PSS(RSA *rsa, unsigned char *EM,
const unsigned char *mHash, const EVP_MD *Hash,
int sLen);
DEPRECATEDIN_3_0(int RSA_verify_PKCS1_PSS_mgf1(RSA *rsa,
const unsigned char *mHash,
const EVP_MD *Hash,
const EVP_MD *mgf1Hash,
const unsigned char *EM,
int sLen))
OSSL_DEPRECATEDIN_3_0
int RSA_verify_PKCS1_PSS_mgf1(RSA *rsa, const unsigned char *mHash,
const EVP_MD *Hash, const EVP_MD *mgf1Hash,
const unsigned char *EM, int sLen);
DEPRECATEDIN_3_0(int RSA_padding_add_PKCS1_PSS_mgf1(RSA *rsa,
unsigned char *EM,
const unsigned char *mHash,
const EVP_MD *Hash,
const EVP_MD *mgf1Hash,
int sLen))
OSSL_DEPRECATEDIN_3_0
int RSA_padding_add_PKCS1_PSS_mgf1(RSA *rsa, unsigned char *EM,
const unsigned char *mHash,
const EVP_MD *Hash, const EVP_MD *mgf1Hash,
int sLen);
# define RSA_get_ex_new_index(l, p, newf, dupf, freef) \
CRYPTO_get_ex_new_index(CRYPTO_EX_INDEX_RSA, l, p, newf, dupf, freef)
DEPRECATEDIN_3_0(int RSA_set_ex_data(RSA *r, int idx, void *arg))
DEPRECATEDIN_3_0(void *RSA_get_ex_data(const RSA *r, int idx))
OSSL_DEPRECATEDIN_3_0 int RSA_set_ex_data(RSA *r, int idx, void *arg);
OSSL_DEPRECATEDIN_3_0 void *RSA_get_ex_data(const RSA *r, int idx);
DECLARE_ASN1_DUP_FUNCTION_name(RSA, RSAPublicKey)
DECLARE_ASN1_DUP_FUNCTION_name(RSA, RSAPrivateKey)
DECLARE_ASN1_DUP_FUNCTION_name_attr(OSSL_DEPRECATEDIN_3_0, RSA, RSAPublicKey)
DECLARE_ASN1_DUP_FUNCTION_name_attr(OSSL_DEPRECATEDIN_3_0, RSA, RSAPrivateKey)
# ifndef OPENSSL_NO_DEPRECATED_3_0
/*
* If this flag is set the RSA method is FIPS compliant and can be used in
* FIPS mode. This is set in the validated module method. If an application
@ -466,95 +471,134 @@ DECLARE_ASN1_DUP_FUNCTION_name(RSA, RSAPrivateKey)
* check.
*/
# define RSA_FLAG_CHECKED 0x0800
# endif /* OPENSSL_NO_DEPRECATED_3_0 */
DEPRECATEDIN_3_0(RSA_METHOD *RSA_meth_new(const char *name, int flags))
DEPRECATEDIN_3_0(void RSA_meth_free(RSA_METHOD *meth))
DEPRECATEDIN_3_0(RSA_METHOD *RSA_meth_dup(const RSA_METHOD *meth))
DEPRECATEDIN_3_0(const char *RSA_meth_get0_name(const RSA_METHOD *meth))
DEPRECATEDIN_3_0(int RSA_meth_set1_name(RSA_METHOD *meth, const char *name))
DEPRECATEDIN_3_0(int RSA_meth_get_flags(const RSA_METHOD *meth))
DEPRECATEDIN_3_0(int RSA_meth_set_flags(RSA_METHOD *meth, int flags))
DEPRECATEDIN_3_0(void *RSA_meth_get0_app_data(const RSA_METHOD *meth))
DEPRECATEDIN_3_0(int RSA_meth_set0_app_data(RSA_METHOD *meth, void *app_data))
DEPRECATEDIN_3_0(int (*RSA_meth_get_pub_enc(const RSA_METHOD *meth))
(int flen, const unsigned char *from,
unsigned char *to, RSA *rsa, int padding))
DEPRECATEDIN_3_0(int RSA_meth_set_pub_enc(RSA_METHOD *rsa,
OSSL_DEPRECATEDIN_3_0 RSA_METHOD *RSA_meth_new(const char *name, int flags);
OSSL_DEPRECATEDIN_3_0 void RSA_meth_free(RSA_METHOD *meth);
OSSL_DEPRECATEDIN_3_0 RSA_METHOD *RSA_meth_dup(const RSA_METHOD *meth);
OSSL_DEPRECATEDIN_3_0 const char *RSA_meth_get0_name(const RSA_METHOD *meth);
OSSL_DEPRECATEDIN_3_0 int RSA_meth_set1_name(RSA_METHOD *meth,
const char *name);
OSSL_DEPRECATEDIN_3_0 int RSA_meth_get_flags(const RSA_METHOD *meth);
OSSL_DEPRECATEDIN_3_0 int RSA_meth_set_flags(RSA_METHOD *meth, int flags);
OSSL_DEPRECATEDIN_3_0 void *RSA_meth_get0_app_data(const RSA_METHOD *meth);
OSSL_DEPRECATEDIN_3_0 int RSA_meth_set0_app_data(RSA_METHOD *meth,
void *app_data);
OSSL_DEPRECATEDIN_3_0
int (*RSA_meth_get_pub_enc(const RSA_METHOD *meth)) (int flen,
const unsigned char *from,
unsigned char *to,
RSA *rsa, int padding);
OSSL_DEPRECATEDIN_3_0
int RSA_meth_set_pub_enc(RSA_METHOD *rsa,
int (*pub_enc) (int flen, const unsigned char *from,
unsigned char *to, RSA *rsa,
int padding)))
DEPRECATEDIN_3_0(int (*RSA_meth_get_pub_dec(const RSA_METHOD *meth))
(int flen, const unsigned char *from,
unsigned char *to, RSA *rsa, int padding))
DEPRECATEDIN_3_0(int RSA_meth_set_pub_dec(RSA_METHOD *rsa,
int padding));
OSSL_DEPRECATEDIN_3_0
int (*RSA_meth_get_pub_dec(const RSA_METHOD *meth)) (int flen,
const unsigned char *from,
unsigned char *to,
RSA *rsa, int padding);
OSSL_DEPRECATEDIN_3_0
int RSA_meth_set_pub_dec(RSA_METHOD *rsa,
int (*pub_dec) (int flen, const unsigned char *from,
unsigned char *to, RSA *rsa,
int padding)))
DEPRECATEDIN_3_0(int (*RSA_meth_get_priv_enc(const RSA_METHOD *meth))
(int flen, const unsigned char *from,
unsigned char *to, RSA *rsa, int padding))
DEPRECATEDIN_3_0(int RSA_meth_set_priv_enc(RSA_METHOD *rsa,
int padding));
OSSL_DEPRECATEDIN_3_0
int (*RSA_meth_get_priv_enc(const RSA_METHOD *meth)) (int flen,
const unsigned char *from,
unsigned char *to,
RSA *rsa, int padding);
OSSL_DEPRECATEDIN_3_0
int RSA_meth_set_priv_enc(RSA_METHOD *rsa,
int (*priv_enc) (int flen, const unsigned char *from,
unsigned char *to, RSA *rsa,
int padding)))
DEPRECATEDIN_3_0(int (*RSA_meth_get_priv_dec(const RSA_METHOD *meth))
(int flen, const unsigned char *from,
unsigned char *to, RSA *rsa, int padding))
DEPRECATEDIN_3_0(int RSA_meth_set_priv_dec(RSA_METHOD *rsa,
int padding));
OSSL_DEPRECATEDIN_3_0
int (*RSA_meth_get_priv_dec(const RSA_METHOD *meth)) (int flen,
const unsigned char *from,
unsigned char *to,
RSA *rsa, int padding);
OSSL_DEPRECATEDIN_3_0
int RSA_meth_set_priv_dec(RSA_METHOD *rsa,
int (*priv_dec) (int flen, const unsigned char *from,
unsigned char *to, RSA *rsa,
int padding)))
DEPRECATEDIN_3_0(int (*RSA_meth_get_mod_exp(const RSA_METHOD *meth))
(BIGNUM *r0, const BIGNUM *i, RSA *rsa, BN_CTX *ctx))
DEPRECATEDIN_3_0(int RSA_meth_set_mod_exp(RSA_METHOD *rsa,
int padding));
OSSL_DEPRECATEDIN_3_0
int (*RSA_meth_get_mod_exp(const RSA_METHOD *meth)) (BIGNUM *r0,
const BIGNUM *i,
RSA *rsa, BN_CTX *ctx);
OSSL_DEPRECATEDIN_3_0
int RSA_meth_set_mod_exp(RSA_METHOD *rsa,
int (*mod_exp) (BIGNUM *r0, const BIGNUM *i, RSA *rsa,
BN_CTX *ctx)))
DEPRECATEDIN_3_0(int (*RSA_meth_get_bn_mod_exp(const RSA_METHOD *meth))
(BIGNUM *r, const BIGNUM *a, const BIGNUM *p,
const BIGNUM *m, BN_CTX *ctx, BN_MONT_CTX *m_ctx))
DEPRECATEDIN_3_0(int RSA_meth_set_bn_mod_exp(RSA_METHOD *rsa,
BN_CTX *ctx));
OSSL_DEPRECATEDIN_3_0
int (*RSA_meth_get_bn_mod_exp(const RSA_METHOD *meth)) (BIGNUM *r,
const BIGNUM *a,
const BIGNUM *p,
const BIGNUM *m,
BN_CTX *ctx,
BN_MONT_CTX *m_ctx);
OSSL_DEPRECATEDIN_3_0
int RSA_meth_set_bn_mod_exp(RSA_METHOD *rsa,
int (*bn_mod_exp) (BIGNUM *r,
const BIGNUM *a,
const BIGNUM *p,
const BIGNUM *m,
BN_CTX *ctx,
BN_MONT_CTX *m_ctx)))
DEPRECATEDIN_3_0(int (*RSA_meth_get_init(const RSA_METHOD *meth)) (RSA *rsa))
DEPRECATEDIN_3_0(int RSA_meth_set_init(RSA_METHOD *rsa, int (*init) (RSA *rsa)))
DEPRECATEDIN_3_0(int (*RSA_meth_get_finish(const RSA_METHOD *meth)) (RSA *rsa))
DEPRECATEDIN_3_0(int RSA_meth_set_finish(RSA_METHOD *rsa,
int (*finish) (RSA *rsa)))
DEPRECATEDIN_3_0(int (*RSA_meth_get_sign(const RSA_METHOD *meth))
(int type,
const unsigned char *m, unsigned int m_length,
unsigned char *sigret, unsigned int *siglen,
const RSA *rsa))
DEPRECATEDIN_3_0(int RSA_meth_set_sign(RSA_METHOD *rsa,
BN_MONT_CTX *m_ctx));
OSSL_DEPRECATEDIN_3_0
int (*RSA_meth_get_init(const RSA_METHOD *meth)) (RSA *rsa);
OSSL_DEPRECATEDIN_3_0
int RSA_meth_set_init(RSA_METHOD *rsa, int (*init) (RSA *rsa));
OSSL_DEPRECATEDIN_3_0
int (*RSA_meth_get_finish(const RSA_METHOD *meth)) (RSA *rsa);
OSSL_DEPRECATEDIN_3_0
int RSA_meth_set_finish(RSA_METHOD *rsa, int (*finish) (RSA *rsa));
OSSL_DEPRECATEDIN_3_0
int (*RSA_meth_get_sign(const RSA_METHOD *meth)) (int type,
const unsigned char *m,
unsigned int m_length,
unsigned char *sigret,
unsigned int *siglen,
const RSA *rsa);
OSSL_DEPRECATEDIN_3_0
int RSA_meth_set_sign(RSA_METHOD *rsa,
int (*sign) (int type, const unsigned char *m,
unsigned int m_length,
unsigned char *sigret, unsigned int *siglen,
const RSA *rsa)))
DEPRECATEDIN_3_0(int (*RSA_meth_get_verify(const RSA_METHOD *meth))
(int dtype, const unsigned char *m,
unsigned int m_length, const unsigned char *sigbuf,
unsigned int siglen, const RSA *rsa))
DEPRECATEDIN_3_0(int RSA_meth_set_verify(RSA_METHOD *rsa,
const RSA *rsa));
OSSL_DEPRECATEDIN_3_0
int (*RSA_meth_get_verify(const RSA_METHOD *meth)) (int dtype,
const unsigned char *m,
unsigned int m_length,
const unsigned char *sigbuf,
unsigned int siglen,
const RSA *rsa);
OSSL_DEPRECATEDIN_3_0
int RSA_meth_set_verify(RSA_METHOD *rsa,
int (*verify) (int dtype, const unsigned char *m,
unsigned int m_length,
const unsigned char *sigbuf,
unsigned int siglen, const RSA *rsa)))
DEPRECATEDIN_3_0(int (*RSA_meth_get_keygen(const RSA_METHOD *meth))
(RSA *rsa, int bits, BIGNUM *e, BN_GENCB *cb))
DEPRECATEDIN_3_0(int RSA_meth_set_keygen(RSA_METHOD *rsa,
unsigned int siglen, const RSA *rsa));
OSSL_DEPRECATEDIN_3_0
int (*RSA_meth_get_keygen(const RSA_METHOD *meth)) (RSA *rsa, int bits,
BIGNUM *e, BN_GENCB *cb);
OSSL_DEPRECATEDIN_3_0
int RSA_meth_set_keygen(RSA_METHOD *rsa,
int (*keygen) (RSA *rsa, int bits, BIGNUM *e,
BN_GENCB *cb)))
DEPRECATEDIN_3_0(int (*RSA_meth_get_multi_prime_keygen(const RSA_METHOD *meth))
(RSA *rsa, int bits, int primes, BIGNUM *e, BN_GENCB *cb))
DEPRECATEDIN_3_0(int RSA_meth_set_multi_prime_keygen(RSA_METHOD *meth,
BN_GENCB *cb));
OSSL_DEPRECATEDIN_3_0
int (*RSA_meth_get_multi_prime_keygen(const RSA_METHOD *meth)) (RSA *rsa,
int bits,
int primes,
BIGNUM *e,
BN_GENCB *cb);
OSSL_DEPRECATEDIN_3_0
int RSA_meth_set_multi_prime_keygen(RSA_METHOD *meth,
int (*keygen) (RSA *rsa, int bits,
int primes, BIGNUM *e,
BN_GENCB *cb)))
BN_GENCB *cb));
#endif /* !OPENSSL_NO_DEPRECATED_3_0 */
# ifdef __cplusplus
}

View File

@ -1606,9 +1606,12 @@ void SSL_set_verify(SSL *s, int mode, SSL_verify_cb callback);
void SSL_set_verify_depth(SSL *s, int depth);
void SSL_set_cert_cb(SSL *s, int (*cb) (SSL *ssl, void *arg), void *arg);
# ifndef OPENSSL_NO_RSA
__owur int SSL_use_RSAPrivateKey(SSL *ssl, RSA *rsa);
__owur int SSL_use_RSAPrivateKey_ASN1(SSL *ssl, const unsigned char *d,
long len);
# ifndef OPENSSL_NO_DEPRECATED_3_0
OSSL_DEPRECATEDIN_3_0 __owur int SSL_use_RSAPrivateKey(SSL *ssl, RSA *rsa);
OSSL_DEPRECATEDIN_3_0
__owur int SSL_use_RSAPrivateKey_ASN1(SSL *ssl,
const unsigned char *d, long len);
# endif
# endif
__owur int SSL_use_PrivateKey(SSL *ssl, EVP_PKEY *pkey);
__owur int SSL_use_PrivateKey_ASN1(int pk, SSL *ssl, const unsigned char *d,
@ -1632,15 +1635,22 @@ __owur int SSL_CTX_use_serverinfo_ex(SSL_CTX *ctx, unsigned int version,
__owur int SSL_CTX_use_serverinfo_file(SSL_CTX *ctx, const char *file);
#ifndef OPENSSL_NO_RSA
__owur int SSL_use_RSAPrivateKey_file(SSL *ssl, const char *file, int type);
# ifndef OPENSSL_NO_DEPRECATED_3_0
OSSL_DEPRECATEDIN_3_0 __owur int SSL_use_RSAPrivateKey_file(SSL *ssl,
const char *file,
int type);
# endif
#endif
__owur int SSL_use_PrivateKey_file(SSL *ssl, const char *file, int type);
__owur int SSL_use_certificate_file(SSL *ssl, const char *file, int type);
#ifndef OPENSSL_NO_RSA
# ifndef OPENSSL_NO_DEPRECATED_3_0
OSSL_DEPRECATEDIN_3_0
__owur int SSL_CTX_use_RSAPrivateKey_file(SSL_CTX *ctx, const char *file,
int type);
# endif
#endif
__owur int SSL_CTX_use_PrivateKey_file(SSL_CTX *ctx, const char *file,
int type);
@ -1751,9 +1761,13 @@ void SSL_CTX_set_cert_verify_callback(SSL_CTX *ctx,
void SSL_CTX_set_cert_cb(SSL_CTX *c, int (*cb) (SSL *ssl, void *arg),
void *arg);
# ifndef OPENSSL_NO_RSA
__owur int SSL_CTX_use_RSAPrivateKey(SSL_CTX *ctx, RSA *rsa);
# ifndef OPENSSL_NO_DEPRECATED_3_0
OSSL_DEPRECATEDIN_3_0 __owur int SSL_CTX_use_RSAPrivateKey(SSL_CTX *ctx,
RSA *rsa);
OSSL_DEPRECATEDIN_3_0
__owur int SSL_CTX_use_RSAPrivateKey_ASN1(SSL_CTX *ctx, const unsigned char *d,
long len);
# endif
# endif
__owur int SSL_CTX_use_PrivateKey(SSL_CTX *ctx, EVP_PKEY *pkey);
__owur int SSL_CTX_use_PrivateKey_ASN1(int pk, SSL_CTX *ctx,

View File

@ -18,6 +18,7 @@ extern "C" {
# include <openssl/e_os2.h>
# include <openssl/safestack.h>
# include <openssl/macros.h>
typedef struct ossl_provider_st OSSL_PROVIDER; /* Provider Object */
@ -135,8 +136,10 @@ typedef struct dh_method DH_METHOD;
typedef struct dsa_st DSA;
typedef struct dsa_method DSA_METHOD;
# ifndef OPENSSL_NO_DEPRECATED_3_0
typedef struct rsa_st RSA;
typedef struct rsa_meth_st RSA_METHOD;
# endif
typedef struct rsa_pss_params_st RSA_PSS_PARAMS;
typedef struct ec_key_st EC_KEY;

View File

@ -414,13 +414,15 @@ X509_CRL *d2i_X509_CRL_fp(FILE *fp, X509_CRL **crl);
int i2d_X509_CRL_fp(FILE *fp, const X509_CRL *crl);
X509_REQ *d2i_X509_REQ_fp(FILE *fp, X509_REQ **req);
int i2d_X509_REQ_fp(FILE *fp, const X509_REQ *req);
# ifndef OPENSSL_NO_RSA
RSA *d2i_RSAPrivateKey_fp(FILE *fp, RSA **rsa);
int i2d_RSAPrivateKey_fp(FILE *fp, const RSA *rsa);
RSA *d2i_RSAPublicKey_fp(FILE *fp, RSA **rsa);
int i2d_RSAPublicKey_fp(FILE *fp, const RSA *rsa);
RSA *d2i_RSA_PUBKEY_fp(FILE *fp, RSA **rsa);
int i2d_RSA_PUBKEY_fp(FILE *fp, const RSA *rsa);
# ifndef OPENSSL_NO_DEPRECATED_3_0
# ifndef OPENSSL_NO_RSA
OSSL_DEPRECATEDIN_3_0 RSA *d2i_RSAPrivateKey_fp(FILE *fp, RSA **rsa);
OSSL_DEPRECATEDIN_3_0 int i2d_RSAPrivateKey_fp(FILE *fp, const RSA *rsa);
OSSL_DEPRECATEDIN_3_0 RSA *d2i_RSAPublicKey_fp(FILE *fp, RSA **rsa);
OSSL_DEPRECATEDIN_3_0 int i2d_RSAPublicKey_fp(FILE *fp, const RSA *rsa);
OSSL_DEPRECATEDIN_3_0 RSA *d2i_RSA_PUBKEY_fp(FILE *fp, RSA **rsa);
OSSL_DEPRECATEDIN_3_0 int i2d_RSA_PUBKEY_fp(FILE *fp, const RSA *rsa);
# endif
# endif
# ifndef OPENSSL_NO_DSA
DSA *d2i_DSA_PUBKEY_fp(FILE *fp, DSA **dsa);
@ -456,13 +458,15 @@ X509_CRL *d2i_X509_CRL_bio(BIO *bp, X509_CRL **crl);
int i2d_X509_CRL_bio(BIO *bp, const X509_CRL *crl);
X509_REQ *d2i_X509_REQ_bio(BIO *bp, X509_REQ **req);
int i2d_X509_REQ_bio(BIO *bp, const X509_REQ *req);
# ifndef OPENSSL_NO_RSA
RSA *d2i_RSAPrivateKey_bio(BIO *bp, RSA **rsa);
int i2d_RSAPrivateKey_bio(BIO *bp, const RSA *rsa);
RSA *d2i_RSAPublicKey_bio(BIO *bp, RSA **rsa);
int i2d_RSAPublicKey_bio(BIO *bp, const RSA *rsa);
RSA *d2i_RSA_PUBKEY_bio(BIO *bp, RSA **rsa);
int i2d_RSA_PUBKEY_bio(BIO *bp, const RSA *rsa);
# ifndef OPENSSL_NO_DEPRECATED_3_0
# ifndef OPENSSL_NO_RSA
OSSL_DEPRECATEDIN_3_0 RSA *d2i_RSAPrivateKey_bio(BIO *bp, RSA **rsa);
OSSL_DEPRECATEDIN_3_0 int i2d_RSAPrivateKey_bio(BIO *bp, const RSA *rsa);
OSSL_DEPRECATEDIN_3_0 RSA *d2i_RSAPublicKey_bio(BIO *bp, RSA **rsa);
OSSL_DEPRECATEDIN_3_0 int i2d_RSAPublicKey_bio(BIO *bp, const RSA *rsa);
OSSL_DEPRECATEDIN_3_0 RSA *d2i_RSA_PUBKEY_bio(BIO *bp, RSA **rsa);
OSSL_DEPRECATEDIN_3_0 int i2d_RSA_PUBKEY_bio(BIO *bp, const RSA *rsa);
# endif
# endif
# ifndef OPENSSL_NO_DSA
DSA *d2i_DSA_PUBKEY_bio(BIO *bp, DSA **dsa);
@ -543,8 +547,10 @@ long X509_get_pathlen(X509 *x);
DECLARE_ASN1_ENCODE_FUNCTIONS_only(EVP_PKEY, PUBKEY)
EVP_PKEY *d2i_PUBKEY_ex(EVP_PKEY **a, const unsigned char **pp, long length,
OSSL_LIB_CTX *libctx, const char *propq);
# ifndef OPENSSL_NO_RSA
DECLARE_ASN1_ENCODE_FUNCTIONS_only(RSA, RSA_PUBKEY)
# ifndef OPENSSL_NO_DEPRECATED_3_0
# ifndef OPENSSL_NO_RSA
DECLARE_ASN1_ENCODE_FUNCTIONS_only_attr(OSSL_DEPRECATEDIN_3_0,RSA, RSA_PUBKEY)
# endif
# endif
# ifndef OPENSSL_NO_DSA
DECLARE_ASN1_ENCODE_FUNCTIONS_only(DSA, DSA_PUBKEY)

View File

@ -7,6 +7,12 @@
* https://www.openssl.org/source/license.html
*/
/*
* RSA low level APIs are deprecated for public use, but still ok for
* internal use.
*/
#include "internal/deprecated.h"
#include <openssl/obj_mac.h>
#include "internal/cryptlib.h"
#include "prov/der_rsa.h"

View File

@ -7,6 +7,8 @@
* https://www.openssl.org/source/license.html
*/
#include "crypto/types.h"
/* Functions that are common */
int ossl_rsa_check_key(const RSA *rsa, int protect);
int ec_check_key(const EC_KEY *ec, int protect);

View File

@ -35,7 +35,7 @@ SOURCE[../libssl]=\
statem/statem.c record/ssl3_record_tls13.c record/tls_pad.c \
tls_depr.c $KTLSSRC
IF[{- !$disabled{'deprecated-3.0'} -}]
SOURCE[../libssl]=s3_cbc.c
SOURCE[../libssl]=s3_cbc.c ssl_rsa_legacy.c
ENDIF
DEFINE[../libssl]=$AESDEF

View File

@ -21,7 +21,6 @@
# include <openssl/buffer.h>
# include <openssl/comp.h>
# include <openssl/bio.h>
# include <openssl/rsa.h>
# include <openssl/dsa.h>
# include <openssl/err.h>
# include <openssl/ssl.h>

View File

@ -115,34 +115,6 @@ int SSL_use_certificate_ASN1(SSL *ssl, const unsigned char *d, int len)
return ret;
}
#ifndef OPENSSL_NO_RSA
int SSL_use_RSAPrivateKey(SSL *ssl, RSA *rsa)
{
EVP_PKEY *pkey;
int ret;
if (rsa == NULL) {
ERR_raise(ERR_LIB_SSL, ERR_R_PASSED_NULL_PARAMETER);
return 0;
}
if ((pkey = EVP_PKEY_new()) == NULL) {
ERR_raise(ERR_LIB_SSL, ERR_R_EVP_LIB);
return 0;
}
RSA_up_ref(rsa);
if (EVP_PKEY_assign_RSA(pkey, rsa) <= 0) {
RSA_free(rsa);
EVP_PKEY_free(pkey);
return 0;
}
ret = ssl_set_pkey(ssl->cert, pkey);
EVP_PKEY_free(pkey);
return ret;
}
#endif
static int ssl_set_pkey(CERT *c, EVP_PKEY *pkey)
{
size_t i;
@ -180,64 +152,6 @@ static int ssl_set_pkey(CERT *c, EVP_PKEY *pkey)
return 1;
}
#ifndef OPENSSL_NO_RSA
int SSL_use_RSAPrivateKey_file(SSL *ssl, const char *file, int type)
{
int j, ret = 0;
BIO *in;
RSA *rsa = NULL;
in = BIO_new(BIO_s_file());
if (in == NULL) {
ERR_raise(ERR_LIB_SSL, ERR_R_BUF_LIB);
goto end;
}
if (BIO_read_filename(in, file) <= 0) {
ERR_raise(ERR_LIB_SSL, ERR_R_SYS_LIB);
goto end;
}
if (type == SSL_FILETYPE_ASN1) {
j = ERR_R_ASN1_LIB;
rsa = d2i_RSAPrivateKey_bio(in, NULL);
} else if (type == SSL_FILETYPE_PEM) {
j = ERR_R_PEM_LIB;
rsa = PEM_read_bio_RSAPrivateKey(in, NULL,
ssl->default_passwd_callback,
ssl->default_passwd_callback_userdata);
} else {
ERR_raise(ERR_LIB_SSL, SSL_R_BAD_SSL_FILETYPE);
goto end;
}
if (rsa == NULL) {
ERR_raise(ERR_LIB_SSL, j);
goto end;
}
ret = SSL_use_RSAPrivateKey(ssl, rsa);
RSA_free(rsa);
end:
BIO_free(in);
return ret;
}
int SSL_use_RSAPrivateKey_ASN1(SSL *ssl, const unsigned char *d, long len)
{
int ret;
const unsigned char *p;
RSA *rsa;
p = d;
if ((rsa = d2i_RSAPrivateKey(NULL, &p, (long)len)) == NULL) {
ERR_raise(ERR_LIB_SSL, ERR_R_ASN1_LIB);
return 0;
}
ret = SSL_use_RSAPrivateKey(ssl, rsa);
RSA_free(rsa);
return ret;
}
#endif /* !OPENSSL_NO_RSA */
int SSL_use_PrivateKey(SSL *ssl, EVP_PKEY *pkey)
{
int ret;
@ -445,91 +359,6 @@ int SSL_CTX_use_certificate_ASN1(SSL_CTX *ctx, int len, const unsigned char *d)
return ret;
}
#ifndef OPENSSL_NO_RSA
int SSL_CTX_use_RSAPrivateKey(SSL_CTX *ctx, RSA *rsa)
{
int ret;
EVP_PKEY *pkey;
if (rsa == NULL) {
ERR_raise(ERR_LIB_SSL, ERR_R_PASSED_NULL_PARAMETER);
return 0;
}
if ((pkey = EVP_PKEY_new()) == NULL) {
ERR_raise(ERR_LIB_SSL, ERR_R_EVP_LIB);
return 0;
}
RSA_up_ref(rsa);
if (EVP_PKEY_assign_RSA(pkey, rsa) <= 0) {
RSA_free(rsa);
EVP_PKEY_free(pkey);
return 0;
}
ret = ssl_set_pkey(ctx->cert, pkey);
EVP_PKEY_free(pkey);
return ret;
}
int SSL_CTX_use_RSAPrivateKey_file(SSL_CTX *ctx, const char *file, int type)
{
int j, ret = 0;
BIO *in;
RSA *rsa = NULL;
in = BIO_new(BIO_s_file());
if (in == NULL) {
ERR_raise(ERR_LIB_SSL, ERR_R_BUF_LIB);
goto end;
}
if (BIO_read_filename(in, file) <= 0) {
ERR_raise(ERR_LIB_SSL, ERR_R_SYS_LIB);
goto end;
}
if (type == SSL_FILETYPE_ASN1) {
j = ERR_R_ASN1_LIB;
rsa = d2i_RSAPrivateKey_bio(in, NULL);
} else if (type == SSL_FILETYPE_PEM) {
j = ERR_R_PEM_LIB;
rsa = PEM_read_bio_RSAPrivateKey(in, NULL,
ctx->default_passwd_callback,
ctx->default_passwd_callback_userdata);
} else {
ERR_raise(ERR_LIB_SSL, SSL_R_BAD_SSL_FILETYPE);
goto end;
}
if (rsa == NULL) {
ERR_raise(ERR_LIB_SSL, j);
goto end;
}
ret = SSL_CTX_use_RSAPrivateKey(ctx, rsa);
RSA_free(rsa);
end:
BIO_free(in);
return ret;
}
int SSL_CTX_use_RSAPrivateKey_ASN1(SSL_CTX *ctx, const unsigned char *d,
long len)
{
int ret;
const unsigned char *p;
RSA *rsa;
p = d;
if ((rsa = d2i_RSAPrivateKey(NULL, &p, (long)len)) == NULL) {
ERR_raise(ERR_LIB_SSL, ERR_R_ASN1_LIB);
return 0;
}
ret = SSL_CTX_use_RSAPrivateKey(ctx, rsa);
RSA_free(rsa);
return ret;
}
#endif /* !OPENSSL_NO_RSA */
int SSL_CTX_use_PrivateKey(SSL_CTX *ctx, EVP_PKEY *pkey)
{
if (pkey == NULL) {

180
ssl/ssl_rsa_legacy.c Normal file
View File

@ -0,0 +1,180 @@
/*
* Copyright 1995-2020 The OpenSSL Project Authors. All Rights Reserved.
*
* Licensed under the Apache License 2.0 (the "License"). You may not use
* this file except in compliance with the License. You can obtain a copy
* in the file LICENSE in the source distribution or at
* https://www.openssl.org/source/license.html
*/
/* We need to use the deprecated RSA low level calls */
#define OPENSSL_SUPPRESS_DEPRECATED
#include <openssl/err.h>
#include <openssl/rsa.h>
#include <openssl/ssl.h>
int SSL_use_RSAPrivateKey(SSL *ssl, RSA *rsa)
{
EVP_PKEY *pkey;
int ret;
if (rsa == NULL) {
ERR_raise(ERR_LIB_SSL, ERR_R_PASSED_NULL_PARAMETER);
return 0;
}
if ((pkey = EVP_PKEY_new()) == NULL) {
ERR_raise(ERR_LIB_SSL, ERR_R_EVP_LIB);
return 0;
}
RSA_up_ref(rsa);
if (EVP_PKEY_assign_RSA(pkey, rsa) <= 0) {
RSA_free(rsa);
EVP_PKEY_free(pkey);
return 0;
}
ret = SSL_use_PrivateKey(ssl, pkey);
EVP_PKEY_free(pkey);
return ret;
}
int SSL_use_RSAPrivateKey_file(SSL *ssl, const char *file, int type)
{
int j, ret = 0;
BIO *in;
RSA *rsa = NULL;
in = BIO_new(BIO_s_file());
if (in == NULL) {
ERR_raise(ERR_LIB_SSL, ERR_R_BUF_LIB);
goto end;
}
if (BIO_read_filename(in, file) <= 0) {
ERR_raise(ERR_LIB_SSL, ERR_R_SYS_LIB);
goto end;
}
if (type == SSL_FILETYPE_ASN1) {
j = ERR_R_ASN1_LIB;
rsa = d2i_RSAPrivateKey_bio(in, NULL);
} else if (type == SSL_FILETYPE_PEM) {
j = ERR_R_PEM_LIB;
rsa = PEM_read_bio_RSAPrivateKey(in, NULL,
SSL_get_default_passwd_cb(ssl),
SSL_get_default_passwd_cb_userdata(ssl));
} else {
ERR_raise(ERR_LIB_SSL, SSL_R_BAD_SSL_FILETYPE);
goto end;
}
if (rsa == NULL) {
ERR_raise(ERR_LIB_SSL, j);
goto end;
}
ret = SSL_use_RSAPrivateKey(ssl, rsa);
RSA_free(rsa);
end:
BIO_free(in);
return ret;
}
int SSL_use_RSAPrivateKey_ASN1(SSL *ssl, const unsigned char *d, long len)
{
int ret;
const unsigned char *p;
RSA *rsa;
p = d;
if ((rsa = d2i_RSAPrivateKey(NULL, &p, (long)len)) == NULL) {
ERR_raise(ERR_LIB_SSL, ERR_R_ASN1_LIB);
return 0;
}
ret = SSL_use_RSAPrivateKey(ssl, rsa);
RSA_free(rsa);
return ret;
}
int SSL_CTX_use_RSAPrivateKey(SSL_CTX *ctx, RSA *rsa)
{
int ret;
EVP_PKEY *pkey;
if (rsa == NULL) {
ERR_raise(ERR_LIB_SSL, ERR_R_PASSED_NULL_PARAMETER);
return 0;
}
if ((pkey = EVP_PKEY_new()) == NULL) {
ERR_raise(ERR_LIB_SSL, ERR_R_EVP_LIB);
return 0;
}
RSA_up_ref(rsa);
if (EVP_PKEY_assign_RSA(pkey, rsa) <= 0) {
RSA_free(rsa);
EVP_PKEY_free(pkey);
return 0;
}
ret = SSL_CTX_use_PrivateKey(ctx, pkey);
EVP_PKEY_free(pkey);
return ret;
}
int SSL_CTX_use_RSAPrivateKey_file(SSL_CTX *ctx, const char *file, int type)
{
int j, ret = 0;
BIO *in;
RSA *rsa = NULL;
in = BIO_new(BIO_s_file());
if (in == NULL) {
ERR_raise(ERR_LIB_SSL, ERR_R_BUF_LIB);
goto end;
}
if (BIO_read_filename(in, file) <= 0) {
ERR_raise(ERR_LIB_SSL, ERR_R_SYS_LIB);
goto end;
}
if (type == SSL_FILETYPE_ASN1) {
j = ERR_R_ASN1_LIB;
rsa = d2i_RSAPrivateKey_bio(in, NULL);
} else if (type == SSL_FILETYPE_PEM) {
j = ERR_R_PEM_LIB;
rsa = PEM_read_bio_RSAPrivateKey(in, NULL,
SSL_CTX_get_default_passwd_cb(ctx),
SSL_CTX_get_default_passwd_cb_userdata(ctx));
} else {
ERR_raise(ERR_LIB_SSL, SSL_R_BAD_SSL_FILETYPE);
goto end;
}
if (rsa == NULL) {
ERR_raise(ERR_LIB_SSL, j);
goto end;
}
ret = SSL_CTX_use_RSAPrivateKey(ctx, rsa);
RSA_free(rsa);
end:
BIO_free(in);
return ret;
}
int SSL_CTX_use_RSAPrivateKey_ASN1(SSL_CTX *ctx, const unsigned char *d,
long len)
{
int ret;
const unsigned char *p;
RSA *rsa;
p = d;
if ((rsa = d2i_RSAPrivateKey(NULL, &p, (long)len)) == NULL) {
ERR_raise(ERR_LIB_SSL, ERR_R_ASN1_LIB);
return 0;
}
ret = SSL_CTX_use_RSAPrivateKey(ctx, rsa);
RSA_free(rsa);
return ret;
}

View File

@ -20,6 +20,7 @@
#include <openssl/evp.h>
#include <openssl/md5.h>
#include <openssl/dh.h>
#include <openssl/rsa.h>
#include <openssl/bn.h>
#include <openssl/engine.h>
#include <openssl/trace.h>
@ -2824,7 +2825,7 @@ static int tls_construct_cke_rsa(SSL *s, WPACKET *pkt)
}
pkey = X509_get0_pubkey(s->session->peer);
if (EVP_PKEY_get0_RSA(pkey) == NULL) {
if (!EVP_PKEY_is_a(pkey, "RSA")) {
SSLfatal(s, SSL_AD_INTERNAL_ERROR, ERR_R_INTERNAL_ERROR);
return 0;
}

View File

@ -18,6 +18,7 @@
#include <openssl/buffer.h>
#include <openssl/objects.h>
#include <openssl/evp.h>
#include <openssl/rsa.h>
#include <openssl/x509.h>
#include <openssl/trace.h>

View File

@ -20,6 +20,7 @@
#include <openssl/evp.h>
#include <openssl/x509.h>
#include <openssl/dh.h>
#include <openssl/rsa.h>
#include <openssl/bn.h>
#include <openssl/md5.h>
#include <openssl/trace.h>

View File

@ -35,6 +35,12 @@
#include <stdlib.h>
#include <string.h>
/*
* We test deprecated functions, so we need to suppress deprecation warnings.
*/
#define OPENSSL_SUPPRESS_DEPRECATED
#include <openssl/bio.h>
#include <openssl/evp.h>
#include <openssl/asn1.h>

View File

@ -18,16 +18,17 @@
#include <openssl/crypto.h>
#include <openssl/err.h>
#include <openssl/evp.h>
#include <openssl/rsa.h>
#include <openssl/x509.h>
#include <openssl/pem.h>
#include <openssl/kdf.h>
#include <openssl/provider.h>
#include <openssl/core_names.h>
#include <openssl/params.h>
#include <openssl/param_build.h>
#include <openssl/dsa.h>
#include <openssl/dh.h>
#include <openssl/aes.h>
#include <openssl/decoder.h>
#include "testutil.h"
#include "internal/nelem.h"
#include "internal/sizes.h"
@ -410,28 +411,25 @@ static APK_DATA keycheckdata[] = {
#endif
};
static EVP_PKEY *load_example_key(const char *keytype,
const unsigned char *data, size_t data_len)
{
const unsigned char **pdata = &data;
EVP_PKEY *pkey = NULL;
OSSL_DECODER_CTX *dctx =
OSSL_DECODER_CTX_new_by_EVP_PKEY(&pkey, "DER", NULL, keytype, 0,
testctx, NULL);
/* |pkey| will be NULL on error */
(void)OSSL_DECODER_from_data(dctx, pdata, &data_len);
OSSL_DECODER_CTX_free(dctx);
return pkey;
}
static EVP_PKEY *load_example_rsa_key(void)
{
EVP_PKEY *ret = NULL;
const unsigned char *derp = kExampleRSAKeyDER;
EVP_PKEY *pkey = NULL;
RSA *rsa = NULL;
if (!TEST_true(d2i_RSAPrivateKey(&rsa, &derp, sizeof(kExampleRSAKeyDER))))
return NULL;
if (!TEST_ptr(pkey = EVP_PKEY_new())
|| !TEST_true(EVP_PKEY_set1_RSA(pkey, rsa)))
goto end;
ret = pkey;
pkey = NULL;
end:
EVP_PKEY_free(pkey);
RSA_free(rsa);
return ret;
return load_example_key("RSA", kExampleRSAKeyDER,
sizeof(kExampleRSAKeyDER));
}
#ifndef OPENSSL_NO_DSA
@ -1690,8 +1688,10 @@ static int test_DSA_get_set_params(void)
static int test_RSA_get_set_params(void)
{
RSA *rsa = NULL;
OSSL_PARAM_BLD *bld = NULL;
OSSL_PARAM *params = NULL;
BIGNUM *n = NULL, *e = NULL, *d = NULL;
EVP_PKEY_CTX *pctx = NULL;
EVP_PKEY *pkey = NULL;
int ret = 0;
@ -1699,30 +1699,33 @@ static int test_RSA_get_set_params(void)
* Setup the parameters for our RSA object. For our purposes they don't
* have to actually be *valid* parameters. We just need to set something.
*/
rsa = RSA_new();
n = BN_new();
e = BN_new();
d = BN_new();
if (!TEST_ptr(rsa)
|| !TEST_ptr(n)
|| !TEST_ptr(e)
|| !TEST_ptr(d)
|| !RSA_set0_key(rsa, n, e, d))
if (!TEST_ptr(pctx = EVP_PKEY_CTX_new_from_name(testctx, "RSA", NULL))
|| !TEST_ptr(bld = OSSL_PARAM_BLD_new())
|| !TEST_ptr(n = BN_new())
|| !TEST_ptr(e = BN_new())
|| !TEST_ptr(d = BN_new()))
goto err;
n = e = d = NULL;
pkey = EVP_PKEY_new();
if (!TEST_ptr(pkey)
|| !TEST_true(EVP_PKEY_assign_RSA(pkey, rsa)))
if (!TEST_true(OSSL_PARAM_BLD_push_BN(bld, OSSL_PKEY_PARAM_RSA_N, n))
|| !TEST_true(OSSL_PARAM_BLD_push_BN(bld, OSSL_PKEY_PARAM_RSA_E, e))
|| !TEST_true(OSSL_PARAM_BLD_push_BN(bld, OSSL_PKEY_PARAM_RSA_D, d)))
goto err;
if (!TEST_ptr(params = OSSL_PARAM_BLD_to_param(bld)))
goto err;
rsa = NULL;
if (!TEST_int_gt(EVP_PKEY_key_fromdata_init(pctx), 0)
|| !TEST_int_gt(EVP_PKEY_fromdata(pctx, &pkey, params), 0))
goto err;
if (!TEST_ptr(pkey))
goto err;
ret = test_EVP_PKEY_CTX_get_set_params(pkey);
err:
EVP_PKEY_free(pkey);
RSA_free(rsa);
EVP_PKEY_CTX_free(pctx);
OSSL_PARAM_BLD_free_params(params);
OSSL_PARAM_BLD_free(bld);
BN_free(n);
BN_free(e);
BN_free(d);

View File

@ -7,6 +7,12 @@
* https://www.openssl.org/source/license.html
*/
/*
* RSA low level APIs are deprecated for public use, but still ok for
* internal use.
*/
#include "internal/deprecated.h"
#include <string.h>
#include <openssl/bio.h>

View File

@ -7,6 +7,12 @@
* https://www.openssl.org/source/license.html
*/
/*
* RSA low level APIs are deprecated for public use, but still ok for
* internal use.
*/
#include "internal/deprecated.h"
#include <stdio.h>
#include <string.h>
@ -215,6 +221,7 @@ static int test_check_prime_factor(void)
return ret;
}
/* This test uses legacy functions because they can take invalid numbers */
static int test_check_private_exponent(void)
{
int ret = 0;

View File

@ -41,7 +41,7 @@ EVP_PKEY_meth_set_verify_recover 41 3_0_0 EXIST::FUNCTION:DEPRECATEDIN_3_
UI_set_method 42 3_0_0 EXIST::FUNCTION:
PKCS7_ISSUER_AND_SERIAL_it 43 3_0_0 EXIST::FUNCTION:
EC_GROUP_method_of 44 3_0_0 EXIST::FUNCTION:DEPRECATEDIN_3_0,EC
RSA_blinding_on 45 3_0_0 EXIST::FUNCTION:RSA
RSA_blinding_on 45 3_0_0 EXIST::FUNCTION:DEPRECATEDIN_3_0,RSA
X509_get0_signature 47 3_0_0 EXIST::FUNCTION:
X509_REVOKED_get0_extensions 48 3_0_0 EXIST::FUNCTION:
NETSCAPE_SPKI_verify 49 3_0_0 EXIST::FUNCTION:
@ -62,7 +62,7 @@ BIO_free_all 63 3_0_0 EXIST::FUNCTION:
EVP_idea_ofb 64 3_0_0 EXIST::FUNCTION:IDEA
DSO_bind_func 65 3_0_0 EXIST::FUNCTION:
EVP_PKEY_meth_get_copy 66 3_0_0 EXIST::FUNCTION:DEPRECATEDIN_3_0
RSA_up_ref 67 3_0_0 EXIST::FUNCTION:RSA
RSA_up_ref 67 3_0_0 EXIST::FUNCTION:DEPRECATEDIN_3_0,RSA
EVP_PKEY_meth_set_ctrl 68 3_0_0 EXIST::FUNCTION:DEPRECATEDIN_3_0
OCSP_basic_sign 69 3_0_0 EXIST::FUNCTION:OCSP
BN_GENCB_set 70 3_0_0 EXIST::FUNCTION:
@ -324,7 +324,7 @@ RAND_load_file 329 3_0_0 EXIST::FUNCTION:
BIO_ctrl_reset_read_request 330 3_0_0 EXIST::FUNCTION:
CRYPTO_ccm128_tag 331 3_0_0 EXIST::FUNCTION:
BIO_new_dgram_sctp 332 3_0_0 EXIST::FUNCTION:DGRAM,SCTP
d2i_RSAPrivateKey_fp 333 3_0_0 EXIST::FUNCTION:RSA,STDIO
d2i_RSAPrivateKey_fp 333 3_0_0 EXIST::FUNCTION:DEPRECATEDIN_3_0,RSA,STDIO
s2i_ASN1_IA5STRING 334 3_0_0 EXIST::FUNCTION:
UI_get_ex_data 335 3_0_0 EXIST::FUNCTION:
EVP_EncryptUpdate 336 3_0_0 EXIST::FUNCTION:
@ -461,20 +461,20 @@ DH_new 469 3_0_0 EXIST::FUNCTION:DH
OCSP_RESPID_free 470 3_0_0 EXIST::FUNCTION:OCSP
PKCS5_pbe2_set 471 3_0_0 EXIST::FUNCTION:
SCT_set_signature_nid 473 3_0_0 EXIST::FUNCTION:CT
i2d_RSA_PUBKEY_fp 474 3_0_0 EXIST::FUNCTION:RSA,STDIO
i2d_RSA_PUBKEY_fp 474 3_0_0 EXIST::FUNCTION:DEPRECATEDIN_3_0,RSA,STDIO
PKCS12_BAGS_it 475 3_0_0 EXIST::FUNCTION:
X509_pubkey_digest 476 3_0_0 EXIST::FUNCTION:
ENGINE_register_all_RSA 477 3_0_0 EXIST::FUNCTION:DEPRECATEDIN_3_0,ENGINE
CRYPTO_THREAD_set_local 478 3_0_0 EXIST::FUNCTION:
X509_get_default_cert_dir_env 479 3_0_0 EXIST::FUNCTION:
X509_CRL_sort 480 3_0_0 EXIST::FUNCTION:
i2d_RSA_PUBKEY_bio 481 3_0_0 EXIST::FUNCTION:RSA
i2d_RSA_PUBKEY_bio 481 3_0_0 EXIST::FUNCTION:DEPRECATEDIN_3_0,RSA
ASN1_T61STRING_free 482 3_0_0 EXIST::FUNCTION:
PEM_write_CMS 483 3_0_0 EXIST::FUNCTION:CMS,STDIO
OPENSSL_sk_find 484 3_0_0 EXIST::FUNCTION:
ENGINE_get_ciphers 485 3_0_0 EXIST::FUNCTION:DEPRECATEDIN_3_0,ENGINE
EVP_rc2_ofb 486 3_0_0 EXIST::FUNCTION:RC2
EVP_PKEY_set1_RSA 487 3_0_0 EXIST::FUNCTION:RSA
EVP_PKEY_set1_RSA 487 3_0_0 EXIST::FUNCTION:DEPRECATEDIN_3_0,RSA
CMS_SignerInfo_get0_md_ctx 488 3_0_0 EXIST::FUNCTION:CMS
X509_STORE_set_trust 489 3_0_0 EXIST::FUNCTION:
d2i_POLICYINFO 490 3_0_0 EXIST::FUNCTION:
@ -523,19 +523,19 @@ OBJ_sigid_free 534 3_0_0 EXIST::FUNCTION:
TS_STATUS_INFO_get0_status 535 3_0_0 EXIST::FUNCTION:TS
EC_KEY_get_flags 536 3_0_0 EXIST::FUNCTION:EC
ASN1_TYPE_cmp 537 3_0_0 EXIST::FUNCTION:
i2d_RSAPublicKey 538 3_0_0 EXIST::FUNCTION:RSA
i2d_RSAPublicKey 538 3_0_0 EXIST::FUNCTION:DEPRECATEDIN_3_0,RSA
EC_GROUP_get_trinomial_basis 539 3_0_0 EXIST::FUNCTION:EC,EC2M
BIO_ADDRINFO_protocol 540 3_0_0 EXIST::FUNCTION:SOCK
i2d_PBKDF2PARAM 541 3_0_0 EXIST::FUNCTION:
ENGINE_unregister_RAND 542 3_0_0 EXIST::FUNCTION:DEPRECATEDIN_3_0,ENGINE
PEM_write_bio_RSAPrivateKey 543 3_0_0 EXIST::FUNCTION:RSA
PEM_write_bio_RSAPrivateKey 543 3_0_0 EXIST::FUNCTION:DEPRECATEDIN_3_0,RSA
CONF_get_number 544 3_0_0 EXIST::FUNCTION:
X509_EXTENSION_get_object 545 3_0_0 EXIST::FUNCTION:
X509_EXTENSIONS_it 546 3_0_0 EXIST::FUNCTION:
EC_POINT_set_compressed_coordinates_GF2m 547 3_0_0 EXIST::FUNCTION:DEPRECATEDIN_3_0,EC,EC2M
RSA_sign_ASN1_OCTET_STRING 548 3_0_0 EXIST::FUNCTION:DEPRECATEDIN_3_0,RSA
d2i_X509_CRL_fp 549 3_0_0 EXIST::FUNCTION:STDIO
i2d_RSA_PUBKEY 550 3_0_0 EXIST::FUNCTION:RSA
i2d_RSA_PUBKEY 550 3_0_0 EXIST::FUNCTION:DEPRECATEDIN_3_0,RSA
EVP_aes_128_ccm 551 3_0_0 EXIST::FUNCTION:
ECParameters_print 552 3_0_0 EXIST::FUNCTION:EC
OCSP_SINGLERESP_get1_ext_d2i 553 3_0_0 EXIST::FUNCTION:OCSP
@ -544,7 +544,7 @@ EVP_ripemd160 555 3_0_0 EXIST::FUNCTION:RMD160
EVP_MD_meth_set_final 556 3_0_0 EXIST::FUNCTION:DEPRECATEDIN_3_0
ENGINE_get_cmd_defns 557 3_0_0 EXIST::FUNCTION:DEPRECATEDIN_3_0,ENGINE
d2i_PKEY_USAGE_PERIOD 558 3_0_0 EXIST::FUNCTION:
RSAPublicKey_dup 559 3_0_0 EXIST::FUNCTION:RSA
RSAPublicKey_dup 559 3_0_0 EXIST::FUNCTION:DEPRECATEDIN_3_0,RSA
RAND_write_file 560 3_0_0 EXIST::FUNCTION:
BN_GF2m_mod 561 3_0_0 EXIST::FUNCTION:EC2M
EC_GROUP_get_pentanomial_basis 562 3_0_0 EXIST::FUNCTION:EC,EC2M
@ -583,7 +583,7 @@ RAND_query_egd_bytes 596 3_0_0 EXIST::FUNCTION:EGD
i2d_ASN1_PRINTABLE 597 3_0_0 EXIST::FUNCTION:
ENGINE_cmd_is_executable 598 3_0_0 EXIST::FUNCTION:DEPRECATEDIN_3_0,ENGINE
BIO_puts 599 3_0_0 EXIST::FUNCTION:
RSAPublicKey_it 601 3_0_0 EXIST::FUNCTION:RSA
RSAPublicKey_it 601 3_0_0 EXIST::FUNCTION:DEPRECATEDIN_3_0,RSA
ISSUING_DIST_POINT_new 602 3_0_0 EXIST::FUNCTION:
X509_VAL_it 603 3_0_0 EXIST::FUNCTION:
EVP_DigestVerifyInit 604 3_0_0 EXIST::FUNCTION:
@ -795,10 +795,10 @@ X509_cmp 814 3_0_0 EXIST::FUNCTION:
EVP_PKEY_set1_EC_KEY 815 3_0_0 EXIST::FUNCTION:EC
ECPKParameters_print_fp 816 3_0_0 EXIST::FUNCTION:EC,STDIO
GENERAL_SUBTREE_free 817 3_0_0 EXIST::FUNCTION:
RSA_blinding_off 818 3_0_0 EXIST::FUNCTION:RSA
RSA_blinding_off 818 3_0_0 EXIST::FUNCTION:DEPRECATEDIN_3_0,RSA
i2d_OCSP_REVOKEDINFO 819 3_0_0 EXIST::FUNCTION:OCSP
X509V3_add_standard_extensions 820 3_0_0 EXIST::FUNCTION:
PEM_write_bio_RSA_PUBKEY 821 3_0_0 EXIST::FUNCTION:RSA
PEM_write_bio_RSA_PUBKEY 821 3_0_0 EXIST::FUNCTION:DEPRECATEDIN_3_0,RSA
i2d_ASN1_UTF8STRING 822 3_0_0 EXIST::FUNCTION:
TS_REQ_delete_ext 823 3_0_0 EXIST::FUNCTION:TS
PKCS7_DIGEST_free 824 3_0_0 EXIST::FUNCTION:
@ -825,7 +825,7 @@ X509_REQ_get_attr_by_NID 844 3_0_0 EXIST::FUNCTION:
PBE2PARAM_new 845 3_0_0 EXIST::FUNCTION:
DES_ecb_encrypt 846 3_0_0 EXIST::FUNCTION:DEPRECATEDIN_3_0,DES
EVP_camellia_256_ecb 847 3_0_0 EXIST::FUNCTION:CAMELLIA
PEM_read_RSA_PUBKEY 848 3_0_0 EXIST::FUNCTION:RSA,STDIO
PEM_read_RSA_PUBKEY 848 3_0_0 EXIST::FUNCTION:DEPRECATEDIN_3_0,RSA,STDIO
d2i_NETSCAPE_SPKAC 849 3_0_0 EXIST::FUNCTION:
ASN1_TIME_check 851 3_0_0 EXIST::FUNCTION:
PKCS7_DIGEST_new 852 3_0_0 EXIST::FUNCTION:
@ -938,7 +938,7 @@ EVP_PKEY_meth_set_keygen 961 3_0_0 EXIST::FUNCTION:DEPRECATEDIN_3
RSA_PSS_PARAMS_new 962 3_0_0 EXIST::FUNCTION:RSA
RSA_sign 963 3_0_0 EXIST::FUNCTION:DEPRECATEDIN_3_0,RSA
EVP_DigestVerifyFinal 964 3_0_0 EXIST::FUNCTION:
d2i_RSA_PUBKEY_bio 965 3_0_0 EXIST::FUNCTION:RSA
d2i_RSA_PUBKEY_bio 965 3_0_0 EXIST::FUNCTION:DEPRECATEDIN_3_0,RSA
TS_RESP_dup 966 3_0_0 EXIST::FUNCTION:TS
ERR_set_error_data 967 3_0_0 EXIST::FUNCTION:
BN_RECP_CTX_new 968 3_0_0 EXIST::FUNCTION:
@ -977,7 +977,7 @@ PKCS12_decrypt_skey 1001 3_0_0 EXIST::FUNCTION:
ENGINE_register_EC 1002 3_0_0 EXIST::FUNCTION:DEPRECATEDIN_3_0,ENGINE
OCSP_RESPONSE_new 1003 3_0_0 EXIST::FUNCTION:OCSP
CRYPTO_cbc128_encrypt 1004 3_0_0 EXIST::FUNCTION:
i2d_RSAPublicKey_bio 1005 3_0_0 EXIST::FUNCTION:RSA
i2d_RSAPublicKey_bio 1005 3_0_0 EXIST::FUNCTION:DEPRECATEDIN_3_0,RSA
X509_chain_check_suiteb 1006 3_0_0 EXIST::FUNCTION:
i2d_OCSP_REQUEST 1007 3_0_0 EXIST::FUNCTION:OCSP
BN_X931_generate_Xpq 1008 3_0_0 EXIST::FUNCTION:
@ -1050,7 +1050,7 @@ DES_is_weak_key 1076 3_0_0 EXIST::FUNCTION:DEPRECATEDIN_
EVP_PKEY_verify 1077 3_0_0 EXIST::FUNCTION:
ERR_load_BIO_strings 1078 3_0_0 EXIST::FUNCTION:
BIO_nread 1079 3_0_0 EXIST::FUNCTION:
PEM_read_bio_RSAPrivateKey 1080 3_0_0 EXIST::FUNCTION:RSA
PEM_read_bio_RSAPrivateKey 1080 3_0_0 EXIST::FUNCTION:DEPRECATEDIN_3_0,RSA
OBJ_nid2obj 1081 3_0_0 EXIST::FUNCTION:
CRYPTO_ofb128_encrypt 1082 3_0_0 EXIST::FUNCTION:
ENGINE_set_init_function 1083 3_0_0 EXIST::FUNCTION:DEPRECATEDIN_3_0,ENGINE
@ -1109,7 +1109,7 @@ ENGINE_get_digest 1135 3_0_0 EXIST::FUNCTION:DEPRECATEDIN_
EC_GROUP_have_precompute_mult 1136 3_0_0 EXIST::FUNCTION:DEPRECATEDIN_3_0,EC
OPENSSL_gmtime 1137 3_0_0 EXIST::FUNCTION:
X509_set_issuer_name 1138 3_0_0 EXIST::FUNCTION:
RSA_new 1139 3_0_0 EXIST::FUNCTION:RSA
RSA_new 1139 3_0_0 EXIST::FUNCTION:DEPRECATEDIN_3_0,RSA
ASN1_STRING_set_by_NID 1140 3_0_0 EXIST::FUNCTION:
PEM_write_bio_PKCS7 1141 3_0_0 EXIST::FUNCTION:
MDC2_Final 1142 3_0_0 EXIST::FUNCTION:DEPRECATEDIN_3_0,MDC2
@ -1127,7 +1127,7 @@ DES_check_key_parity 1153 3_0_0 EXIST::FUNCTION:DEPRECATEDIN_
EVP_aes_256_ocb 1154 3_0_0 EXIST::FUNCTION:OCB
X509_VAL_free 1155 3_0_0 EXIST::FUNCTION:
X509_STORE_CTX_get1_certs 1156 3_0_0 EXIST::FUNCTION:
PEM_write_RSA_PUBKEY 1157 3_0_0 EXIST::FUNCTION:RSA,STDIO
PEM_write_RSA_PUBKEY 1157 3_0_0 EXIST::FUNCTION:DEPRECATEDIN_3_0,RSA,STDIO
PKCS12_SAFEBAG_get0_p8inf 1158 3_0_0 EXIST::FUNCTION:
X509_CRL_set_issuer_name 1159 3_0_0 EXIST::FUNCTION:
CMS_EncryptedData_encrypt 1160 3_0_0 EXIST::FUNCTION:CMS
@ -1257,7 +1257,7 @@ UI_add_error_string 1285 3_0_0 EXIST::FUNCTION:
X509_TRUST_cleanup 1286 3_0_0 EXIST::FUNCTION:
PEM_read_X509 1287 3_0_0 EXIST::FUNCTION:STDIO
EC_KEY_new_method 1288 3_0_0 EXIST::FUNCTION:EC
i2d_RSAPublicKey_fp 1289 3_0_0 EXIST::FUNCTION:RSA,STDIO
i2d_RSAPublicKey_fp 1289 3_0_0 EXIST::FUNCTION:DEPRECATEDIN_3_0,RSA,STDIO
CRYPTO_ctr128_encrypt_ctr32 1290 3_0_0 EXIST::FUNCTION:
X509_VERIFY_PARAM_move_peername 1291 3_0_0 EXIST::FUNCTION:
OCSP_SINGLERESP_it 1292 3_0_0 EXIST::FUNCTION:OCSP
@ -1387,7 +1387,7 @@ ASN1_BIT_STRING_set_asc 1419 3_0_0 EXIST::FUNCTION:
d2i_GENERAL_NAME 1420 3_0_0 EXIST::FUNCTION:
i2d_ESS_CERT_ID 1421 3_0_0 EXIST::FUNCTION:
X509_TRUST_get_by_id 1422 3_0_0 EXIST::FUNCTION:
d2i_RSA_PUBKEY_fp 1423 3_0_0 EXIST::FUNCTION:RSA,STDIO
d2i_RSA_PUBKEY_fp 1423 3_0_0 EXIST::FUNCTION:DEPRECATEDIN_3_0,RSA,STDIO
EVP_PBE_get 1424 3_0_0 EXIST::FUNCTION:
CRYPTO_nistcts128_encrypt 1425 3_0_0 EXIST::FUNCTION:
CONF_modules_finish 1426 3_0_0 EXIST::FUNCTION:
@ -1829,7 +1829,7 @@ EVP_aes_128_cbc 1871 3_0_0 EXIST::FUNCTION:
CRYPTO_dup_ex_data 1872 3_0_0 EXIST::FUNCTION:
OCSP_single_get0_status 1873 3_0_0 EXIST::FUNCTION:OCSP
d2i_AUTHORITY_INFO_ACCESS 1874 3_0_0 EXIST::FUNCTION:
PEM_read_RSAPrivateKey 1875 3_0_0 EXIST::FUNCTION:RSA,STDIO
PEM_read_RSAPrivateKey 1875 3_0_0 EXIST::FUNCTION:DEPRECATEDIN_3_0,RSA,STDIO
BIO_closesocket 1876 3_0_0 EXIST::FUNCTION:SOCK
RSA_verify_ASN1_OCTET_STRING 1877 3_0_0 EXIST::FUNCTION:DEPRECATEDIN_3_0,RSA
SCT_set_log_entry_type 1878 3_0_0 EXIST::FUNCTION:CT
@ -1885,10 +1885,10 @@ X509_LOOKUP_by_subject 1930 3_0_0 EXIST::FUNCTION:
X509_REQ_add_extensions 1931 3_0_0 EXIST::FUNCTION:
Camellia_cbc_encrypt 1932 3_0_0 EXIST::FUNCTION:CAMELLIA,DEPRECATEDIN_3_0
EC_KEY_METHOD_new 1933 3_0_0 EXIST::FUNCTION:DEPRECATEDIN_3_0,EC
RSA_flags 1934 3_0_0 EXIST::FUNCTION:RSA
RSA_flags 1934 3_0_0 EXIST::FUNCTION:DEPRECATEDIN_3_0,RSA
X509_NAME_add_entry 1935 3_0_0 EXIST::FUNCTION:
EVP_CIPHER_get_asn1_iv 1936 3_0_0 EXIST::FUNCTION:
i2d_RSAPrivateKey_bio 1937 3_0_0 EXIST::FUNCTION:RSA
i2d_RSAPrivateKey_bio 1937 3_0_0 EXIST::FUNCTION:DEPRECATEDIN_3_0,RSA
PKCS5_PBE_keyivgen 1938 3_0_0 EXIST::FUNCTION:
i2d_OCSP_SERVICELOC 1939 3_0_0 EXIST::FUNCTION:OCSP
EC_POINT_copy 1940 3_0_0 EXIST::FUNCTION:EC
@ -2000,7 +2000,7 @@ EVP_DecryptFinal 2046 3_0_0 EXIST::FUNCTION:
ASN1_ENUMERATED_it 2047 3_0_0 EXIST::FUNCTION:
o2i_ECPublicKey 2048 3_0_0 EXIST::FUNCTION:EC
ERR_load_BUF_strings 2049 3_0_0 EXIST::FUNCTION:
PEM_read_bio_RSA_PUBKEY 2050 3_0_0 EXIST::FUNCTION:RSA
PEM_read_bio_RSA_PUBKEY 2050 3_0_0 EXIST::FUNCTION:DEPRECATEDIN_3_0,RSA
OCSP_SINGLERESP_new 2051 3_0_0 EXIST::FUNCTION:OCSP
ASN1_SCTX_free 2052 3_0_0 EXIST::FUNCTION:
i2d_ECPrivateKey_fp 2053 3_0_0 EXIST::FUNCTION:EC,STDIO
@ -2034,7 +2034,7 @@ BN_mul 2080 3_0_0 EXIST::FUNCTION:
BN_get0_nist_prime_384 2081 3_0_0 EXIST::FUNCTION:
X509_VERIFY_PARAM_set1_ip_asc 2082 3_0_0 EXIST::FUNCTION:
CONF_modules_load 2083 3_0_0 EXIST::FUNCTION:
d2i_RSAPublicKey 2084 3_0_0 EXIST::FUNCTION:RSA
d2i_RSAPublicKey 2084 3_0_0 EXIST::FUNCTION:DEPRECATEDIN_3_0,RSA
i2d_ASN1_GENERALSTRING 2085 3_0_0 EXIST::FUNCTION:
POLICYQUALINFO_new 2086 3_0_0 EXIST::FUNCTION:
PKCS7_RECIP_INFO_get0_alg 2087 3_0_0 EXIST::FUNCTION:
@ -2120,7 +2120,7 @@ EC_POINT_method_of 2165 3_0_0 EXIST::FUNCTION:DEPRECATEDIN_
PKCS7_ENCRYPT_it 2166 3_0_0 EXIST::FUNCTION:
AUTHORITY_INFO_ACCESS_it 2167 3_0_0 EXIST::FUNCTION:
X509_EXTENSION_create_by_NID 2168 3_0_0 EXIST::FUNCTION:
i2d_RSAPrivateKey 2169 3_0_0 EXIST::FUNCTION:RSA
i2d_RSAPrivateKey 2169 3_0_0 EXIST::FUNCTION:DEPRECATEDIN_3_0,RSA
d2i_CERTIFICATEPOLICIES 2170 3_0_0 EXIST::FUNCTION:
CMAC_CTX_get0_cipher_ctx 2171 3_0_0 EXIST::FUNCTION:CMAC,DEPRECATEDIN_3_0
X509_STORE_load_locations 2172 3_0_0 EXIST::FUNCTION:
@ -2239,7 +2239,7 @@ SCT_set1_extensions 2286 3_0_0 EXIST::FUNCTION:CT
PKCS12_SAFEBAG_new 2287 3_0_0 EXIST::FUNCTION:
TS_TST_INFO_set_nonce 2288 3_0_0 EXIST::FUNCTION:TS
PEM_read_ECPrivateKey 2289 3_0_0 EXIST::FUNCTION:EC,STDIO
RSA_free 2290 3_0_0 EXIST::FUNCTION:RSA
RSA_free 2290 3_0_0 EXIST::FUNCTION:DEPRECATEDIN_3_0,RSA
X509_CRL_INFO_new 2291 3_0_0 EXIST::FUNCTION:
AES_cfb8_encrypt 2292 3_0_0 EXIST::FUNCTION:DEPRECATEDIN_3_0
d2i_ASN1_SEQUENCE_ANY 2293 3_0_0 EXIST::FUNCTION:
@ -2267,7 +2267,7 @@ EC_POINT_new 2314 3_0_0 EXIST::FUNCTION:EC
PKCS7_ISSUER_AND_SERIAL_digest 2315 3_0_0 EXIST::FUNCTION:
EVP_des_ofb 2316 3_0_0 EXIST::FUNCTION:DES
DSA_set_method 2317 3_0_0 EXIST::FUNCTION:DEPRECATEDIN_3_0,DSA
EVP_PKEY_get1_RSA 2318 3_0_0 EXIST::FUNCTION:RSA
EVP_PKEY_get1_RSA 2318 3_0_0 EXIST::FUNCTION:DEPRECATEDIN_3_0,RSA
EC_KEY_OpenSSL 2319 3_0_0 EXIST::FUNCTION:EC
EVP_camellia_192_ofb 2320 3_0_0 EXIST::FUNCTION:CAMELLIA
ASN1_STRING_length 2321 3_0_0 EXIST::FUNCTION:
@ -2363,7 +2363,7 @@ EVP_MD_CTX_md_data 2412 3_0_0 EXIST::FUNCTION:
ASN1_PCTX_set_nm_flags 2413 3_0_0 EXIST::FUNCTION:
BIO_ctrl 2414 3_0_0 EXIST::FUNCTION:
X509_CRL_set_default_method 2415 3_0_0 EXIST::FUNCTION:
d2i_RSAPublicKey_fp 2417 3_0_0 EXIST::FUNCTION:RSA,STDIO
d2i_RSAPublicKey_fp 2417 3_0_0 EXIST::FUNCTION:DEPRECATEDIN_3_0,RSA,STDIO
UI_method_get_flusher 2418 3_0_0 EXIST::FUNCTION:
EC_POINT_dbl 2419 3_0_0 EXIST::FUNCTION:EC
i2d_X509_CRL_INFO 2420 3_0_0 EXIST::FUNCTION:
@ -2586,7 +2586,7 @@ d2i_PBKDF2PARAM 2640 3_0_0 EXIST::FUNCTION:
ERR_load_COMP_strings 2641 3_0_0 EXIST::FUNCTION:COMP
EVP_PKEY_meth_add0 2642 3_0_0 EXIST::FUNCTION:DEPRECATEDIN_3_0
EVP_rc4_40 2643 3_0_0 EXIST::FUNCTION:RC4
RSA_bits 2645 3_0_0 EXIST::FUNCTION:RSA
RSA_bits 2645 3_0_0 EXIST::FUNCTION:DEPRECATEDIN_3_0,RSA
ASN1_item_dup 2646 3_0_0 EXIST::FUNCTION:
GENERAL_NAMES_it 2647 3_0_0 EXIST::FUNCTION:
X509_issuer_name_hash 2648 3_0_0 EXIST::FUNCTION:
@ -2680,7 +2680,7 @@ CRYPTO_THREAD_lock_new 2736 3_0_0 EXIST::FUNCTION:
BIO_get_ex_data 2737 3_0_0 EXIST::FUNCTION:
CMS_digest_create 2738 3_0_0 EXIST::FUNCTION:CMS
EC_KEY_METHOD_set_verify 2739 3_0_0 EXIST::FUNCTION:DEPRECATEDIN_3_0,EC
PEM_read_RSAPublicKey 2740 3_0_0 EXIST::FUNCTION:RSA,STDIO
PEM_read_RSAPublicKey 2740 3_0_0 EXIST::FUNCTION:DEPRECATEDIN_3_0,RSA,STDIO
ENGINE_pkey_asn1_find_str 2741 3_0_0 EXIST::FUNCTION:DEPRECATEDIN_3_0,ENGINE
ENGINE_get_load_privkey_function 2742 3_0_0 EXIST::FUNCTION:DEPRECATEDIN_3_0,ENGINE
d2i_IPAddressRange 2743 3_0_0 EXIST::FUNCTION:RFC3779
@ -2716,7 +2716,7 @@ ENGINE_unregister_DSA 2773 3_0_0 EXIST::FUNCTION:DEPRECATEDIN_
ASN1_bn_print 2774 3_0_0 EXIST::FUNCTION:
CMS_is_detached 2775 3_0_0 EXIST::FUNCTION:CMS
X509_REQ_INFO_it 2776 3_0_0 EXIST::FUNCTION:
RSAPrivateKey_it 2777 3_0_0 EXIST::FUNCTION:RSA
RSAPrivateKey_it 2777 3_0_0 EXIST::FUNCTION:DEPRECATEDIN_3_0,RSA
X509_NAME_ENTRY_free 2778 3_0_0 EXIST::FUNCTION:
BIO_new_fd 2779 3_0_0 EXIST::FUNCTION:
OPENSSL_sk_value 2781 3_0_0 EXIST::FUNCTION:
@ -2837,7 +2837,7 @@ ASIdentifiers_it 2898 3_0_0 EXIST::FUNCTION:RFC3779
BN_mod_lshift 2899 3_0_0 EXIST::FUNCTION:
ENGINE_get_last 2900 3_0_0 EXIST::FUNCTION:DEPRECATEDIN_3_0,ENGINE
EVP_PKEY_encrypt_init 2901 3_0_0 EXIST::FUNCTION:
i2d_RSAPrivateKey_fp 2902 3_0_0 EXIST::FUNCTION:RSA,STDIO
i2d_RSAPrivateKey_fp 2902 3_0_0 EXIST::FUNCTION:DEPRECATEDIN_3_0,RSA,STDIO
X509_REQ_print 2903 3_0_0 EXIST::FUNCTION:
RSA_size 2904 3_0_0 EXIST::FUNCTION:DEPRECATEDIN_3_0,RSA
EVP_CIPHER_CTX_iv_noconst 2905 3_0_0 EXIST::FUNCTION:DEPRECATEDIN_3_0
@ -2938,14 +2938,14 @@ COMP_CTX_get_type 3000 3_0_0 EXIST::FUNCTION:COMP
TS_RESP_CTX_set_status_info 3001 3_0_0 EXIST::FUNCTION:TS
BIO_f_nbio_test 3002 3_0_0 EXIST::FUNCTION:
SEED_ofb128_encrypt 3003 3_0_0 EXIST::FUNCTION:DEPRECATEDIN_3_0,SEED
d2i_RSAPrivateKey_bio 3004 3_0_0 EXIST::FUNCTION:RSA
d2i_RSAPrivateKey_bio 3004 3_0_0 EXIST::FUNCTION:DEPRECATEDIN_3_0,RSA
DH_KDF_X9_42 3005 3_0_0 EXIST::FUNCTION:DEPRECATEDIN_3_0,DH
EVP_PKEY_meth_set_signctx 3006 3_0_0 EXIST::FUNCTION:DEPRECATEDIN_3_0
X509_CRL_get_version 3007 3_0_0 EXIST::FUNCTION:
EVP_PKEY_meth_get0_info 3008 3_0_0 EXIST::FUNCTION:DEPRECATEDIN_3_0
PEM_read_bio_RSAPublicKey 3009 3_0_0 EXIST::FUNCTION:RSA
PEM_read_bio_RSAPublicKey 3009 3_0_0 EXIST::FUNCTION:DEPRECATEDIN_3_0,RSA
EVP_PKEY_asn1_set_private 3010 3_0_0 EXIST::FUNCTION:
EVP_PKEY_get0_RSA 3011 3_0_0 EXIST::FUNCTION:RSA
EVP_PKEY_get0_RSA 3011 3_0_0 EXIST::FUNCTION:DEPRECATEDIN_3_0,RSA
DES_ede3_cfb64_encrypt 3012 3_0_0 EXIST::FUNCTION:DEPRECATEDIN_3_0,DES
POLICY_MAPPING_free 3014 3_0_0 EXIST::FUNCTION:
EVP_aes_128_gcm 3015 3_0_0 EXIST::FUNCTION:
@ -2959,7 +2959,7 @@ BN_rand 3023 3_0_0 EXIST::FUNCTION:
ASN1_TYPE_unpack_sequence 3024 3_0_0 EXIST::FUNCTION:
X509_CRL_sign_ctx 3025 3_0_0 EXIST::FUNCTION:
X509_STORE_add_crl 3026 3_0_0 EXIST::FUNCTION:
PEM_write_RSAPrivateKey 3027 3_0_0 EXIST::FUNCTION:RSA,STDIO
PEM_write_RSAPrivateKey 3027 3_0_0 EXIST::FUNCTION:DEPRECATEDIN_3_0,RSA,STDIO
RC4_set_key 3028 3_0_0 EXIST::FUNCTION:DEPRECATEDIN_3_0,RC4
EVP_CIPHER_CTX_cipher 3029 3_0_0 EXIST::FUNCTION:
PEM_write_bio_PKCS8PrivateKey_nid 3030 3_0_0 EXIST::FUNCTION:
@ -3000,7 +3000,7 @@ ASN1_PCTX_set_str_flags 3064 3_0_0 EXIST::FUNCTION:
i2a_ASN1_INTEGER 3065 3_0_0 EXIST::FUNCTION:
d2i_TS_RESP 3066 3_0_0 EXIST::FUNCTION:TS
EVP_des_ede_cfb64 3067 3_0_0 EXIST::FUNCTION:DES
d2i_RSAPrivateKey 3068 3_0_0 EXIST::FUNCTION:RSA
d2i_RSAPrivateKey 3068 3_0_0 EXIST::FUNCTION:DEPRECATEDIN_3_0,RSA
ERR_load_BN_strings 3069 3_0_0 EXIST::FUNCTION:
BF_encrypt 3070 3_0_0 EXIST::FUNCTION:BF,DEPRECATEDIN_3_0
MD5 3071 3_0_0 EXIST::FUNCTION:DEPRECATEDIN_3_0,MD5
@ -3008,7 +3008,7 @@ BN_GF2m_arr2poly 3072 3_0_0 EXIST::FUNCTION:EC2M
EVP_PKEY_meth_get_ctrl 3073 3_0_0 EXIST::FUNCTION:DEPRECATEDIN_3_0
i2d_X509_REQ_bio 3074 3_0_0 EXIST::FUNCTION:
X509_VERIFY_PARAM_set1_name 3075 3_0_0 EXIST::FUNCTION:
d2i_RSAPublicKey_bio 3076 3_0_0 EXIST::FUNCTION:RSA
d2i_RSAPublicKey_bio 3076 3_0_0 EXIST::FUNCTION:DEPRECATEDIN_3_0,RSA
X509_REQ_get_X509_PUBKEY 3077 3_0_0 EXIST::FUNCTION:
ENGINE_load_private_key 3078 3_0_0 EXIST::FUNCTION:DEPRECATEDIN_3_0,ENGINE
GENERAL_NAMES_new 3079 3_0_0 EXIST::FUNCTION:
@ -3119,7 +3119,7 @@ CTLOG_get0_public_key 3184 3_0_0 EXIST::FUNCTION:CT
OCSP_REQUEST_get_ext_by_OBJ 3185 3_0_0 EXIST::FUNCTION:OCSP
X509_NAME_oneline 3186 3_0_0 EXIST::FUNCTION:
X509V3_set_nconf 3187 3_0_0 EXIST::FUNCTION:
RSAPrivateKey_dup 3188 3_0_0 EXIST::FUNCTION:RSA
RSAPrivateKey_dup 3188 3_0_0 EXIST::FUNCTION:DEPRECATEDIN_3_0,RSA
BN_mod_add 3189 3_0_0 EXIST::FUNCTION:
EC_POINT_set_affine_coordinates_GFp 3190 3_0_0 EXIST::FUNCTION:DEPRECATEDIN_3_0,EC
X509_get_default_cert_file 3191 3_0_0 EXIST::FUNCTION:
@ -3200,7 +3200,7 @@ d2i_ASN1_OCTET_STRING 3265 3_0_0 EXIST::FUNCTION:
ENGINE_set_load_pubkey_function 3266 3_0_0 EXIST::FUNCTION:DEPRECATEDIN_3_0,ENGINE
BIO_vprintf 3267 3_0_0 EXIST::FUNCTION:
CMS_RecipientInfo_decrypt 3268 3_0_0 EXIST::FUNCTION:CMS
RSA_generate_key 3269 3_0_0 EXIST::FUNCTION:DEPRECATEDIN_0_9_8,RSA
RSA_generate_key 3269 3_0_0 EXIST::FUNCTION:DEPRECATEDIN_3_0,RSA
PKCS7_set0_type_other 3270 3_0_0 EXIST::FUNCTION:
OCSP_REQUEST_new 3271 3_0_0 EXIST::FUNCTION:OCSP
BIO_lookup 3272 3_0_0 EXIST::FUNCTION:SOCK
@ -3508,7 +3508,7 @@ ASN1_TIME_to_generalizedtime 3583 3_0_0 EXIST::FUNCTION:
X509_CRL_get_ext_by_critical 3584 3_0_0 EXIST::FUNCTION:
ASN1_STRING_type 3585 3_0_0 EXIST::FUNCTION:
X509_REQ_add1_attr_by_txt 3586 3_0_0 EXIST::FUNCTION:
PEM_write_RSAPublicKey 3587 3_0_0 EXIST::FUNCTION:RSA,STDIO
PEM_write_RSAPublicKey 3587 3_0_0 EXIST::FUNCTION:DEPRECATEDIN_3_0,RSA,STDIO
EVP_MD_meth_dup 3588 3_0_0 EXIST::FUNCTION:DEPRECATEDIN_3_0
ENGINE_unregister_ciphers 3589 3_0_0 EXIST::FUNCTION:DEPRECATEDIN_3_0,ENGINE
X509_issuer_and_serial_cmp 3590 3_0_0 EXIST::FUNCTION:
@ -3613,7 +3613,7 @@ OTHERNAME_free 3692 3_0_0 EXIST::FUNCTION:
OCSP_REVOKEDINFO_free 3693 3_0_0 EXIST::FUNCTION:OCSP
EVP_CIPHER_CTX_encrypting 3694 3_0_0 EXIST::FUNCTION:
EC_KEY_can_sign 3695 3_0_0 EXIST::FUNCTION:EC
PEM_write_bio_RSAPublicKey 3696 3_0_0 EXIST::FUNCTION:RSA
PEM_write_bio_RSAPublicKey 3696 3_0_0 EXIST::FUNCTION:DEPRECATEDIN_3_0,RSA
X509_CRL_set1_lastUpdate 3697 3_0_0 EXIST::FUNCTION:
OCSP_sendreq_nbio 3698 3_0_0 EXIST::FUNCTION:OCSP
PKCS8_encrypt 3699 3_0_0 EXIST::FUNCTION:
@ -3730,7 +3730,7 @@ PKEY_USAGE_PERIOD_it 3810 3_0_0 EXIST::FUNCTION:
BN_mul_word 3811 3_0_0 EXIST::FUNCTION:
i2d_IPAddressRange 3813 3_0_0 EXIST::FUNCTION:RFC3779
CMS_unsigned_add1_attr_by_txt 3814 3_0_0 EXIST::FUNCTION:CMS
d2i_RSA_PUBKEY 3815 3_0_0 EXIST::FUNCTION:RSA
d2i_RSA_PUBKEY 3815 3_0_0 EXIST::FUNCTION:DEPRECATEDIN_3_0,RSA
PKCS12_gen_mac 3816 3_0_0 EXIST::FUNCTION:
ERR_load_ENGINE_strings 3817 3_0_0 EXIST::FUNCTION:ENGINE
ERR_load_CT_strings 3818 3_0_0 EXIST::FUNCTION:CT
@ -3907,30 +3907,30 @@ DSA_get0_engine 3990 3_0_0 EXIST::FUNCTION:DEPRECATEDIN_
X509_VERIFY_PARAM_set_auth_level 3991 3_0_0 EXIST::FUNCTION:
X509_VERIFY_PARAM_get_auth_level 3992 3_0_0 EXIST::FUNCTION:
X509_REQ_get0_pubkey 3993 3_0_0 EXIST::FUNCTION:
RSA_set0_key 3994 3_0_0 EXIST::FUNCTION:RSA
RSA_set0_key 3994 3_0_0 EXIST::FUNCTION:DEPRECATEDIN_3_0,RSA
RSA_meth_get_flags 3995 3_0_0 EXIST::FUNCTION:DEPRECATEDIN_3_0,RSA
RSA_meth_set_finish 3996 3_0_0 EXIST::FUNCTION:DEPRECATEDIN_3_0,RSA
RSA_meth_get_priv_dec 3997 3_0_0 EXIST::FUNCTION:DEPRECATEDIN_3_0,RSA
RSA_meth_get_sign 3998 3_0_0 EXIST::FUNCTION:DEPRECATEDIN_3_0,RSA
RSA_meth_get_bn_mod_exp 3999 3_0_0 EXIST::FUNCTION:DEPRECATEDIN_3_0,RSA
RSA_test_flags 4000 3_0_0 EXIST::FUNCTION:RSA
RSA_test_flags 4000 3_0_0 EXIST::FUNCTION:DEPRECATEDIN_3_0,RSA
RSA_meth_new 4001 3_0_0 EXIST::FUNCTION:DEPRECATEDIN_3_0,RSA
RSA_meth_get0_app_data 4002 3_0_0 EXIST::FUNCTION:DEPRECATEDIN_3_0,RSA
RSA_meth_dup 4003 3_0_0 EXIST::FUNCTION:DEPRECATEDIN_3_0,RSA
RSA_meth_set1_name 4004 3_0_0 EXIST::FUNCTION:DEPRECATEDIN_3_0,RSA
RSA_meth_set0_app_data 4005 3_0_0 EXIST::FUNCTION:DEPRECATEDIN_3_0,RSA
RSA_set_flags 4006 3_0_0 EXIST::FUNCTION:RSA
RSA_set_flags 4006 3_0_0 EXIST::FUNCTION:DEPRECATEDIN_3_0,RSA
RSA_meth_set_sign 4007 3_0_0 EXIST::FUNCTION:DEPRECATEDIN_3_0,RSA
RSA_clear_flags 4008 3_0_0 EXIST::FUNCTION:RSA
RSA_clear_flags 4008 3_0_0 EXIST::FUNCTION:DEPRECATEDIN_3_0,RSA
RSA_meth_get_keygen 4009 3_0_0 EXIST::FUNCTION:DEPRECATEDIN_3_0,RSA
RSA_meth_set_keygen 4010 3_0_0 EXIST::FUNCTION:DEPRECATEDIN_3_0,RSA
RSA_meth_set_pub_dec 4011 3_0_0 EXIST::FUNCTION:DEPRECATEDIN_3_0,RSA
RSA_meth_get_finish 4012 3_0_0 EXIST::FUNCTION:DEPRECATEDIN_3_0,RSA
RSA_get0_key 4013 3_0_0 EXIST::FUNCTION:RSA
RSA_get0_key 4013 3_0_0 EXIST::FUNCTION:DEPRECATEDIN_3_0,RSA
RSA_get0_engine 4014 3_0_0 EXIST::FUNCTION:DEPRECATEDIN_3_0,RSA
RSA_meth_set_priv_enc 4015 3_0_0 EXIST::FUNCTION:DEPRECATEDIN_3_0,RSA
RSA_meth_set_verify 4016 3_0_0 EXIST::FUNCTION:DEPRECATEDIN_3_0,RSA
RSA_get0_factors 4017 3_0_0 EXIST::FUNCTION:RSA
RSA_get0_factors 4017 3_0_0 EXIST::FUNCTION:DEPRECATEDIN_3_0,RSA
RSA_meth_get0_name 4018 3_0_0 EXIST::FUNCTION:DEPRECATEDIN_3_0,RSA
RSA_meth_get_mod_exp 4019 3_0_0 EXIST::FUNCTION:DEPRECATEDIN_3_0,RSA
RSA_meth_set_flags 4020 3_0_0 EXIST::FUNCTION:DEPRECATEDIN_3_0,RSA
@ -3940,14 +3940,14 @@ RSA_meth_get_init 4023 3_0_0 EXIST::FUNCTION:DEPRECATEDIN_
RSA_meth_free 4024 3_0_0 EXIST::FUNCTION:DEPRECATEDIN_3_0,RSA
RSA_meth_get_pub_enc 4025 3_0_0 EXIST::FUNCTION:DEPRECATEDIN_3_0,RSA
RSA_meth_set_mod_exp 4026 3_0_0 EXIST::FUNCTION:DEPRECATEDIN_3_0,RSA
RSA_set0_factors 4027 3_0_0 EXIST::FUNCTION:RSA
RSA_set0_factors 4027 3_0_0 EXIST::FUNCTION:DEPRECATEDIN_3_0,RSA
RSA_meth_set_pub_enc 4028 3_0_0 EXIST::FUNCTION:DEPRECATEDIN_3_0,RSA
RSA_meth_set_priv_dec 4029 3_0_0 EXIST::FUNCTION:DEPRECATEDIN_3_0,RSA
RSA_meth_get_verify 4030 3_0_0 EXIST::FUNCTION:DEPRECATEDIN_3_0,RSA
RSA_meth_set_init 4031 3_0_0 EXIST::FUNCTION:DEPRECATEDIN_3_0,RSA
RSA_meth_get_priv_enc 4032 3_0_0 EXIST::FUNCTION:DEPRECATEDIN_3_0,RSA
RSA_set0_crt_params 4037 3_0_0 EXIST::FUNCTION:RSA
RSA_get0_crt_params 4038 3_0_0 EXIST::FUNCTION:RSA
RSA_set0_crt_params 4037 3_0_0 EXIST::FUNCTION:DEPRECATEDIN_3_0,RSA
RSA_get0_crt_params 4038 3_0_0 EXIST::FUNCTION:DEPRECATEDIN_3_0,RSA
DH_set0_pqg 4039 3_0_0 EXIST::FUNCTION:DH
DH_clear_flags 4041 3_0_0 EXIST::FUNCTION:DH
DH_get0_key 4042 3_0_0 EXIST::FUNCTION:DH
@ -4248,7 +4248,7 @@ EVP_sm4_ofb 4356 3_0_0 EXIST::FUNCTION:SM4
EVP_sm4_ecb 4357 3_0_0 EXIST::FUNCTION:SM4
EVP_sm4_cfb128 4358 3_0_0 EXIST::FUNCTION:SM4
EVP_sm3 4359 3_0_0 EXIST::FUNCTION:SM3
RSA_get0_multi_prime_factors 4360 3_0_0 EXIST::FUNCTION:RSA
RSA_get0_multi_prime_factors 4360 3_0_0 EXIST::FUNCTION:DEPRECATEDIN_3_0,RSA
EVP_PKEY_public_check 4361 3_0_0 EXIST::FUNCTION:
EVP_PKEY_param_check 4362 3_0_0 EXIST::FUNCTION:
EVP_PKEY_meth_set_public_check 4363 3_0_0 EXIST::FUNCTION:DEPRECATEDIN_3_0
@ -4261,10 +4261,10 @@ DH_check_ex 4369 3_0_0 EXIST::FUNCTION:DEPRECATEDIN_
DH_check_pub_key_ex 4370 3_0_0 EXIST::FUNCTION:DEPRECATEDIN_3_0,DH
DH_check_params_ex 4371 3_0_0 EXIST::FUNCTION:DEPRECATEDIN_3_0,DH
RSA_generate_multi_prime_key 4372 3_0_0 EXIST::FUNCTION:DEPRECATEDIN_3_0,RSA
RSA_get_multi_prime_extra_count 4373 3_0_0 EXIST::FUNCTION:RSA
RSA_get_multi_prime_extra_count 4373 3_0_0 EXIST::FUNCTION:DEPRECATEDIN_3_0,RSA
OCSP_resp_get0_signer 4374 3_0_0 EXIST::FUNCTION:OCSP
RSA_get0_multi_prime_crt_params 4375 3_0_0 EXIST::FUNCTION:RSA
RSA_set0_multi_prime_params 4376 3_0_0 EXIST::FUNCTION:RSA
RSA_get0_multi_prime_crt_params 4375 3_0_0 EXIST::FUNCTION:DEPRECATEDIN_3_0,RSA
RSA_set0_multi_prime_params 4376 3_0_0 EXIST::FUNCTION:DEPRECATEDIN_3_0,RSA
RSA_get_version 4377 3_0_0 EXIST::FUNCTION:DEPRECATEDIN_3_0,RSA
RSA_meth_get_multi_prime_keygen 4378 3_0_0 EXIST::FUNCTION:DEPRECATEDIN_3_0,RSA
RSA_meth_set_multi_prime_keygen 4379 3_0_0 EXIST::FUNCTION:DEPRECATEDIN_3_0,RSA
@ -4355,14 +4355,14 @@ DSA_get0_pub_key 4479 3_0_0 EXIST::FUNCTION:DSA
DSA_get0_q 4480 3_0_0 EXIST::FUNCTION:DSA
DSA_get0_p 4481 3_0_0 EXIST::FUNCTION:DSA
DSA_get0_g 4482 3_0_0 EXIST::FUNCTION:DSA
RSA_get0_dmp1 4483 3_0_0 EXIST::FUNCTION:RSA
RSA_get0_d 4484 3_0_0 EXIST::FUNCTION:RSA
RSA_get0_n 4485 3_0_0 EXIST::FUNCTION:RSA
RSA_get0_dmq1 4486 3_0_0 EXIST::FUNCTION:RSA
RSA_get0_e 4487 3_0_0 EXIST::FUNCTION:RSA
RSA_get0_q 4488 3_0_0 EXIST::FUNCTION:RSA
RSA_get0_p 4489 3_0_0 EXIST::FUNCTION:RSA
RSA_get0_iqmp 4490 3_0_0 EXIST::FUNCTION:RSA
RSA_get0_dmp1 4483 3_0_0 EXIST::FUNCTION:DEPRECATEDIN_3_0,RSA
RSA_get0_d 4484 3_0_0 EXIST::FUNCTION:DEPRECATEDIN_3_0,RSA
RSA_get0_n 4485 3_0_0 EXIST::FUNCTION:DEPRECATEDIN_3_0,RSA
RSA_get0_dmq1 4486 3_0_0 EXIST::FUNCTION:DEPRECATEDIN_3_0,RSA
RSA_get0_e 4487 3_0_0 EXIST::FUNCTION:DEPRECATEDIN_3_0,RSA
RSA_get0_q 4488 3_0_0 EXIST::FUNCTION:DEPRECATEDIN_3_0,RSA
RSA_get0_p 4489 3_0_0 EXIST::FUNCTION:DEPRECATEDIN_3_0,RSA
RSA_get0_iqmp 4490 3_0_0 EXIST::FUNCTION:DEPRECATEDIN_3_0,RSA
ECDSA_SIG_get0_r 4491 3_0_0 EXIST::FUNCTION:EC
ECDSA_SIG_get0_s 4492 3_0_0 EXIST::FUNCTION:EC
X509_LOOKUP_meth_get_get_by_fingerprint 4493 3_0_0 EXIST::FUNCTION:

View File

@ -18,14 +18,14 @@ SSL_CTX_sess_get_get_cb 18 3_0_0 EXIST::FUNCTION:
SSL_CTX_get_default_passwd_cb_userdata 19 3_0_0 EXIST::FUNCTION:
SSL_set_tmp_dh_callback 20 3_0_0 EXIST::FUNCTION:DEPRECATEDIN_3_0,DH
SSL_CTX_get_verify_depth 21 3_0_0 EXIST::FUNCTION:
SSL_CTX_use_RSAPrivateKey_file 22 3_0_0 EXIST::FUNCTION:RSA
SSL_CTX_use_RSAPrivateKey_file 22 3_0_0 EXIST::FUNCTION:DEPRECATEDIN_3_0,RSA
SSL_use_PrivateKey_file 23 3_0_0 EXIST::FUNCTION:
SSL_set_generate_session_id 24 3_0_0 EXIST::FUNCTION:
SSL_get_ex_data_X509_STORE_CTX_idx 25 3_0_0 EXIST::FUNCTION:
SSL_get_quiet_shutdown 26 3_0_0 EXIST::FUNCTION:
SSL_dane_enable 27 3_0_0 EXIST::FUNCTION:
SSL_COMP_add_compression_method 28 3_0_0 EXIST::FUNCTION:
SSL_CTX_use_RSAPrivateKey 29 3_0_0 EXIST::FUNCTION:RSA
SSL_CTX_use_RSAPrivateKey 29 3_0_0 EXIST::FUNCTION:DEPRECATEDIN_3_0,RSA
SSL_CTX_sess_get_new_cb 30 3_0_0 EXIST::FUNCTION:
d2i_SSL_SESSION 31 3_0_0 EXIST::FUNCTION:
SSL_use_PrivateKey_ASN1 32 3_0_0 EXIST::FUNCTION:
@ -65,7 +65,7 @@ SSL_set_security_level 65 3_0_0 EXIST::FUNCTION:
DTLSv1_2_method 66 3_0_0 EXIST::FUNCTION:DEPRECATEDIN_1_1_0,DTLS1_2_METHOD
SSL_get_fd 67 3_0_0 EXIST::FUNCTION:
SSL_get1_session 68 3_0_0 EXIST::FUNCTION:
SSL_use_RSAPrivateKey 69 3_0_0 EXIST::FUNCTION:RSA
SSL_use_RSAPrivateKey 69 3_0_0 EXIST::FUNCTION:DEPRECATEDIN_3_0,RSA
SSL_CTX_set_srp_cb_arg 70 3_0_0 EXIST::FUNCTION:SRP
SSL_CTX_add_session 71 3_0_0 EXIST::FUNCTION:
SSL_get_srp_N 72 3_0_0 EXIST::FUNCTION:SRP
@ -168,7 +168,7 @@ TLSv1_1_server_method 168 3_0_0 EXIST::FUNCTION:DEPRECATEDIN_1
PEM_write_bio_SSL_SESSION 169 3_0_0 EXIST::FUNCTION:
SSL_write 170 3_0_0 EXIST::FUNCTION:
SSL_set1_host 171 3_0_0 EXIST::FUNCTION:
SSL_use_RSAPrivateKey_file 172 3_0_0 EXIST::FUNCTION:RSA
SSL_use_RSAPrivateKey_file 172 3_0_0 EXIST::FUNCTION:DEPRECATEDIN_3_0,RSA
SSL_CTX_get_info_callback 173 3_0_0 EXIST::FUNCTION:
SSL_get0_peername 174 3_0_0 EXIST::FUNCTION:
SSL_set_srp_server_param 175 3_0_0 EXIST::FUNCTION:SRP
@ -193,7 +193,7 @@ SSL_CTX_dane_mtype_set 193 3_0_0 EXIST::FUNCTION:
SSL_get_wfd 194 3_0_0 EXIST::FUNCTION:
SSL_get_ssl_method 195 3_0_0 EXIST::FUNCTION:
SSL_set_verify_result 196 3_0_0 EXIST::FUNCTION:
SSL_use_RSAPrivateKey_ASN1 197 3_0_0 EXIST::FUNCTION:RSA
SSL_use_RSAPrivateKey_ASN1 197 3_0_0 EXIST::FUNCTION:DEPRECATEDIN_3_0,RSA
SSL_CIPHER_get_name 198 3_0_0 EXIST::FUNCTION:
OPENSSL_init_ssl 199 3_0_0 EXIST::FUNCTION:
SSL_dup 200 3_0_0 EXIST::FUNCTION:
@ -320,7 +320,7 @@ SSL_clear_options 320 3_0_0 EXIST::FUNCTION:
SSL_CTX_use_PrivateKey 321 3_0_0 EXIST::FUNCTION:
SSL_get_info_callback 322 3_0_0 EXIST::FUNCTION:
SSL_CTX_use_psk_identity_hint 323 3_0_0 EXIST::FUNCTION:PSK
SSL_CTX_use_RSAPrivateKey_ASN1 324 3_0_0 EXIST::FUNCTION:RSA
SSL_CTX_use_RSAPrivateKey_ASN1 324 3_0_0 EXIST::FUNCTION:DEPRECATEDIN_3_0,RSA
SSL_CTX_use_PrivateKey_ASN1 325 3_0_0 EXIST::FUNCTION:
SSL_CTX_get0_privatekey 326 3_0_0 EXIST::FUNCTION:
BIO_f_ssl 327 3_0_0 EXIST::FUNCTION: