Это будет зависеть от типа используемой подписи, но если вы знаете, где заканчивается электронная почта и где начинается часть подписи электронной почты, тогда вы сможете проанализировать эту информацию, используя класс из .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