在C#中,当由Itextsharp库签名时,为什么签名可视化未在pdf中显示签名人名称?

时间:2019-05-07 06:31:15

标签: c# itext digital-signature x509certificate pkcs#7

这是在签署文档之前创建签名外观的代码。

PdfStamper stamper = PdfStamper.CreateSignature(reader, os, '\0');
// Creating the appearance
PdfSignatureAppearance appearance = stamper.SignatureAppearance;
appearance.Reason = "Lorem apsum";
appearance.Contact = "";
appearance.Location = "";
appearance.SignatureRenderingMode = PdfSignatureAppearance.RenderingMode.DESCRIPTION;
appearance.CertificationLevel = PdfSignatureAppearance.NOT_CERTIFIED;
appearance.SetVisibleSignature(new iTextSharp.text.Rectangle(10, 10, 149, 69), reader.NumberOfPages, "Page1_Loc_5");
//Creating the appearance

“联系人”属性为空,我想用签名者的姓名填充

我正在从userX509Certificate获取签名者的名字。

string responseXML = System.IO.File.ReadAllText(Server.MapPath("~/ResponseSignatureXML.txt"));
XmlDocument xmlDoc = new XmlDocument();
xmlDoc.LoadXml(responseXML);
XmlElement EsignResp = xmlDoc.DocumentElement;
XmlNodeList nodeList = xmlDoc.GetElementsByTagName("UserX509Certificate");
Byte[] Certificate = Encoding.UTF8.GetBytes(nodeList[0].FirstChild.InnerText);

X509Certificate cert = new X509Certificate(Certificate);
string CertificateIssuedTo = cert.GetName();

@注意:在准备签名外观时,此签名者名称不可用。

准备具有外观的文件后。计算该文件(即src文件)的哈希值并调用外部服务,作为响应,我得到了xmlsiganture,我曾将其用于在文档上放置签名。

在放置签名之前,如何在src文件中附加/更改签名可视化?

将签名放置在文档上的代码。(带有pkcs7签名的签名响应)

XmlNodeList nodeList = xmlDoc.GetElementsByTagName("Signatures");
string signature = nodeList[0].FirstChild.InnerText;
using (PdfReader reader = new PdfReader(src))
{
    using (FileStream os = new FileStream(dest, FileMode.Create))
    {
        byte[] encodedSignature = Convert.FromBase64String(signature);
        IExternalSignatureContainer external = new MyExternalSignatureContainer(encodedSignature);
        MakeSignature.SignDeferred(reader, "Page1_Loc_5", os, external);
    }
}

此处的数字签名者显示空白而不是签名者姓名。

enter image description here

以下是digital signature所引用的文档截图。 C# Code如何显示由布鲁诺·斯派克曼(Bruno Spiceman)签名的 Digitaly 作为签名者的姓名 enter image description here

0 个答案:

没有答案