我正在开发一个更大的应用程序,它通过 POP3、IMAP 或通过从 .msg 文件导入(从 Outlook 导出或从 Outlook 拖过来)接收电子邮件。
最近我收到一封带有附件“smime.p7m”的电子邮件。经过进一步检查,它原来是一个 MIME 消息
内容类型:多部分/签名;协议="应用程序/x-pkcs7-签名";
在其他部分中,它包含一个部分
内容类型:application/x-pkcs7-signature;name="smime.p7s" 内容传输编码:base64 内容处置:附件;文件名="smime.p7s"
我尝试使用OpenPop
MIME 消息解析器验证此签名并SignedCms
检查签名。我的尝试如下所示:
var datapart = OpenPop.MessagePart[...];
var part3 = OpenPop.MessagePart[3]; // the signature
var ci = new ContentInfo(datapart);
var sCMS = new SignedCms(ci, detached: true);
sCMS.Decode(part3.Body);
sCMS.CheckHash();
sCMS.CheckSignature(verifySignatureOnly:true);
但无论我用什么,datapart
我总是得到
System.Security.Cryptography.CryptographicException 哈希值不正确。
如何验证签名?
有更好的方法吗?