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

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

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

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

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


person Naman Sinha    schedule 14.11.2011    source источник


Ответы (1)


Это будет зависеть от типа используемой подписи, но если вы знаете, где заканчивается электронное письмо и где начинается его подпись, то вы сможете проанализировать эту информацию с помощью класса из .NET с именем System.Security. Криптография.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 для этого типа подписи, вы можете прочитать его по адресу http://www.ietf.org/rfc/rfc3852.txt. В частности, обратите внимание на тип подписанных данных, начиная с раздела 5.1.

person Chris Evans    schedule 07.12.2011
comment
Нет проблем, он ответил на конкретный вопрос? Если да, не могли бы вы пометить вопрос как отвеченный? - person Chris Evans; 18.02.2012
comment
я успешно смог сохранить публичный сертификат так же, как вы упомянули. я задал еще один вопрос относительно получения сертификатов с центрального сервера или сервера объявлений в другом посте. не могли бы вы помочь мне с той же [ссылкой]stackoverflow.com/questions/9771459/ - person Naman Sinha; 19.03.2012