【问题标题】:How can I find out which certificate was used to sign a PKCS7 message?如何找出用于签署 PKCS7 消息的证书?
【发布时间】:2014-01-05 14:04:02
【问题描述】:

我正在使用 .NET 框架中的 System.Security.Cryptography.Pkcs.SignedCms 类来读取和验证签名数据。

为此,我有一个我在 CheckSignature 方法中传递的有效证书的列表。

这很好用,如果签名证书不包含在列表中,该方法将抛出异常。

但是,我想检索用于验证消息的确切证书。 CheckSignature 方法返回 void,SignedCms 上的 Certificates 属性在我的数据集中始终为 null

我不想暴力破解所有可能的证书,尤其是如果证书无效并且列表中可能有很多证书,该方法会抛出异常。

知道怎么做吗?

相关问题:有没有一种方法可以检查证书,如果没有找到有效的证书不会导致异常(我更喜欢布尔返回值)。

谢谢!

【问题讨论】:

    标签: c# .net cryptography certificate pkcs#7


    【解决方案1】:

    试试SignerInfos 属性,看看是否可以使用它返回的SignerInfo 对象提取证书。

    【讨论】:

    • 好的,我找到了!它包含在 SignerInfos 中,但有点复杂。您必须检查 SignerIdentifier 并将包含的“值”转换为适当的类型,在我的例子中是 X509IssuerSerial。此对象包含颁发者专有名称和证书的序列号,它们是唯一的,可用于查找。
    猜你喜欢
    • 1970-01-01
    • 2011-06-01
    • 1970-01-01
    • 2011-08-04
    • 1970-01-01
    • 2011-08-06
    • 1970-01-01
    • 2020-03-27
    • 1970-01-01
    相关资源
    最近更新 更多