[英]How to show digital signature VALUE in signature appearance of PDF file with iTextSharp
在簽署文檔時是否可以在簽名外觀中附加數字簽名VALUE,因為我正在使用這部分代碼
PdfFilename = txtFile.Text + "\\" + (string)chkLista.Items[i];
DestPdfFilename = txtFile.Text + "\\" + (string)chkLista.Items[i] + "-signed.pdf";
Org.BouncyCastle.X509.X509CertificateParser cp = new Org.BouncyCastle.X509.X509CertificateParser();
Org.BouncyCastle.X509.X509Certificate[] chain = new Org.BouncyCastle.X509.X509Certificate[] { cp.ReadCertificate(cert.RawData) };
IExternalSignature externalSignature = new X509Certificate2Signature(cert, "SHA-256");
PdfReader pdfReader = new PdfReader(PdfFilename);
FileStream signedPdf = new FileStream(DestPdfFilename, FileMode.Create); //the output pdf file
PdfStamper pdfStamper = PdfStamper.CreateSignature(pdfReader, signedPdf, '\0');
PdfSignatureAppearance signatureAppearance = pdfStamper.SignatureAppearance;
signatureAppearance.SignatureRenderingMode = PdfSignatureAppearance.RenderingMode.DESCRIPTION;
signatureAppearance.SetVisibleSignature(new iTextSharp.text.Rectangle(436, 700, 564, 750), 1, "sig");
MakeSignature.SignDetached(signatureAppearance, externalSignature, chain, null, null, null, 0, CryptoStandard.CMS);
但在PDF中,它僅顯示僅填充數據的矩形,例如:數字簽名者:...和日期:...
除此之外,我也想在Base64中顯示數字簽名值!
如果我正確理解OP,則任務是顯示實際簽名值字節的base64表示形式,作為簽名字段的外觀。
這是不可能的。
原因是簽名字段的外觀是有符號字節范圍的一部分:
(在示例的第一部分或第三部分中的某個位置定義了外觀。)
因此, 在創建簽名值之前必須先知道外觀。 因此,該值不能在現場外觀中完全表示出來。
有關更多背景信息,請閱讀此答案 。
話雖這么說,您可能會嘗試通過向PDF添加JavaScript來作弊,這會在顯示時更改簽名字段的外觀。 但是,此方法有兩個缺點:
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.