Добавление цифровой подписи или цифровое подписание PDF в C#
Aspose.PDF для .NET поддерживает функцию цифровой подписи PDF-файлов с использованием класса SignatureField. Вы также можете сертифицировать PDF-файл с помощью PKCS12-сертификата. Что-то похожее на Добавление подписей и безопасности в Adobe Acrobat.
При подписании PDF-документа с использованием подписи вы фактически подтверждаете его содержимое «как есть». Следовательно, любые другие изменения, внесенные после этого, аннулируют подпись, и таким образом, вы будете знать, был ли документ изменен. В то время как сертификация документа сначала позволяет вам указать изменения, которые пользователь может внести в документ, не аннулируя сертификацию.
Другими словами, документ все еще будет считаться сохраняющим свою целостность, и получатель все еще может доверять документу. Для получения дополнительной информации, пожалуйста, посетите сертификацию и подписание PDF. В общем, сертификация документа может быть сравнима с подписанием кода исполняемого файла .NET.
Следующий фрагмент кода также работает с библиотекой Aspose.PDF.Drawing. Следующий фрагмент кода также работает с библиотекой Aspose.PDF.Drawing.
Функции подписи Aspose.PDF для .NET
Мы можем использовать следующие классы и методы для подписи PDF
- Класс DocMDPSignature
- Перечисление DocMDPAccessPermissions
- Свойство IsCertified в классе PdfFileSignature
Подпись 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"));
}
}
}