2013-12-17 45 views
0

我在.NET框架中使用System.Security.Cryptography.Pkcs.SignedCms類來讀取和驗證簽名數據。如何找出哪個證書用於簽署PKCS7消息?

爲此我有一個有效的證書列表,我通過了CheckSignature方法。

這很好用,如果簽名證書不包含在列表中,該方法會拋出異常。

但是我想檢索用於驗證消息的確切證書。 CheckSignature方法返回void,並且SignedCms上的Certificates屬性在我的數據集中始終爲null

我不想蠻橫強制所有可能的證書,特別是如果證書無效,並且列表中可能有很多證書,該方法會引發異常。

任何想法如何做到這一點?

相關問題:是否有一種方法來檢查證書,如果沒有找到有效證書(我寧願布爾返回值)不會導致異常。

謝謝!

回答

1

嘗試SignerInfos屬性,並查看是否可以使用由它返回的SignerInfo對象提取證書。

+0

好的,我找到了!它包含在SignerInfos中,但它有點複雜。您必須檢查SignerIdentifier並將包含的「Value」轉換爲適當的類型,在我的情況下是X509IssuerSerial。該對象不包含頒發者的專有名稱和證書的序列號,它們是唯一的,可用於執行查找。 – aKzenT