private void AdicionarLtv(string pdfPrimeiraAssinatura, SingInfo singInfo) { var inicioCarimbo = DateTime.Now; var stamping = new StampingProperties(); stamping.UseAppendMode(); PdfDocument pdfDoc = new PdfDocument( new PdfReader(pdfPrimeiraAssinatura), new PdfWriter(singInfo.TargetPdf)); LtvVerification v = new LtvVerification(pdfDoc); SignatureUtil signatureUtil = new SignatureUtil(pdfDoc); var names = signatureUtil.GetSignatureNames(); var sigName = names[names.Count - 1]; var pkcs7 = signatureUtil.VerifySignature(sigName); if (pkcs7.IsTsp()) { v.AddVerification( sigName, this.ocspClient, new CrlClientOnline(this.cadeiaTempo.ToArray()), LtvVerification.CertificateOption.SIGNING_CERTIFICATE, LtvVerification.Level.OCSP_CRL, LtvVerification.CertificateInclusion.YES); } else { foreach (var name in names) { v.AddVerification( name, this.ocspClient, new CrlClientOnline(this.cadeiaTempo.ToArray()), LtvVerification.CertificateOption.WHOLE_CHAIN, LtvVerification.Level.OCSP_CRL, LtvVerification.CertificateInclusion.NO); } } pdfDoc.Close(); Console.WriteLine("Aplicando timestamp........"); PdfReader r = new PdfReader(pdfPrimeiraAssinatura); PdfSigner pdfSigner = new PdfSigner(r, new FileStream(singInfo.TargetPdf, FileMode.Create), stamping); pdfSigner.Timestamp(this.tsaClient, null); var fimCarimbo = DateTime.Now; var tempoCarimbo = fimCarimbo.Subtract(inicioCarimbo); Console.WriteLine("Tempo Carimbo: {0}ms", tempoCarimbo.TotalMilliseconds); }
/// <exception cref="Org.BouncyCastle.Security.GeneralSecurityException"/> /// <exception cref="System.IO.IOException"/> internal static void BasicCheckSignedDoc(String filePath, String signatureName) { PdfDocument outDocument = new PdfDocument(new PdfReader(filePath)); SignatureUtil sigUtil = new SignatureUtil(outDocument); PdfPKCS7 pdfPKCS7 = sigUtil.VerifySignature(signatureName); NUnit.Framework.Assert.IsTrue(pdfPKCS7.Verify()); outDocument.Close(); }