I get the CryptographicException "The hash value is not correct." I tried verifyCms.CheckSignature(true); (same error) I tried to add in ContentInfo the whole mail (Sender , Subject , Body, HTML Sectione ...) (same error)
public static bool Verify(byte[] signature, X509Certificate2 certificate)
{
X开发者_运维技巧509Certificate2 cert=new X509Certificate2(@"D:\Work\Digital Signature\smime.p7s");
certificate = cert;
if(signature == null)
throw new ArgumentNullException("signature");
if(certificate == null)
throw new ArgumentNullException("certificate");
//the text from the body of the mail
string text = "FINAL TEST SIGNED";
//hash the text
// Methode 3 for Hashing
System.Security.Cryptography.SHA1 hash3 = System.Security.Cryptography.SHA1.Create();
System.Text.UnicodeEncoding encoder = new System.Text.UnicodeEncoding();
byte[] combined = encoder.GetBytes(text);
byte[] hash3byte = hash3.ComputeHash(combined);
//Adding the text from the email, to a contentInfo
ContentInfo content = new ContentInfo(hash3byte);
// decode the signature
SignedCms verifyCms = new SignedCms(content,true);
verifyCms.Decode(signature);
// verify it
try
{
verifyCms.CheckSignature(new X509Certificate2Collection(certificate), false);
return true;
}
catch(CryptographicException)
{
return false;
}
}
Where is the problem?
精彩评论