Библиотеки S / MIME для .net?

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

Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
9
0
9 716
6

Ответы 6

Я не использовал эту библиотеку S / MIME, но в моем приложении используется другая библиотека от того же поставщика, и она отлично работает:

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

Их библиотека для подписей p7s является отдельной, что может быть проблемой в зависимости от вашего бюджета:

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

Даже если бы стоимость не была проблемой (что, я уверен, было бы), другой проблемой является то, как chilkatsoft предоставляет библиотеки. Готов поспорить, он просто предоставляет несколько DLL, которые вы можете с радостью использовать с Visual Studio? Мой босс слишком дешев, чтобы прыгнуть на vs.net, мы используем microsoft.com/express/vwd

Gabriel 24.09.2008 18:52

Как я уже сказал, мы используем визуальный веб-разработчик, который имеет довольно ограниченные возможности DLL. В частности, нет компиляции в библиотеки DLL, и я думаю, что он имеет очень ограниченную совместимость с внешними библиотеками DLL в целом, хотя я могу ошибаться. О, как я скучаю по визуальной студии!

Gabriel 24.09.2008 18:53

Реализовать полную 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 было написание приложения для мобильных платформ. Спасибо!

user708641 11.11.2013 00:58

Да, я просто еще не дошел до этого. Я постараюсь разобраться с этим в ближайшее время.

jstedfast 11.11.2013 05:47

Просто прикрепил патч к MimeKit, чтобы построить всю поддержку S / MIME и PGP для iOS и Android :-)

jstedfast 17.11.2013 00:56

Отличная библиотека и очень хорошо документирована - спасибо!

Mark Whitaker 06.06.2017 18:17

Другие вопросы по теме