S / MIME библиотеки для .net? - PullRequest
       19

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

8 голосов
/ 24 сентября 2008

Мне нужно создать сообщения 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 ...


EDIT: Я нашел еще одну коммерческую библиотеку S / MIME , которая по-прежнему не отвечает нашим требованиям. Все больше и больше похоже на то, что мне придется вручную свернуть библиотеку S / MIME, что печально. Все ли в .net, кому нужен S / MIME, используют коммерческие библиотеки с закрытым исходным кодом для этого?

Ответы [ 6 ]

10 голосов
/ 24 сентября 2013

Я написал свою собственную библиотеку MIME с поддержкой S / MIME под названием MimeKit , которая гораздо более надежна, чем любая другая, основанная на System.Net.Mail, которая ужасно сломана.

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

3 голосов
/ 15 октября 2009

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

2 голосов
/ 23 августа 2013

Я потратил много времени на поиски хорошей библиотеки 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("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);

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

2 голосов
/ 28 октября 2009

В CodeProject есть довольно хороший класс S / MIME.

http://www.codeproject.com/KB/security/CPI_NET_SecureMail.aspx

0 голосов
/ 20 декабря 2008

Довольно сложно реализовать полноценный s / mime, так как требует много дополнительной работы. Для своей задачи вы можете использовать SMIME компоненты в SecureBlackbox .

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

0 голосов
/ 24 сентября 2008

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

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

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

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

...