Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- using System;
- using System.Security.Cryptography.X509Certificates;
- using System.IO.Packaging;
- #if PDF_SIGNATURE_ENABLED
- namespace Simple35.Pdf
- {
- using iTextSharp.text.pdf;
- using System.IO;
- using Org.BouncyCastle.X509;
- using System.Security.Cryptography.Pkcs;
- using System.Collections.Generic;
- /// <summary>
- /// Для сборки примера необходимо установить последнюю версию iTextSharp и определить переменную PDF_SIGNATURE_ENABLED
- /// </summary>
- public class Verify
- {
- [STAThread]
- public static int Main(string[] args)
- {
- // Разбираем аргументы
- if (args.Length < 1)
- {
- Console.WriteLine("Pdf.Verify <document>");
- return 1;
- }
- string document = args[0];
- // Открываем документ
- PdfReader reader = new PdfReader(document);
- // Получаем подписи из документа
- AcroFields af = reader.AcroFields;
- List<string> names = af.GetSignatureNames();
- foreach (string name in names)
- {
- string message = "Signature name: " + name;
- message += "\nSignature covers whole document: " + af.SignatureCoversWholeDocument(name);
- message += "\nDocument revision: " + af.GetRevision(name) + " of " + af.TotalRevisions;
- Console.WriteLine(message);
- // Проверяем подпись
- PdfPKCS7 pk = af.VerifySignature(name);
- DateTime cal = pk.SignDate;
- Org.BouncyCastle.X509.X509Certificate[] pkc = pk.Certificates;
- message = "Subject: " + PdfPKCS7.GetSubjectFields(pk.SigningCertificate).GetField("CN");
- message += "\nDocument modified: " + !pk.Verify();
- message += "\nDate: " + cal.ToShortDateString();
- // Проверим сертификат через CAPI
- X509Certificate2 cert = new X509Certificate2(pk.SigningCertificate.GetEncoded());
- var isCAPIValid = cert.Verify();
- message += "\nCAPI Validation: " + isCAPIValid.ToString();
- Console.WriteLine(message);
- }
- return 0;
- }
- }
- }
- #endif
Advertisement
Add Comment
Please, Sign In to add comment