/// <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()); }
public Form1() { InitializeComponent(); requestDTO = new PdfRequestDTO(); bckWorker.DoWork += bckWorker_doWork; bckWorker.RunWorkerCompleted += bckWorker_RunWorkerCompleted; }
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); } }