Вопрос по encryption, mime, c# – S / MIME библиотеки для .net?

8

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

Ваш Ответ

6   ответов
10

MimeKit который гораздо более надежен, чем что-либо основанное на System.Net.Mail, который ужасно сломан.

Он поддерживает необработанные 8-битные заголовки, групповые адреса rfc822, извлечение имен из комментариев rfc822 в заголовках адресов (To / Ccc / Bcc / etc), синтаксический анализ катушек сообщений в формате mbox (включая поддержку формата SunOS на основе Content-Length) и его 'на порядок быстрее, чем любой другой C # MIME-парсер, потому что он основан на байтовом потоке, а не на TextReader (что также позволяет поддерживать необработанные 8-битные заголовки намного лучше, чем любой другой C # -парсер).

Я только начал использовать вашу библиотеку, и этопотрясающе, спасибо! Однако я заметил, что пространство имен MimeKit.Cryptography некажется, существует на Android или iOS (пока?). Планируется ли поддержка S / MIME на Android и iOS? Я спрашиваю, потому что основной целью поиска библиотеки S / MIME было написание приложения для мобильных платформ. Спасибо! user708641
Отличная библиотека и действительно хорошо документировано тоже - спасибо! Mark Whitaker
Только что выпустил патч для MimeKit, чтобы собрать все S / MIME и PGP для iOS и Android :-) jstedfast
Да я просто непока не дошел до этого. Я'Я постараюсь позаботиться об этом в ближайшее время. jstedfast
3

Rebex Secure Mail, Это очень стабильная библиотека, которой я пользуюсь уже много лет. Это's 100% управляемый код и исходный код также доступны.

2

T, но не повезло. Я закончил тем, что создал свой собственный, под названием 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]", "[email protected]");
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);

Надеюсь это поможет.

0

Довольно сложно реализовать полный S / MIME, поскольку это требует много дополнительной работы. Ты можешь использоватьSMIME компоненты в SecureBlackbox для вашей задачи.

Обновление: SecureBlackbox - наш продукт. Он полностью поддерживает Silverlight и Windows Phone (включая Mango).

0

но мое приложение использует другую библиотеку того же производителя, и она работает нормально:

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

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

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

Даже если стоимость не былаэто проблема (которую яя уверен, что так и будет), другая проблема заключается в том, как chilkatsoft предоставляет библиотеки. Я'Готов поспорить, он просто предоставляет некоторые библиотеки, которые вы можете с радостью использовать в Visual Studio? Мой босс слишком дешев, чтобы прыгнуть на vs.net, мы используемmicrosoft.com/express/vwd Gabriel
Как я уже сказал, мы используем визуальный веб-разработчик, который имеет довольно ограниченные возможности DLL. В частности, нет компиляции в DLL, и я думаю, что он имеет очень ограниченную совместимость с внешними DLL в целом, хотя я могу ошибаться. О, как я скучаю по визуальной студии! Gabriel
2

Похожие вопросы