Добавление цифровой подписи или цифровое подписание PDF в C#

Aspose.PDF для .NET поддерживает функцию цифровой подписи PDF-файлов с использованием класса SignatureField. Вы также можете сертифицировать PDF-файл с помощью PKCS12-сертификата. Что-то похожее на Добавление подписей и безопасности в Adobe Acrobat.

При подписании PDF-документа с использованием подписи вы фактически подтверждаете его содержимое «как есть». Следовательно, любые другие изменения, внесенные после этого, аннулируют подпись, и таким образом, вы будете знать, был ли документ изменен. В то время как сертификация документа сначала позволяет вам указать изменения, которые пользователь может внести в документ, не аннулируя сертификацию.

Другими словами, документ все еще будет считаться сохраняющим свою целостность, и получатель все еще может доверять документу. Для получения дополнительной информации, пожалуйста, посетите сертификацию и подписание PDF. В общем, сертификация документа может быть сравнима с подписанием кода исполняемого файла .NET.

Следующий фрагмент кода также работает с библиотекой Aspose.PDF.Drawing. Следующий фрагмент кода также работает с библиотекой Aspose.PDF.Drawing.

Функции подписи Aspose.PDF для .NET

Мы можем использовать следующие классы и методы для подписи PDF

Подпись PDF с использованием цифровых подписей

public static void SignDocument()
{
    string inFile = System.IO.Path.Combine(_dataDir,"DigitallySign.pdf");
    string outFile = System.IO.Path.Combine(_dataDir,"DigitallySign_out.pdf");
    using (Document document = new Document(inFile))
    {
        using (PdfFileSignature signature = new PdfFileSignature(document))
        {
            PKCS7 pkcs = new PKCS7(@"C:\Keys\test.pfx", "Pa$$w0rd2020"); // Используйте объекты PKCS7/PKCS7Detached
            signature.Sign(1, true, new System.Drawing.Rectangle(300, 100, 400, 200),pkcs);
            // Сохраните выходной PDF файл
            signature.Save(outFile);
        }
    }
}

Добавление временной метки к цифровой подписи

Как цифрово подписать PDF с временной меткой

Aspose.PDF для .NET поддерживает цифровую подпись PDF с использованием сервера временных меток или веб-сервиса.

Для реализации этого требования в пространстве имен Aspose.PDF был добавлен класс TimestampSettings. Пожалуйста, обратите внимание на следующий фрагмент кода, который получает временную метку и добавляет её в документ PDF:

public static void SignWithTimeStampServer()
{
    using (Document document = new Document(System.IO.Path.Combine(_dataDir,"SimpleResume.pdf")))
    {
        using (PdfFileSignature signature = new PdfFileSignature(document))
        {
            PKCS7 pkcs = new PKCS7(@"C:\Keys\test.pfx", "Start2020");
            TimestampSettings timestampSettings = new TimestampSettings("https://freetsa.org/tsr", string.Empty); // Имя пользователя/пароль можно опустить
            pkcs.TimestampSettings = timestampSettings;
            System.Drawing.Rectangle rect = new System.Drawing.Rectangle(100, 100, 200, 100);
            // Создайте любой из трёх типов подписей
            signature.Sign(1, "Причина подписи", "Контакт", "Местоположение", true, rect, pkcs);
            // Сохранить выходной файл PDF
            signature.Save(System.IO.Path.Combine(_dataDir, "DigitallySignWithTimeStamp_out.pdf"));
        }
    }
}