0

我在用

SignedCms.CheckSignature(certColl, true)

(在 certColl 中只有一个证书)来验证 pkcs-7 消息的签名。我的问题是,我不想在签名者更新他的证书后更改我的服务器上的(公共部分)签名者证书:-(在签名者更新他的证书后,公钥、颁发者和主题保持不变!所以这个必须工作 - 至少在我看来,即使我不是加密极客 :-)

..但是,不幸的是,.NET-Framework 抛出了一个加密异常“找不到原始签名者”,就像堆栈跟踪所说的那样:

SignerInfo.CheckSignature(X509Certificate2Collection extraStore,布尔型 verifySignatureOnly)

这一定是因为签名者证书的序列号已更改,并且 SignerIdentifier 属性为只读且设置为 IssuerAndSerialNumber。

有谁知道如何解决这个问题?

或者我是否必须实现一个“手工”签名验证,例如:signedMessage.ComputeSignature(signer, false)?

提前感谢和愉快的编程,Krile

4

1 回答 1

0

对于所有对此问题感兴趣的人:

有人告诉我这是由于 PKCS #7 规范,该规范规定 SubjectKeyIdentifier 始终设置为 IssuerAndSerialNumber。

于 2009-12-15T13:27:19.053 回答