.net的S / MIME库?

我需要使用C#创建S / MIME消息(如RFC 2633,“S / MIME版本3消息规范”和RFC 3335中所述)。 我能找到的唯一一个S / MIME库是一个商业库( http://www.example-code.com/csharp/smime.asp ),这对我们没有好处。

是否有任何现有的库可以完成创建S / MIME消息,特别是.p7s文件?

我有所有加密和签名的元素需要进入这个文件,但我想创建.p7s文件,而无需借助RFC文档手动我自己的库…


编辑:我发现了另一个商业S / MIME库 ,它仍然不符合我们的要求。 它看起来越来越像我将不得不手动滚动一个S / MIME库,这很难过。 是.net中的每个人都需要使用商业,封闭源库来进行S / MIME吗?

我编写了自己的MIME库,支持名为MimeKit的 S / MIME,它比基于System.Net.Mail的任何东西都强大得多,而后者非常糟糕 。

它支持原始的8位头,rfc822组地址,从地址头中的rfc822注释中删除名称(To / Ccc / Bcc / etc),解析mbox格式的消息假脱机(包括对基于Content-Length的SunOS格式的支持),它是一个比其他任何C#MIME解析器快几个数量级,因为它是基于字节流而不是基于TextReader的(这也是它比任何其他C#解析器更好地支持原始8位头的方式)。

看看Rebex Secure Mail 。 这是我使用多年的非常稳定的库。 它是100%托管代码,源代码也可用。

我花了很多时间为.NET寻找一个好的S / MIME库,没有运气。 我最终创建了自己的,名为OpaqueMail。

它是开源的,完全免费的。 它inheritance自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); 

希望这可以帮助。

我没有使用过这个S / MIME库,但是我的应用程序使用了来自同一供应商的另一个库,它工作正常:

http://www.chilkatsoft.com/mime-dotnet.asp

他们执行p7s签名的库是独立的,这可能是一个问题,具体取决于您的预算:

http://www.chilkatsoft.com/crypt-dotnet.asp

实现完整的s / mime非常困难,因为它需要大量的额外工作。 您可以在SecureBlackbox中使用SMIME组件来完成任务。

更新:SecureBlackbox是我们的产品。 它完全支持Silverlight和Windows Phone(包括Mango)。