Добавление цифровых подписей к презентациям в .NET
Цифровой сертификат используется для создания презентации PowerPoint, защищённой паролем, отмеченной как созданная определённой организацией или лицом. Цифровой сертификат можно получить, обратившись в уполномоченную организацию — центр сертификации. После установки цифрового сертификата в системе им можно добавить цифровую подпись к презентации через File -> Info -> Protect Presentation:
Презентация может содержать более одной цифровой подписи. После добавления цифровой подписи к презентации в PowerPoint появится специальное сообщение:
Для подписи презентации или проверки подлинности её подписей Aspose.Slides API предоставляет интерфейсы IDigitalSignature, IDigitalSignatureCollection и свойство IPresentation.DigitalSignatures. В настоящее время цифровые подписи поддерживаются только для формата PPTX.
Добавление цифровой подписи из сертификата PFX
- Откройте файл PFX и передайте пароль PFX объекту DigitalSignatureobject.
- Добавьте созданную подпись в объект презентации.
using (Presentation pres = new Presentation())
{
// Создать объект DigitalSignature с файлом PFX и паролем PFX
DigitalSignature signature = new DigitalSignature("testsignature1.pfx", @"testpass1");
// Комментарий новой цифровой подписи
signature.Comments = "Aspose.Slides digital signing test.";
// Добавить цифровую подпись к презентации
pres.DigitalSignatures.Add(signature);
// Сохранить презентацию
pres.Save("SomePresentationSigned.pptx", SaveFormat.Pptx);
}
Теперь можно проверить, была ли презентация подписана цифровой подписью и не была изменена:
// Открыть презентацию
using (Presentation pres = new Presentation("SomePresentationSigned.pptx"))
{
if (pres.DigitalSignatures.Count > 0)
{
bool allSignaturesAreValid = true;
Console.WriteLine("Signatures used to sign the presentation: ");
// Проверить, являются ли все цифровые подписи действительными
foreach (DigitalSignature signature in pres.DigitalSignatures)
{
Console.WriteLine(signature.Certificate.SubjectName.Name + ", "
+ signature.SignTime.ToString("yyyy-MM-dd HH:mm") + " -- " + (signature.IsValid ? "VALID" : "INVALID"));
allSignaturesAreValid &= signature.IsValid;
}
if (allSignaturesAreValid)
Console.WriteLine("Presentation is genuine, all signatures are valid.");
else
Console.WriteLine("Presentation has been modified since signing.");
}
}
Часто задаваемые вопросы
Можно ли удалить существующие подписи из файла?
Да. Коллекция цифровых подписей поддерживает удаление отдельных элементов и полную очистку; после сохранения файла в презентации не будет подписей.
Становится ли файл только для чтения после подписи?
Нет. Подпись сохраняет целостность и авторство, но не блокирует редактирование. Чтобы ограничить редактирование, комбинируйте её с “Read-only” or a password.
Будет ли подпись отображаться корректно в разных версиях PowerPoint?
Подпись создаётся для контейнера OOXML (PPTX). Современные версии PowerPoint, поддерживающие подписи OOXML, отображают их статус корректно.