Получение публичного сертификата от почты, которая подписана и зашифрована - PullRequest
3 голосов
/ 14 ноября 2011

У меня есть вся почта в виде строки, которая зашифрована и подписана.

По умолчанию в Outlook Express, если у получателя нет открытого сертификата отправителя, тогда открытый сертификат извлекается из почты ихранится в диспетчере сертификатов.поэтому позже мы сможем ответить на это письмо, которое также будет зашифровано и подписано

Я хочу добиться той же функциональности, используя c #.

Как извлечь публичный сертификат из текстапочту и сохранить ее в диспетчере сертификатов?

1 Ответ

3 голосов
/ 07 декабря 2011

Это будет зависеть от типа используемой подписи, но если вы знаете, где заканчивается электронная почта и где начинается часть подписи электронной почты, тогда вы сможете проанализировать эту информацию, используя класс из .NET с именем System.Security.Cryptography.Pkcs.SignedCms.

Пример псевдокода о том, как это может выглядеть ... Я сделал пару предположений, которые мы можем обсудить дополнительно при необходимости.Ссылки на функции ожидают, что за ними что-то будет сделано.мы можем обсудить, что будет необходимо в этих методах, если потребуется, далее.

var rawEmailBytes = pseudo_GetRawEmail();  // function that gets the raw email
var signedCmsBytes = psuedo_GetSignedCmsData(rawEmailBytes)   // would pull out the signed package bytes from the email
var signedCms = new SignedCms();
signedCms.Decode(signedCmsBytes)

foreach (var certificate in signedCms.Certificates) {
   psuedo_StoreCertificate(certificate)   // store certificate using the cert manager.
}

Нет гарантии, что сертификат будет храниться в этой коллекции, так как необязательно, чтобы сертификат был включен в пакет подписи.Добавьте примечание, если хотите продолжить обсуждение.

Кроме того, если вы хотите увидеть RFC для этого типа подписи, вы можете прочитать по адресу URL http://www.ietf.org/rfc/rfc3852.txt. В частности, посмотрите на тип подписанных данных,начиная с раздела 5.1

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...