/// <summary>
        /// PDF imzalar.
        /// </summary>
        /// <param name="request"></param>
        /// <param name="PDFContent"></param>
        /// <returns></returns>
        public byte[] SignPDF(PdfRequestDTO request
                              , byte[] PDFContent
                              )
        {
            //if (PDFContent == null || request == null)
            //{
            //    return null;
            //}
            X509Certificate2   signingCertificate;
            IExternalSignature externalSignature;

            this.SelectSignature(request, out signingCertificate, out externalSignature);
            X509Certificate2[]            chain       = generateCertificateChain(signingCertificate);
            ICollection <X509Certificate> Bouncychain = chainToBouncyCastle(chain);

            ocsp = new OcspClientBouncyCastle();
            crl  = new ITextSharp.iTextSharp.text.pdf.security.CrlClientOnline(Bouncychain);
            PdfReader              pdfReader           = new PdfReader(PDFContent);
            MemoryStream           stream              = new MemoryStream();
            PdfStamper             pdfStamper          = PdfStamper.CreateSignature(pdfReader, stream, '\0', "", true);
            PdfSignatureAppearance signatureAppearance = pdfStamper.SignatureAppearance;

            crlList = new List <ICrlClient>();
            crlList.Add(crl);
            lock (lockSign)
            {
                ITextSharp.iTextSharp.text.pdf.security.MakeSignature.SignDetached(signatureAppearance, externalSignature, Bouncychain, crlList, ocsp, null, 0, CryptoStandard.CMS);
            }
            return(stream.ToArray());
        }
Esempio n. 2
0
 public Form1()
 {
     InitializeComponent();
     requestDTO                    = new PdfRequestDTO();
     bckWorker.DoWork             += bckWorker_doWork;
     bckWorker.RunWorkerCompleted += bckWorker_RunWorkerCompleted;
 }
Esempio n. 3
0
 public void SignPdf(PdfRequestDTO requestDTO)
 {
     try
     {
         var pdfContentWithSign = _pdfSigner.SignPDF(requestDTO, requestDTO.pdfContent);
         System.IO.File.WriteAllBytes("C:\\pdf_withDigital_Sign.pdf", pdfContentWithSign);
     }
     catch (Exception ex)
     {
         throw new Exception("Dosyanın imzalanması sırasında bir hata oluştu.");
     }
 }
 private void SelectSignature(
     PdfRequestDTO request,
     out X509Certificate2 CERTIFICATE,
     out IExternalSignature externalSignature)
 {
     try
     {
         SmartCardManager smartCardManager = SmartCardManager.getInstance();
         var smartCardCertificate          = smartCardManager.getSignatureCertificate(false, false);
         var signer = smartCardManager.getSigner(request.DonglePassword, smartCardCertificate);
         CERTIFICATE       = smartCardCertificate.asX509Certificate2();
         externalSignature = new SmartCardSignature(signer, CERTIFICATE, "SHA-256");
     }
     catch (Exception ex)
     {
         CERTIFICATE       = null;
         externalSignature = null;
         MessageBox.Show(ex.Message);
     }
 }