Hi,
I'm writing a module in C# to sign and verify digital signatures.
The method to verify has these parameters: the doc to verify, the signedHash and the X509 certificate of the signer; to verify, if I understod well, I've to decrypt the signedHash, calculate the hash of the doc and verify that the two hashes are the same... The problem is: how can I know the hash algorithm (I'm using RSA) used by the signer from some field of the X509 certificate?
Or I'm wrong in something?This is a piece of code:
{
PublicKey pk = this.cert.PublicKey;
RSACryptoServiceProvider rsa = pk.Key as RSACryptoServiceProvider;
RSAPKCS1SignatureDeformatter rsaDeformatter = new RSAPKCS1SignatureDeformatter(rsa);
byte[] hash = WhatAlgorithmToCalculateHash(documet);
return rsaDeformatter.VerifySignature(hash,signedHash);
}
In WhatAlgorithmToCalculateHash is the problem.
I thinked to find substring like MD5, SHA1 in some field of the certificate, but how can I know the length of the hash...
Replies
Know the answer? Post it — somebody with the same question will find it here.