带有续订证书的SignedCms.CheckSignature() - >新系列?

时间:2009-12-03 12:29:02

标签: certificate digital-signature x509certificate2 pkcs#7

我正在使用

SignedCms.CheckSignature(certColl,true)

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

..但是,不幸的是,.NET-Framework引发了一个加密异常“无法找到原始签名者”,就像stacktrace所说的那样:

SignerInfo.CheckSignature(X509Certificate2Collection extraStore,Boolean verifySignatureOnly)

这必须是因为签名者证书的序列号已更改且SignerIdentifier属性是readonly并设置为IssuerAndSerialNumber。

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

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

提前致谢并快乐编程, Krile

1 个答案:

答案 0 :(得分:0)

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

有人告诉我,这是由PKCS#7规范引起的,该规范声明SubjectKeyIdentifier始终设置为IssuerAndSerialNumber。