X-Git-Url: https://git.librecmc.org/?a=blobdiff_plain;f=crypto%2Fevp%2Fp_lib.c;h=ba95137a20be46c5f9e507d07f0038bc138a4278;hb=8d5b4ee1cab7cd02f9fe246fb60d7d018a315a86;hp=dba08525a35ab7b64a34c287e5b65e6c8120ca55;hpb=f769ce3ea41ba1c2b16f345722ed006861d51150;p=oweals%2Fopenssl.git diff --git a/crypto/evp/p_lib.c b/crypto/evp/p_lib.c index dba08525a3..ba95137a20 100644 --- a/crypto/evp/p_lib.c +++ b/crypto/evp/p_lib.c @@ -119,7 +119,7 @@ int EVP_PKEY_copy_parameters(EVP_PKEY *to, EVP_PKEY *from) if (EVP_PKEY_missing_parameters(from)) { - EVPerr(EVP_F_EVP_PKEY_COPY_PARAMETERS,EVP_R_MISSING_PARMATERS); + EVPerr(EVP_F_EVP_PKEY_COPY_PARAMETERS,EVP_R_MISSING_PARAMETERS); goto err; } #ifndef NO_DSA @@ -202,14 +202,21 @@ int EVP_PKEY_assign(EVP_PKEY *pkey, int type, char *key) pkey->type=EVP_PKEY_type(type); pkey->save_type=type; pkey->pkey.ptr=key; - return(1); + return(key != NULL); } #ifndef NO_RSA -RSA *EVP_PKEY_get_RSA(EVP_PKEY *pkey) +int EVP_PKEY_rset_RSA(EVP_PKEY *pkey, RSA *key) +{ + int ret = EVP_PKEY_assign_RSA(pkey, key); + if(ret) CRYPTO_add(&key->references, 1, CRYPTO_LOCK_RSA); + return ret; +} + +RSA *EVP_PKEY_rget_RSA(EVP_PKEY *pkey) { if(pkey->type != EVP_PKEY_RSA) { - EVPerr(EVP_F_EVP_PKEY_GET_RSA, EVP_R_EXPECTING_AN_RSA_KEY); + EVPerr(EVP_F_EVP_PKEY_RGET_RSA, EVP_R_EXPECTING_AN_RSA_KEY); return NULL; } CRYPTO_add(&pkey->pkey.rsa->references, 1, CRYPTO_LOCK_RSA); @@ -218,22 +225,37 @@ RSA *EVP_PKEY_get_RSA(EVP_PKEY *pkey) #endif #ifndef NO_DSA -DSA *EVP_PKEY_get_DSA(EVP_PKEY *pkey) +int EVP_PKEY_rset_DSA(EVP_PKEY *pkey, DSA *key) +{ + int ret = EVP_PKEY_assign_DSA(pkey, key); + if(ret) CRYPTO_add(&key->references, 1, CRYPTO_LOCK_DSA); + return ret; +} + +DSA *EVP_PKEY_rget_DSA(EVP_PKEY *pkey) { if(pkey->type != EVP_PKEY_DSA) { - EVPerr(EVP_F_EVP_PKEY_GET_DSA, EVP_R_EXPECTING_A_DSA_KEY); + EVPerr(EVP_F_EVP_PKEY_RGET_DSA, EVP_R_EXPECTING_A_DSA_KEY); return NULL; } - CRYPTO_add(&pkey->pkey.rsa->references, 1, CRYPTO_LOCK_DSA); + CRYPTO_add(&pkey->pkey.dsa->references, 1, CRYPTO_LOCK_DSA); return pkey->pkey.dsa; } #endif #ifndef NO_DH -DH *EVP_PKEY_get_DH(EVP_PKEY *pkey) + +int EVP_PKEY_rset_DH(EVP_PKEY *pkey, DH *key) +{ + int ret = EVP_PKEY_assign_DH(pkey, key); + if(ret) CRYPTO_add(&key->references, 1, CRYPTO_LOCK_DH); + return ret; +} + +DH *EVP_PKEY_rget_DH(EVP_PKEY *pkey) { if(pkey->type != EVP_PKEY_DH) { - EVPerr(EVP_F_EVP_PKEY_GET_DH, EVP_R_EXPECTING_A_DH_KEY); + EVPerr(EVP_F_EVP_PKEY_RGET_DH, EVP_R_EXPECTING_A_DH_KEY); return NULL; } CRYPTO_add(&pkey->pkey.dh->references, 1, CRYPTO_LOCK_DH); @@ -280,7 +302,7 @@ void EVP_PKEY_free(EVP_PKEY *x) } #endif EVP_PKEY_free_it(x); - Free((char *)x); + Free(x); } static void EVP_PKEY_free_it(EVP_PKEY *x)