带有c sharp和itext的pdf的数字签名

时间:2017-03-03 16:24:43

标签: c# itext digital-signature

您好,你好我告诉你我的问题。在我的工作中,他们使用数字签名来验证pdf文件,然后将这些文件传递给那些申请的人(那些请求不属于公司的人),因此在pdf中必须使用签名者的数据进行签名。签名是使用adobe助手完成的,并使用安装在计算机上的数字签名令牌。那些必须签署的人每天签署约200 pdf。所以我正在用C sharp开发一个桌面应用程序,允许我一次签署所有的pdf,因为有了adobe,他们必须打开pdf,创建一个签名字段,放入令牌密钥,然后只显示签名,这根据当天乘以100或200。从我的研究中可以做到。到目前为止我所拥有的是一个按钮,它打开一个对话框,允许您选择要签名的所有pdf。然后打开Windows证书存储区以选择要签名的证书的另一个按钮。但我无法创建一个字段并插入签名,事先询问令牌的密钥。 ////使用下面的方法我打开证书库并选择一个签名

private void btnExplorar_Click(object sender, EventArgs e)
{
    X509Store store= new X509Store(StoreName.My,StoreLocation.CurrentUser);


    store.Open(OpenFlags.ReadOnly);

    X509Certificate2Collection collection = (X509Certificate2Collection)store.Certificates;
    X509Certificate2Collection fcollection = (X509Certificate2Collection)collection.Find(X509FindType.FindByTimeValid, DateTime.Now, false);

    X509Certificate2Collection scollection = X509Certificate2UI.SelectFromCollection(fcollection, "Lista de Certificados digitales instalados en su equipo", "Seleccion el certificado con el que desea firmar", X509SelectionFlag.SingleSelection);
    //  X509Certificate2 certificadoElegido = scollection[0];

    if (scollection.Count > 0)
    {

      certificadoElegido = scollection[0];//certificadoElegido is a  class variable

}

使用这种方法我滚动一个列表框,其中包含所有选定pdf的列表以进行签名,我尝试创建一个字段,但我不知道如何在pdf中创建该字段并进行签名。我当然需要在pdf中看到签名,以便申请人知道谁签了它

private void button1_Click(object sender, EventArgs e)
{
    if (cLBoxListadePdf.CheckedItems.Count!=0) {
        string pdfAFirmar;
        int i;
        for (i=0;i<=cLBoxListadePdf.CheckedItems.Count-1;i++) {
            pdfAFirmar = cLBoxListadePdf.CheckedItems[i].ToString();

            PdfReader pdf = new PdfReader(pdfAFirmar);
            PdfStamper stamper = PdfStamper.CreateSignature(pdf,new FileStream("C:\\Users\...", FileMode.Create), '\0');
            PdfSignatureAppearance sap = stamper.SignatureAppearance;
            sap.Reason = "";
            //sap.Location=100;
            stamper.Close();
        }
    }
}

欢迎任何关于如何完成这项工作的建议。 对不起我的英语我使用谷歌翻译。

0 个答案:

没有答案