在C#中签署电子邮件时出现“内部证书链错误”错误

时间:2011-01-25 15:40:02

标签: c# .net cryptography digital-signature

我正在尝试对某些内容进行数字签名,包括签名中的整个证书链(以便收件人可以毫无问题地验证签名)。我在调用 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();
}

0 个答案:

没有答案