C# 使用LTV进行iText和PDF签名不';t显示时间戳的OCSP和CRL
我是iText的新手。我想签署一份PDF文件并添加LTV。签名PDF很好,但当我想将LTV添加到PDF时,它不会显示时间戳证书的OCSP和CRL信息。 首先,我想描述一下我是如何做签名的。 -我的证书链:签名证书,签名证书根,时间戳证书,时间戳证书根。(我是不是忘了链上的东西?) 为了签署PDF,我使用了:C# 使用LTV进行iText和PDF签名不';t显示时间戳的OCSP和CRL,c#,pdf,itext,signing,C#,Pdf,Itext,Signing,我是iText的新手。我想签署一份PDF文件并添加LTV。签名PDF很好,但当我想将LTV添加到PDF时,它不会显示时间戳证书的OCSP和CRL信息。 首先,我想描述一下我是如何做签名的。 -我的证书链:签名证书,签名证书根,时间戳证书,时间戳证书根。(我是不是忘了链上的东西?) 为了签署PDF,我使用了: MakeSignature.SignDetached(signatureAppearance, externalSignature, chain, crlList, ocsp2, tsa1,
MakeSignature.SignDetached(signatureAppearance, externalSignature, chain, crlList, ocsp2, tsa1, 0, CryptoStandard.CMS);
之后,我将添加LTV作为签名和时间戳
PdfReader r = new PdfReader(this.Source);
FileStream fos = new FileStream(this.Output, FileMode.Create);
PdfStamper stp = PdfStamper.CreateSignature(r, fos, '\0', null, true);
LtvVerification v = stp.LtvVerification;
AcroFields fields = stp.AcroFields;
List<String> names = fields.GetSignatureNames();
String sigName = names[names.Count - 1];
PdfPKCS7 pkcs7 = fields.VerifySignature(sigName);
if (pkcs7.IsTsp)
v.AddVerification(sigName, this.ocspClient, this.crlClient, LtvVerification.CertificateOption.SIGNING_CERTIFICATE, LtvVerification.Level.OCSP_CRL, LtvVerification.CertificateInclusion.NO);
else
foreach (String name in names)
v.AddVerification(name, this.ocspClient, this.crlClient, LtvVerification.CertificateOption.WHOLE_CHAIN, LtvVerification.Level.OCSP_CRL, LtvVerification.CertificateInclusion.NO);
PdfSignatureAppearance sap = stp.SignatureAppearance;
LtvTimestamp.Timestamp(sap, this.tsaClient, null);
PdfReader r r=新的PdfReader(this.Source);
FileStream fos=新FileStream(this.Output,FileMode.Create);
PdfStamper stp=PdfStamper.CreateSignature(r,fos,'\0',null,true);
LTV验证v=stp.LTV验证;
AcroFields=stp.AcroFields;
列表名称=字段。GetSignatureNames();
字符串sigName=names[names.Count-1];
PdfPKCS7 pkcs7=字段。验证签名(sigName);
如果(pkcs7.IsTsp)
v、 AddVerification(sigName、this.ocspClient、this.crlClient、ltvverify.CertificateOption.SIGNING\u CERTIFICATE、ltvverify.Level.OCSP\u CRL、ltvverify.CertificateInclusion.NO);
其他的
foreach(名称中的字符串名称)
v、 AddVerification(名称,this.ocspClient,this.crlClient,LtvVerification.CertificateOption.WHOLE_CHAIN,LtvVerification.Level.OCSP_CRL,LtvVerification.CertificateInclusion.NO);
PDFSignaturePearance sap=stp.SignaturePearance;
LtvTimestamp.Timestamp(sap,this.tsaClient,null);
我执行了两次,一次用于签名,第二次用于时间戳。这是Adobe的结果:
正如您所看到的,对证书进行签名没有问题。我可以看到PDF中嵌入的OCSP信息。但当我控制时间戳证书时,我可以看到没有要显示的OCSP-CRL信息
第二张图片表示时间戳证书。
如何为时间戳证书嵌入OCSP和CRL
PDF链接:
多谢各位
签名PDF很好,但当我想将LTV添加到PDF时,它不会显示时间戳证书的OCSP和CRL信息
当我控制时间戳证书时,我可以看到没有要显示的OCSP-CRL信息
如何为时间戳证书嵌入OCSP和CRL
您的图像表明,it指的是Adobe Reader。而且,它不会向您显示OCSP和CRL信息,这使您认为它们没有嵌入到文档中
然而,这个结论是错误的。如果你仔细看这条信息
你会认识到它是这么说的
- 未执行吊销检查,因为
- 证书是一个信任锚点或一个以上的锚点,并且
- Adobe Reader从不检查此类证书的吊销,因为
- 它认为他们天生值得信赖