我目前正在评估iTextSharp(5.5.8)中包含pdf签名的业务案例。签名必须包括pades-epes签名策略标识符属性。我找不到包含此属性的文档和/或示例。所以我的问题是,iTextSharp是否能够提供这个属性,如果是,如何添加它。
我希望不会太晚,但我对iTextSharp源代码添加了一些更改,以支持PAdES-EPES签名。下面是我的代码示例:
SignaturePolicyInfo spi = new SignaturePolicyInfo();
spi.PolicyIdentifier = "2.16.724.1.3.1.1.2.1.9";
spi.PolicyHash = "G7roucf600+f03r/o0bAOQ6WAs0=";
spi.PolicyDigestAlgorithm = "SHA-1";
spi.PolicyUri = "https://sede.060.gob.es/politica_de_firma_anexo_1.pdf";
MakeSignature.SignDetached(signatureAppearance, externalSignature, chain, null, null, null, 0, CryptoStandard.CADES, spi);
您可以查看:https://github.com/zinkpad/itextsharp
我希望这对你有帮助。
不幸的是,您没有在代码中显示您被卡住的地方。
如果您正在使用MakeSignature.SignDetached
,恐怕不支持添加策略标识符。
但是您可以始终使用MakeSignature.SignExternalContainer
。这个助手允许您创建实际的签名容器,以便使用例如BouncyCastle从外部嵌入,这样您就可以包括任何您想要的属性,而iText(Sharp)则完成所有其他操作。