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); 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); First question: do I need EVP_DigestInit_ex() there? Second question: do I have to specify hash-function (EVP_MD*) twice? First when initializing EVP_MD_CTX, and second for EVP_DigestSignInit()? At the end I need to dispose of both ctx and md_ctx. That leads to my third question/problem. The code I tried (based on what the man page says: to avoid memory leak, I need to do EVP_MD_CTX_destroy(md_ctx) crashes with SIGV: EVP_MD_CTX_destroy(md_ctx); // this succeeds EVP_PKEY_CTX_free(ctx); // but here the code crashes Same happens when I reverse the above order: EVP_PKEY_CTX_free(ctx); // this succeeds EVP_MD_CTX_destroy(md_ctx); // but then this one causes crash So what’s the correct way of freeing both of them? Or is it that because they’re sort of “bound together” by EVP_DigestSignInit(md_ctx, &ctx, md, NULL, privkey); freeing one frees the other? Thanks! — Regards, Uri |
Attachment:
smime.p7s
Description: S/MIME cryptographic signature
-- openssl-users mailing list To unsubscribe: https://mta.openssl.org/mailman/listinfo/openssl-users