Мне нужно создавать сообщения S / MIME с помощью C# (как указано в 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, используют для этого коммерческие библиотеки с закрытым исходным кодом?





Я не использовал эту библиотеку S / MIME, но в моем приложении используется другая библиотека от того же поставщика, и она отлично работает:
http://www.chilkatsoft.com/mime-dotnet.asp
Их библиотека для подписей p7s является отдельной, что может быть проблемой в зависимости от вашего бюджета:
http://www.chilkatsoft.com/crypt-dotnet.asp
Как я уже сказал, мы используем визуальный веб-разработчик, который имеет довольно ограниченные возможности DLL. В частности, нет компиляции в библиотеки DLL, и я думаю, что он имеет очень ограниченную совместимость с внешними библиотеками DLL в целом, хотя я могу ошибаться. О, как я скучаю по визуальной студии!
Реализовать полную s / mime довольно сложно, так как это требует много дополнительной работы. Вы можете использовать Компоненты SMIME в SecureBlackbox для своей задачи.
Обновление: SecureBlackbox - это наш продукт. Он полностью поддерживает Silverlight и Windows Phone (включая Mango).
Взгляните на Rebex Secure Mail. Это очень стабильная библиотека, которую я использую уже много лет. Это 100% управляемый код, также доступен исходный код.
В CodeProject есть довольно хороший класс S / MIME.
http://www.codeproject.com/KB/security/CPI_NET_SecureMail.aspx
Я потратил много времени на поиски хорошей библиотеки S / MIME для .NET, но безуспешно. В итоге я создал свой собственный, под названием OpaqueMail.
Это открытый исходный код и полностью бесплатный. Он наследуется от класса 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("[email protected]", "Pass@word1");
smtpClient.EnableSsl = true;
// Create a new MailMessage class with lorem ipsum.
MailMessage message = new MailMessage("[email protected]", "[email protected]", "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, "[email protected]");
// Send the message.
await smtpClient.SendAsync(message);
Надеюсь это поможет.
Я написал свою собственную библиотеку MIME с поддержкой S / MIME под названием MimeKit, которая намного надежнее, чем что-либо, основанное на System.Net.Mail, которая ужасно сломана.
Он поддерживает необработанные 8-битные заголовки, групповые адреса rfc822, извлечение имен из комментариев rfc822 в заголовках адресов (To / Ccc / Bcc / и т. д.), Синтаксический анализ буферов сообщений в формате mbox (включая поддержку формата SunOS на основе Content-Length), и это на порядок быстрее, чем любой другой синтаксический анализатор MIME C#, потому что он основан на потоке байтов, а не на TextReader (именно так он поддерживает необработанные 8-битные заголовки намного лучше, чем любой другой синтаксический анализатор C#).
Я только начал использовать вашу библиотеку, и это потрясающе, спасибо! Однако я заметил одну вещь: пространство имен MimeKit.Cryptography, похоже, не существует на Android или iOS (пока?). Планируется ли поддержка S / MIME на Android и iOS? Я спрашиваю, потому что основной целью поиска библиотеки S / MIME было написание приложения для мобильных платформ. Спасибо!
Да, я просто еще не дошел до этого. Я постараюсь разобраться с этим в ближайшее время.
Просто прикрепил патч к MimeKit, чтобы построить всю поддержку S / MIME и PGP для iOS и Android :-)
Отличная библиотека и очень хорошо документирована - спасибо!
Даже если бы стоимость не была проблемой (что, я уверен, было бы), другой проблемой является то, как chilkatsoft предоставляет библиотеки. Готов поспорить, он просто предоставляет несколько DLL, которые вы можете с радостью использовать с Visual Studio? Мой босс слишком дешев, чтобы прыгнуть на vs.net, мы используем microsoft.com/express/vwd