예제 #1
0
        static void Verify()
        {
            String   digestAlgorithm     = "";
            String   encryptionAlgorithm = "";
            DateTime signDate;
            bool     verifyTimeStamp = false;

            Org.BouncyCastle.X509.X509Certificate signCert;
            bool revokeStatus = false;
            bool isTSP        = false;

            PdfDocument pdfDocument = new PdfDocument(new PdfReader("c:\\temp\\valid signed contract.pdf"));

            // Checks that signature is genuine and the document was not modified.
            Boolean genuineAndWasNotModified = false;

            String        signatureFieldName = "Signature1";
            SignatureUtil signatureUtil      = new SignatureUtil(pdfDocument);

            try
            {
                PdfPKCS7 signature1 = signatureUtil.ReadSignatureData(signatureFieldName);
                if (signature1 != null)
                {
                    genuineAndWasNotModified = signature1.VerifySignatureIntegrityAndAuthenticity();

                    digestAlgorithm     = signature1.GetDigestAlgorithm();
                    encryptionAlgorithm = signature1.GetEncryptionAlgorithm();
                    signDate            = signature1.GetTimeStampDate();
                    verifyTimeStamp     = signature1.VerifyTimestampImprint();
                    signDate            = signature1.GetSignDate();
                    signCert            = signature1.GetSigningCertificate();
                    isTSP        = signature1.IsTsp();
                    revokeStatus = signature1.IsRevocationValid();
                }
            }
            catch (iText.Signatures.VerificationException issue)
            {
                issue.
            }
            catch (Exception ignored)
            {
                // ignoring exceptions,
                // we are only interested in signatures that are passing the check successfully
            }

            pdfDocument.Close();
        }