This is a discussion on Re: HMAC_Final()/tls1_P_hash() problem with PKCS#11 - Openssl ; Jan Pechanec wrote: > The problem is how digests work: > > OpenSSL: ctx init, dgst init/update/final, ctx cleanup > PKCS#11: dgst init/update/final > > where some memory is allocated in dgst init and freed in ctx cleanup > (not ...
Jan Pechanec wrote:
> The problem is how digests work:
>
> OpenSSL: ctx init, dgst init/update/final, ctx cleanup
> PKCS#11: dgst init/update/final
>
> where some memory is allocated in dgst init and freed in ctx cleanup
> (not dgst final) in OpenSSL, but allocated in dgst init and freed in dgst
> final in PKCS#11 tokens. So, if you don't call xyzFinal() it's fine wrt
> memory usage in OpenSSL but it's a problem in PKCS#11 app.
>
> it's usually not a problem because when there is digest init there
> is also digest final some time after that. However, not for HMAC
> computation.
This sounds almost exactly why I added the SHA1_Drop() function to the
"save/load SHA1 state" patch, discussed on this list a week ago.
(or SHA1_Abandon(), SHA1_Cancel(), whatever name you prefer for the
function)
Even though it's a no-op for the current SHA1 C implementation, it
creates a clean hook to deallocate any memory without having to do an
unnecessary Final() calculation.
The "save/load SHA1 state" patch is in limbo (nobody replied to my last
mails about it, regarding extending it to EVP).
Although coincidentally I emailed Dr. Henson about it earlier today.
Regards,
Nanno
__________________________________________________ ____________________
OpenSSL Project http://www.openssl.org
Development Mailing List openssl-dev@openssl.org
Automated List Manager majordomo@openssl.org