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



我目前正在使用 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, ''))
{
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中做到这一点吗?

PAdES

首先,您说您需要对 PADES 的支持,但没有提到您需要哪种 PAdES 配置文件。

PAdES 最初(2009/2010 年(被指定为 ETSI 技术规范(ETSI TS 102 778 第 1-6 部分(,带有配置文件

  • PAdES Basic - 基于 ISO 32000-1 的 PAdES-CMS 配置文件
  • PAdES Enhanced - PAdES-BES 和 PAdES-EPES Profile
  • 长期 - PAdES-LTV 配置文件
  • 用于 XML 内容的 PAdES - 嵌入在 中的 XML 文档的 XAdES 签名的配置文件 PDF 容器

同时(2016年(,它已更新为欧洲标准(ETSI EN 319 142部分1-2(,并带有配置文件

B-B
  • 、B-T、B-LT 和 B-LTA 水平的 PAdES 基线特征
  • PDF 格式的 CMS 数字签名配置文件
  • 扩展的 PAdES 签名配置文件,级别为 PAdES-E-BES、PAdES-E-E-EPES 和 PAdES-E-LTV
  • 用于 XAdES 签名的配置文件对 PDF 中的 XML 内容进行签名

(后三个是旧配置文件的重新基督教版本,但基线配置文件现在是焦点(。

iText 5.5.x

正如您发现的那样,iText 枚举CryptoStandard知道两个选项CMSCADES

首先,CADES不是用于生成任意 CAdES 签名,而是用于生成特殊分析的 CAdES 签名容器,并根据非 CMS 配置文件 PAdES 签名的要求将它们嵌入到 PDF 中。

关于你的问题,因此

我还需要对PADES的支持。可以在iTextSharp中做到这一点吗?

是的,iText 5.5.x 确实支持简单的 PAdES 配置文件。具体而言,您将对以下配置文件使用CryptoStandard值:

  • CryptoStandard.CMSPDF 格式的 CMS 数字签名配置文件;
  • CryptoStandard.CADESB-B和B-T级基线特征以及PAdES-E-BES和PAdES-E-EPE级别的扩展签名。

最新更新