如何在iTextSharp 5中实现PADES签名?

问题描述 投票:0回答:1

我目前正在使用iTextSharp 5将数字签名应用于PDF。我通过使用BouncyCastle的支持以分离模式应用签名,如下所示:

public void Sign(PDFDocument doc, SigningKey key)
{
    using (PdfReader reader = new PdfReader(doc.Content))
    using (MemoryStream memStream = new MemoryStream())
    using (PdfStamper stamper = PdfStamper.CreateSignature(reader, memStream, '\0'))
    {
        PdfSignatureAppearance signature = stamper.SignatureAppearance;

        IExternalSignature pks = new PrivateKeySignature(key.ToParameters(), DigestAlgorithms.SHA256);
        MakeSignature.SignDetached(signature, pks, key.CertChain, null, null, null, 0, CryptoStandard.CADES);

        doc.Content = memStream.ToArray();
    }
}

[我发现CryptoStandard允许我选择数字签名的标准,但是我看到的只有CADESCMS,并且我还需要PADES的支持。是否可以在iTextSharp中执行此操作?

c# pdf itext digital-signature
1个回答
0
投票
首先,您说您

需要对PADES的支持,但没有提及所需的PAdES配置文件。

最初(2009/2010年)的PAdES被指定为具有轮廓的ETSI技术规范(ETSI TS 102 778第1-6部分)

PAdES Basic-基于ISO 32000-1的PAdES-CMS配置文件

    PAdES增强-PAdES-BES和PAdES-EPES配置文件
  • 长期-PAdES-LTV个人资料
  • 用于XML内容的PAdES-嵌入在其中的XML文档的XAdES签名的配置文件PDF容器
  • 同时(2016年),它已作为具有配置文件的欧洲标准(ETSI EN 319 142第1-2部分)进行更新
  • PAdES在B-B,B-T,B-LT和B-LTA级别的基线特征

    • CMS CMS数字签名的配置文件
    • 扩展了PAdES-E-BES,PAdES-E-EPES和PAdES-E-LTV级别的PAdES签名配置文件
    • 用于XPDF签名XML内容的XAdES签名的配置文件
  • ((后三个是旧概要的重新命名版本,但现在是基准概要中的焦点。)>
  • iText 5.5.x

    您发现iText枚举CryptoStandard知道两个选项CMSCADES

    首先,CADES

    not

    ,用于生成任意的CAdES签名,但用于生成经过特殊配置的CAdES签名容器,并将其嵌入到PDF中,这是非CMS概要文件PAdES签名所必需的。
  • 因此,关于您的问题

    我还需要对PADES的支持。是否可以在iTextSharp中执行此操作?

    是的,iText 5.5.x确实支持简单的PAdES配置文件。特别是,您将CryptoStandard值用于以下配置文件:

    CryptoStandard.CMS用于CMS中的CMS数字签名的配置文件;

      CryptoStandard.CADES用于B-B和B-T级别的基线签名,以及扩展的PAdES-E-BES和PAdES-E-EPES签名。
    © www.soinside.com 2019 - 2024. All rights reserved.