2017-04-22 15 views

答えて

1

は、証明書を取得するためのコードです:

X509CertificateParser cp = new X509CertificateParser(); 

     //Get Sertifiacte 
     X509Certificate2 certClient = null; 
     X509Store st = new X509Store(StoreName.My, StoreLocation.CurrentUser); 
     st.Open(OpenFlags.MaxAllowed); 
     X509Certificate2Collection collection = X509Certificate2UI.SelectFromCollection(st.Certificates, 
      "Please choose certificate:", "", X509SelectionFlag.SingleSelection); 
     if (collection.Count > 0) 
     { 
      certClient = collection[0]; 
     } 
     st.Close(); 
     //Get Cert Chain 
     IList<X509Certificate> chain = new List<X509Certificate>(); 
     X509Chain x509Chain = new X509Chain(); 

     x509Chain.Build(certClient); 

     foreach (X509ChainElement x509ChainElement in x509Chain.ChainElements) 
     { 
      chain.Add(DotNetUtilities.FromX509Certificate(x509ChainElement.Certificate)); 
     } 

そして、ここでは私の署名のコードです:

PdfReader inputPdf = new PdfReader(fileInsert); 

       FileStream signedPdf = new FileStream(File_rename(fileInsert, "_signed"), FileMode.Create); 

       PdfStamper pdfStamper = PdfStamper.CreateSignature(inputPdf, signedPdf, '\0'); 

       IExternalSignature externalSignature = new X509Certificate2Signature(certClient, "SHA-1"); 

       PdfSignatureAppearance signatureAppearance = pdfStamper.SignatureAppearance; 

       //signatureAppearance.SignatureGraphic = Image.GetInstance(pathToSignatureImage); 
       //signatureAppearance.SetVisibleSignature(new iTextSharp.text.Rectangle(0, 00, 250, 150), inputPdf.NumberOfPages, "Signature"); 
       signatureAppearance.SignatureRenderingMode = PdfSignatureAppearance.RenderingMode.DESCRIPTION; 

       MakeSignature.SignDetached(signatureAppearance, externalSignature, chain, null, null, null, 0, 
        CryptoStandard.CMS); 
       inputPdf.Close(); 
       pdfStamper.Close(); 

fileinsertは、あなたが署名したいファイル名で、

File_rename(fileInsert, "_signed") 

は、 "noname.pdf"のような元のファイル名の名前を "noname_signed.pdf"に変更する方法です。

そして、使用ライブラリ:

using Org.BouncyCastle.Security; 
using Org.BouncyCastle.X509; 
using System.Security.Cryptography.X509Certificates; 
using X509Certificate = Org.BouncyCastle.X509.X509Certificate; 

私はそれは私がフォーラムを検索する見つけましたが、私はまだ時々それを使用するいくつかの例を使用して何年か前にコードを書いた、役立ちます願っています。

関連する問題