mirror of https://github.com/openssl/openssl.git
Add ex_data to EVP_PKEY.
Reviewed-by: Matt Caswell <matt@openssl.org> Reviewed-by: Dmitry Belyavskiy <beldmit@gmail.com> (Merged from https://github.com/openssl/openssl/pull/11515)
This commit is contained in:
parent
0437435a96
commit
ff1f7cdeb1
|
@ -96,6 +96,16 @@ int EVP_PKEY_save_parameters(EVP_PKEY *pkey, int mode)
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
int EVP_PKEY_set_ex_data(EVP_PKEY *key, int idx, void *arg)
|
||||||
|
{
|
||||||
|
return CRYPTO_set_ex_data(&key->ex_data, idx, arg);
|
||||||
|
}
|
||||||
|
|
||||||
|
void *EVP_PKEY_get_ex_data(const EVP_PKEY *key, int idx)
|
||||||
|
{
|
||||||
|
return CRYPTO_get_ex_data(&key->ex_data, idx);
|
||||||
|
}
|
||||||
|
|
||||||
int EVP_PKEY_copy_parameters(EVP_PKEY *to, const EVP_PKEY *from)
|
int EVP_PKEY_copy_parameters(EVP_PKEY *to, const EVP_PKEY *from)
|
||||||
{
|
{
|
||||||
/*
|
/*
|
||||||
|
@ -1090,10 +1100,20 @@ EVP_PKEY *EVP_PKEY_new(void)
|
||||||
ret->lock = CRYPTO_THREAD_lock_new();
|
ret->lock = CRYPTO_THREAD_lock_new();
|
||||||
if (ret->lock == NULL) {
|
if (ret->lock == NULL) {
|
||||||
EVPerr(EVP_F_EVP_PKEY_NEW, ERR_R_MALLOC_FAILURE);
|
EVPerr(EVP_F_EVP_PKEY_NEW, ERR_R_MALLOC_FAILURE);
|
||||||
OPENSSL_free(ret);
|
goto err;
|
||||||
return NULL;
|
|
||||||
}
|
}
|
||||||
|
#ifndef FIPS_MODE
|
||||||
|
if (!CRYPTO_new_ex_data(CRYPTO_EX_INDEX_EVP_PKEY, ret, &ret->ex_data)) {
|
||||||
|
EVPerr(EVP_F_EVP_PKEY_NEW, ERR_R_MALLOC_FAILURE);
|
||||||
|
goto err;
|
||||||
|
}
|
||||||
|
#endif
|
||||||
return ret;
|
return ret;
|
||||||
|
|
||||||
|
err:
|
||||||
|
CRYPTO_THREAD_lock_free(ret->lock);
|
||||||
|
OPENSSL_free(ret);
|
||||||
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
@ -1328,6 +1348,9 @@ void EVP_PKEY_free(EVP_PKEY *x)
|
||||||
return;
|
return;
|
||||||
REF_ASSERT_ISNT(i < 0);
|
REF_ASSERT_ISNT(i < 0);
|
||||||
evp_pkey_free_it(x);
|
evp_pkey_free_it(x);
|
||||||
|
#ifndef FIPS_MODE
|
||||||
|
CRYPTO_free_ex_data(CRYPTO_EX_INDEX_EVP_PKEY, x, &x->ex_data);
|
||||||
|
#endif
|
||||||
CRYPTO_THREAD_lock_free(x->lock);
|
CRYPTO_THREAD_lock_free(x->lock);
|
||||||
#ifndef FIPS_MODE
|
#ifndef FIPS_MODE
|
||||||
sk_X509_ATTRIBUTE_pop_free(x->attributes, X509_ATTRIBUTE_free);
|
sk_X509_ATTRIBUTE_pop_free(x->attributes, X509_ATTRIBUTE_free);
|
||||||
|
|
|
@ -9,6 +9,7 @@ DSA_get_ex_new_index, DSA_set_ex_data, DSA_get_ex_data,
|
||||||
ECDH_get_ex_new_index, ECDH_set_ex_data, ECDH_get_ex_data,
|
ECDH_get_ex_new_index, ECDH_set_ex_data, ECDH_get_ex_data,
|
||||||
EC_KEY_get_ex_new_index, EC_KEY_set_ex_data, EC_KEY_get_ex_data,
|
EC_KEY_get_ex_new_index, EC_KEY_set_ex_data, EC_KEY_get_ex_data,
|
||||||
ENGINE_get_ex_new_index, ENGINE_set_ex_data, ENGINE_get_ex_data,
|
ENGINE_get_ex_new_index, ENGINE_set_ex_data, ENGINE_get_ex_data,
|
||||||
|
EVP_PKEY_get_ex_new_index, EVP_PKEY_set_ex_data, EVP_PKEY_get_ex_data,
|
||||||
RAND_DRBG_set_ex_data, RAND_DRBG_get_ex_data, RAND_DRBG_get_ex_new_index,
|
RAND_DRBG_set_ex_data, RAND_DRBG_get_ex_data, RAND_DRBG_get_ex_new_index,
|
||||||
RSA_get_ex_new_index, RSA_set_ex_data, RSA_get_ex_data,
|
RSA_get_ex_new_index, RSA_set_ex_data, RSA_get_ex_data,
|
||||||
RSA_set_app_data, RSA_get_app_data,
|
RSA_set_app_data, RSA_get_app_data,
|
||||||
|
|
|
@ -49,6 +49,7 @@ The specific structures are:
|
||||||
DSA
|
DSA
|
||||||
EC_KEY
|
EC_KEY
|
||||||
ENGINE
|
ENGINE
|
||||||
|
EVP_PKEY
|
||||||
RAND_DRBG
|
RAND_DRBG
|
||||||
RSA
|
RSA
|
||||||
SSL
|
SSL
|
||||||
|
|
|
@ -557,6 +557,9 @@ struct evp_pkey_st {
|
||||||
CRYPTO_RWLOCK *lock;
|
CRYPTO_RWLOCK *lock;
|
||||||
STACK_OF(X509_ATTRIBUTE) *attributes; /* [ 0 ] */
|
STACK_OF(X509_ATTRIBUTE) *attributes; /* [ 0 ] */
|
||||||
int save_parameters;
|
int save_parameters;
|
||||||
|
#ifndef FIPS_MODE
|
||||||
|
CRYPTO_EX_DATA ex_data;
|
||||||
|
#endif
|
||||||
|
|
||||||
/* == Provider attributes == */
|
/* == Provider attributes == */
|
||||||
|
|
||||||
|
|
|
@ -192,7 +192,8 @@ DEFINE_STACK_OF(void)
|
||||||
# define CRYPTO_EX_INDEX_RAND_DRBG 15
|
# define CRYPTO_EX_INDEX_RAND_DRBG 15
|
||||||
# define CRYPTO_EX_INDEX_DRBG CRYPTO_EX_INDEX_RAND_DRBG
|
# define CRYPTO_EX_INDEX_DRBG CRYPTO_EX_INDEX_RAND_DRBG
|
||||||
# define CRYPTO_EX_INDEX_OPENSSL_CTX 16
|
# define CRYPTO_EX_INDEX_OPENSSL_CTX 16
|
||||||
# define CRYPTO_EX_INDEX__COUNT 17
|
# define CRYPTO_EX_INDEX_EVP_PKEY 17
|
||||||
|
# define CRYPTO_EX_INDEX__COUNT 18
|
||||||
|
|
||||||
typedef void CRYPTO_EX_new (void *parent, void *ptr, CRYPTO_EX_DATA *ad,
|
typedef void CRYPTO_EX_new (void *parent, void *ptr, CRYPTO_EX_DATA *ad,
|
||||||
int idx, long argl, void *argp);
|
int idx, long argl, void *argp);
|
||||||
|
|
|
@ -1616,6 +1616,11 @@ int EVP_PKEY_param_check(EVP_PKEY_CTX *ctx);
|
||||||
int EVP_PKEY_private_check(EVP_PKEY_CTX *ctx);
|
int EVP_PKEY_private_check(EVP_PKEY_CTX *ctx);
|
||||||
int EVP_PKEY_pairwise_check(EVP_PKEY_CTX *ctx);
|
int EVP_PKEY_pairwise_check(EVP_PKEY_CTX *ctx);
|
||||||
|
|
||||||
|
# define EVP_PKEY_get_ex_new_index(l, p, newf, dupf, freef) \
|
||||||
|
CRYPTO_get_ex_new_index(CRYPTO_EX_INDEX_EVP_PKEY, l, p, newf, dupf, freef)
|
||||||
|
int EVP_PKEY_set_ex_data(EVP_PKEY *key, int idx, void *arg);
|
||||||
|
void *EVP_PKEY_get_ex_data(const EVP_PKEY *key, int idx);
|
||||||
|
|
||||||
void EVP_PKEY_CTX_set_cb(EVP_PKEY_CTX *ctx, EVP_PKEY_gen_cb *cb);
|
void EVP_PKEY_CTX_set_cb(EVP_PKEY_CTX *ctx, EVP_PKEY_gen_cb *cb);
|
||||||
EVP_PKEY_gen_cb *EVP_PKEY_CTX_get_cb(EVP_PKEY_CTX *ctx);
|
EVP_PKEY_gen_cb *EVP_PKEY_CTX_get_cb(EVP_PKEY_CTX *ctx);
|
||||||
|
|
||||||
|
|
|
@ -5045,3 +5045,5 @@ CT_POLICY_EVAL_CTX_new_with_libctx ? 3_0_0 EXIST::FUNCTION:CT
|
||||||
CTLOG_new_with_libctx ? 3_0_0 EXIST::FUNCTION:CT
|
CTLOG_new_with_libctx ? 3_0_0 EXIST::FUNCTION:CT
|
||||||
CTLOG_new_from_base64_with_libctx ? 3_0_0 EXIST::FUNCTION:CT
|
CTLOG_new_from_base64_with_libctx ? 3_0_0 EXIST::FUNCTION:CT
|
||||||
CTLOG_STORE_new_with_libctx ? 3_0_0 EXIST::FUNCTION:CT
|
CTLOG_STORE_new_with_libctx ? 3_0_0 EXIST::FUNCTION:CT
|
||||||
|
EVP_PKEY_set_ex_data ? 3_0_0 EXIST::FUNCTION:
|
||||||
|
EVP_PKEY_get_ex_data ? 3_0_0 EXIST::FUNCTION:
|
||||||
|
|
Loading…
Reference in New Issue