Как прочитать цепочку сертификатов Pkcs # 7 из файла / потока в C #? - PullRequest
5 голосов
/ 23 февраля 2009

У меня есть два сертификата, которые я сохранил на диск. Один - это сертификат с закрытым ключом, который я экспортировал как файл .pfx, другой - сертификат, который я сохранил, включая цепочку сертификатов в виде файла PKCS # 7 ("certchain.p7b").

В C # теперь я могу загрузить файл .pfx с

  var cert = new X509Certificate2(myPfxFileStream); 

(myPfxFileStream - это FileStream, открытый для чтения в файле .pfx), однако при попытке выполнить то же самое с сертификатом PKC # 7 происходит сбой в CryptoGraphicException «Der Indexwert ist ungültig», что означает «недопустимое значение индекса» ».

Я предполагаю, что мне нужно проанализировать PKCS # 7 по-другому (он содержит цепочку, а не один сертификат!), Но как?

(О, кстати: в настоящее время у меня нет паролей к этим сертификатам)

1 Ответ

8 голосов
/ 23 февраля 2009

Вы захотите использовать класс SignedCms в пространстве имен System.Security.Cryptography.Pkcs.

Эта запись блога покажет вам, как использовать класс:

http://blogs.msdn.com/shawnfa/archive/2006/02/27/539990.aspx

Обычно вы вызываете метод Decode, передавая байты, представляющие файл PKCS.

...