是否有现有的库可实现创建S/MIME消息,特别是.p7s文件?
我已经拥有所有加密和签名元素需要放入此文件中,但我想创建.p7s文件,而不必手动编写自己的库并使用RFC文档进行辅助...
编辑: 我找到了另一个 商业S/MIME库,但仍无法满足我们的要求。 看起来我需要自己编写一个S/MIME库,这很遗憾。 所有需要S/MIME的.net用户都在使用商业、闭源的库吗?
编辑: 我找到了另一个 商业S/MIME库,但仍无法满足我们的要求。 看起来我需要自己编写一个S/MIME库,这很遗憾。 所有需要S/MIME的.net用户都在使用商业、闭源的库吗?
我已经编写了一个支持S/MIME的MIME库,叫做MimeKit,它比任何基于System.Net.Mail的东西都更加稳健,因为后者非常糟糕。
它支持原始8位头、rfc822组地址、从地址头(To/Ccc/Bcc等)的rfc822注释中提取名称、解析mbox格式的消息池(包括支持基于Content-Length的SunOS格式),并且它是比其他任何C# MIME解析器快一个数量级,因为它是基于字节流而不是TextReader(这也是它比其他任何C#解析器更好地支持原始8位头的原因)。
这是一款开源且完全免费的库。它继承自System.Net.Mail.SmtpClient类,因此移植现有代码非常简单。它还包括用于与POP3和IMAP通信的类。
请访问http://opaquemail.org/了解更多信息。
以下是发送S/MIME三层封装消息(数字签名、加密、再次数字签名)的示例:
// Instantiate a new SMTP connection to Gmail using TLS/SSL protection.
SmtpClient smtpClient = new SmtpClient("smtp.gmail.com", 587);
smtpClient.Credentials = new NetworkCredential("username@gmail.com", "Pass@word1");
smtpClient.EnableSsl = true;
// Create a new MailMessage class with lorem ipsum.
MailMessage message = new MailMessage("username@gmail.com", "user@example.com", "Example subject", "Lorem ipsum body.");
// Specify that the message should be signed, have its envelope encrypted, and then be signed again (triple-wrapped).
message.SmimeSigned = true;
message.SmimeEncryptedEnvelope = true;
message.SmimeTripleWrapped = true;
// Specify that the message should be timestamped.
message.SmimeSigningOptionFlags = SmimeSigningOptionFlags.SignTime;
// Load the signing certificate from the Local Machine store.
message.SmimeSigningCertificate = CertHelper.GetCertificateBySubjectName(StoreLocation.LocalMachine, "username@gmail.com");
// Send the message.
await smtpClient.SendAsync(message);
http://www.codeproject.com/KB/security/CPI_NET_SecureMail.aspx
要实现完整的 S/MIME 非常困难,需要大量额外的工作。您可以使用SecureBlackbox 中的 SMIME 组件来完成您的任务。
更新:SecureBlackbox 是我们的产品。它完全支持 Silverlight 和 Windows Phone(包括 Mango)。
我没有使用过这个 S/MIME 库,但我的应用程序使用了同一供应商的另一个库,它运行良好:
http://www.chilkatsoft.com/mime-dotnet.asp
他们用于进行p7s签名的库是独立的,这可能会根据您的预算成为一个问题: