我正在尝试对某些内容进行数字签名,包括签名中的整个证书链(以便收件人可以毫无问题地验证签名)。我在调用 ComputeSignature()方法时收到以下错误:“发生了内部证书链错误”。
根CA和中间CA证书都安装在我的计算机中。我正在尝试使用Verisign电子邮件证书对内容进行签名。
中级CA 证书是:VeriSign Class 1个人订户CA-G3
根CA 证书是:VeriSign Class 1公共主要证书颁发机构 - G3
这是我正在使用的代码:
public static byte[] GetSignature(
string message,
X509Certificate2 signingCertificate)
{
byte[] messageBytes = Encoding.ASCII.GetBytes(message);
SignedCms signedCms = new SignedCms(new ContentInfo(messageBytes), true);
CmsSigner cmsSigner = new CmsSigner(SubjectIdentifierType.IssuerAndSerialNumber, signingCertificate);
cmsSigner.IncludeOption = X509IncludeOption.WholeChain;
Pkcs9SigningTime signingTime = new Pkcs9SigningTime();
cmsSigner.SignedAttributes.Add(signingTime);
signedCms.ComputeSignature(cmsSigner, false);
return signedCms.Encode();
}