X-Git-Url: https://git.openssl.org/gitweb/?p=openssl.git;a=blobdiff_plain;f=crypto%2Fevp%2Fm_sigver.c;h=3d15a9fcbcb89c3f4bed2fde3ed7f4f6cea7be6c;hp=1948f234cab8325d9351d3b90baa8b02f7e01903;hb=a45694a3567ce8de754cffa7b450c22578ebdd6c;hpb=0996cff91fe9d6ed7c37830debdf585119dcc067 diff --git a/crypto/evp/m_sigver.c b/crypto/evp/m_sigver.c index 1948f234ca..3d15a9fcbc 100644 --- a/crypto/evp/m_sigver.c +++ b/crypto/evp/m_sigver.c @@ -39,7 +39,7 @@ static const char *canon_mdname(const char *mdname) static int do_sigver_init(EVP_MD_CTX *ctx, EVP_PKEY_CTX **pctx, const EVP_MD *type, const char *mdname, const char *props, ENGINE *e, EVP_PKEY *pkey, - int ver) + OPENSSL_CTX *libctx, int ver) { EVP_PKEY_CTX *locpctx = NULL; EVP_SIGNATURE *signature = NULL; @@ -59,8 +59,12 @@ static int do_sigver_init(EVP_MD_CTX *ctx, EVP_PKEY_CTX **pctx, ctx->provctx = NULL; } - if (ctx->pctx == NULL) - ctx->pctx = EVP_PKEY_CTX_new(pkey, e); + if (ctx->pctx == NULL) { + if (libctx != NULL) + ctx->pctx = EVP_PKEY_CTX_new_from_pkey(libctx, pkey, props); + else + ctx->pctx = EVP_PKEY_CTX_new(pkey, e); + } if (ctx->pctx == NULL) return 0; @@ -258,28 +262,30 @@ static int do_sigver_init(EVP_MD_CTX *ctx, EVP_PKEY_CTX **pctx, } int EVP_DigestSignInit_ex(EVP_MD_CTX *ctx, EVP_PKEY_CTX **pctx, - const char *mdname, const char *props, EVP_PKEY *pkey) + const char *mdname, const char *props, EVP_PKEY *pkey, + OPENSSL_CTX *libctx) { - return do_sigver_init(ctx, pctx, NULL, mdname, props, NULL, pkey, 0); + return do_sigver_init(ctx, pctx, NULL, mdname, props, NULL, pkey, libctx, + 0); } int EVP_DigestSignInit(EVP_MD_CTX *ctx, EVP_PKEY_CTX **pctx, const EVP_MD *type, ENGINE *e, EVP_PKEY *pkey) { - return do_sigver_init(ctx, pctx, type, NULL, NULL, e, pkey, 0); + return do_sigver_init(ctx, pctx, type, NULL, NULL, e, pkey, NULL, 0); } int EVP_DigestVerifyInit_ex(EVP_MD_CTX *ctx, EVP_PKEY_CTX **pctx, const char *mdname, const char *props, - EVP_PKEY *pkey) + EVP_PKEY *pkey, OPENSSL_CTX *libctx) { - return do_sigver_init(ctx, pctx, NULL, mdname, props, NULL, pkey, 1); + return do_sigver_init(ctx, pctx, NULL, mdname, props, NULL, pkey, libctx, 1); } int EVP_DigestVerifyInit(EVP_MD_CTX *ctx, EVP_PKEY_CTX **pctx, const EVP_MD *type, ENGINE *e, EVP_PKEY *pkey) { - return do_sigver_init(ctx, pctx, type, NULL, NULL, e, pkey, 1); + return do_sigver_init(ctx, pctx, type, NULL, NULL, e, pkey, NULL, 1); } #endif /* FIPS_MDOE */