From cd7638980a2c2b16bb121bcb2ea8cc3cb03afcc1 Mon Sep 17 00:00:00 2001 From: "Dr. Stephen Henson" Date: Fri, 7 Apr 2006 17:28:56 +0000 Subject: Include EVP_PKEY argument in EVP_PKEY_CTX_new(). This avoids the need for a separate EVP_PKEY parameter in the other operation initialization routines. --- crypto/evp/pmeth_lib.c | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) (limited to 'crypto/evp/pmeth_lib.c') diff --git a/crypto/evp/pmeth_lib.c b/crypto/evp/pmeth_lib.c index d229b0996d..0c0aa9ba53 100644 --- a/crypto/evp/pmeth_lib.c +++ b/crypto/evp/pmeth_lib.c @@ -61,6 +61,7 @@ #include #include "cryptlib.h" #include +#include "asn1_locl.h" #include "evp_locl.h" STACK *app_pkey_methods = NULL; @@ -100,17 +101,20 @@ const EVP_PKEY_METHOD *EVP_PKEY_meth_find(int type, ENGINE *e) return *ret; } -EVP_PKEY_CTX *EVP_PKEY_CTX_new(int ktype, ENGINE *e) +EVP_PKEY_CTX *EVP_PKEY_CTX_new(EVP_PKEY *pkey) { EVP_PKEY_CTX *ret; const EVP_PKEY_METHOD *pmeth; - pmeth = EVP_PKEY_meth_find(ktype, e); + if (!pkey || !pkey->ameth) + return NULL; + pmeth = EVP_PKEY_meth_find(pkey->ameth->pkey_id, NULL); if (pmeth == NULL) return NULL; ret = OPENSSL_malloc(sizeof(EVP_PKEY_CTX)); ret->pmeth = pmeth; ret->operation = EVP_PKEY_OP_UNDEFINED; - ret->pkey = NULL; + CRYPTO_add(&pkey->references,1,CRYPTO_LOCK_EVP_PKEY); + ret->pkey = pkey; ret->data = NULL; if (pmeth->init) -- cgit v1.2.3