繁体   English   中英

证书数据格式 .p7b 的格式错误的内容

[英]Malformed content in certificate data format .p7b

我正在尝试对 PDF 进行数字签名,但出现错误Malformed Content 当我使用类CmsSignedData并在构造函数中传递文件certificate.p7bFileStream时,就会发生这种情况。

这是发生这种情况的一段代码:

public void Sign()
        {
            CmsSignedData certificateStore = new CmsSignedData(CertificateChain);
            IX509Store x509Certs = certificateStore.GetCertificates("Collection");
            ArrayList certificateArray = new ArrayList(x509Certs.GetMatches(null));

            List<X509Certificate> certificates = new List<X509Certificate>();
            foreach (var certificate in certificateArray)
            {
                certificates.Add((X509Certificate)certificate);
            }

            PdfReader pdfReader = new PdfReader(SourcePlainPdf);

            StampingProperties stampingProperties = new StampingProperties();
            stampingProperties.UseAppendMode();

            PdfSigner pdfSigner = new PdfSigner(pdfReader, 
                new FileStream(DestinationSignedPdf, FileMode.OpenOrCreate), stampingProperties);

            pdfSigner.GetSignatureAppearance().SetPageNumber(1).SetReason(Reason).SetLocation(Location);
            pdfSigner.SetFieldName(SignatureFieldName);

            IExternalSignature pks = new ServerSignature(SourcePlainPdf, AuthenticationToken, 
                QscdServerBaseAddress, CertificateAlias, Seed, Secret, HashAlgorithmOID);
           
           
            pdfSigner.SignDetached(pks, certificates.ToArray(), null, null, null, 0, PdfSigner.CryptoStandard.CMS);
           
        } 

方法的第一行: CmsSignedData certificateStore = new CmsSignedData(CertificateChain); 是错误发生的地方。 我从网站下载了证书文件并将其存储在 C: 驱动器中。

我已经检查了另一个帖子的解决方案,但没有人直接谈到我的问题。 一篇非常广泛的帖子深入研究了密码学,但我什么也不懂。 我将 BouncyCastle 用于证书 API。

我怎么解决这个问题?

最后我解决了这个问题。 当我下载证书 .p7b 文件时,它给了我两个文件。 我流错了。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM