[openssl-users] EVP_MD_CTX and EVP_PKEY_CTX? How to init? How to free?
Matt Caswell
matt at openssl.org
Sat Apr 29 23:33:33 UTC 2017
On 28/04/17 20:29, Blumenthal, Uri - 0553 - MITLL wrote:
> I’m playing with RSA-PSS signatures, and stumbled upon a few problems. I
> tried the OpenSSL manual pages, but still coming short of complete
> understanding. :-)
>
>
>
> This is how I initialize the contexts (error handlers removed for brevity):
>
>
>
> ctx = EVP_PKEY_CTX_new(privkey, NULL);
Don't do this. Just set ctx to NULL.
>
> md_ctx = EVP_MD_CTX_create();
>
> const EVP_MD *md = EVP_sha256();
>
> rv = EVP_DigestInit_ex(md_ctx, md, NULL);
>
> rv = EVP_DigestSignInit(md_ctx, &ctx, md, NULL, privkey);
ctx gets "filled in" by the EVP_DigestSignInit call.
>
>
>
> First question: do I need EVP_DigestInit_ex() there?
No. It unnecessary.
>
>
>
> Second question: do I have to specify hash-function (EVP_MD*) twice?
> First when initializing EVP_MD_CTX, and second for EVP_DigestSignInit()?
>
No...don't call EVP_DigestInit_ex() at all.
>
>
> At the end I need to dispose of both ctx and md_ctx.
"ctx" is "owned" by md_ctx. Just free md_ctx and ctx also gets freed.
Matt
More information about the openssl-users
mailing list