CALG_SSL3_SHAMD5 support for ClientAuthentication

viveque.kumar_at_gmail.com
Date: 10/24/05


Date: 24 Oct 2005 00:53:16 -0700

Hi,
We are trying to do client authentication using Smart cards on
CustomCSP.

I see the following taking place when the calls come in
> CPAcquireContext has PROV_RSA_FULL set
> CryptCreateHash has CALG_SSL3_SHAMD5 set as the algID

During the call to CPSignHash, the call finally goes down to the RSAKey
class::SignHash() where it fails with an NTE_BAD_ALGID as there is no
separate handling for CALG_SSL3_SHAMD5

In SignHash() function the following takes place on a piecemeal basis
for the different algorithms.

> A header DER value is added to the Hash buffer and it's size to the Hash size
> The Hash value is then sent to openssl for PKCS1_type1() padding
> The padded data is then sent to be signed by the private key of the container using PKI

Here, I am assuming that to support CALG_SSL3_SHAMD5 if I add another
case for the same will make the whole thing work.

How do I find out / generate the header DER value for CALG_SSL3_SHAMD5
algorithm?
Also, the padding should be type1 or type2?

Please help, I am very new to CSP and Hashing.

- Vivek