我目前正在使用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
允许我选择数字签名的标准,但是我看到的只有CADES
和CMS
,并且我还需要PADES的支持。是否可以在iTextSharp中执行此操作?
最初(2009/2010年)的PAdES被指定为具有轮廓的ETSI技术规范(ETSI TS 102 778第1-6部分)
PAdES Basic-基于ISO 32000-1的PAdES-CMS配置文件
PAdES在B-B,B-T,B-LT和B-LTA级别的基线特征
您发现iText枚举CryptoStandard
知道两个选项CMS
和CADES
。
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签名。