我正在使用
SignedCms.CheckSignature(certColl,true)
(在certColl中只有一个证书)来验证pkcs-7消息的签名。我的问题是,在签名者续签证书后,我不想在我的服务器上更改(公共部分)签名者证书:-(签名者续签证书后公钥,发行人和主题保持不变!所以这个必须工作 - 至少在我看来,即使我不是一个加密的极客:-)
..但是,不幸的是,.NET-Framework引发了一个加密异常“无法找到原始签名者”,就像stacktrace所说的那样:
SignerInfo.CheckSignature(X509Certificate2Collection extraStore,Boolean verifySignatureOnly)
这必须是因为签名者证书的序列号已更改且SignerIdentifier属性是readonly并设置为IssuerAndSerialNumber。
有谁知道如何解决这个问题?
或者我是否必须实现一个“手工”签名验证,例如:signedMessage.ComputeSignature(签名者,假)?
提前致谢并快乐编程, Krile
答案 0 :(得分:0)
对于这个问题感兴趣的所有人:
有人告诉我,这是由PKCS#7规范引起的,该规范声明SubjectKeyIdentifier始终设置为IssuerAndSerialNumber。