Добавление цифровых подписей к презентациям с помощью Python
Цифровой сертификат используется для создания презентации PowerPoint, защищённой паролем, отмеченной как созданная конкретной организацией или лицом. Цифровой сертификат можно получить, обратившись в уполномоченную организацию — центр сертификации. После установки цифрового сертификата в систему им можно подписать презентацию через Файл → Информация → Защитить презентацию:
Презентация может содержать более одной цифровой подписи. После добавления цифровой подписи в презентацию появляется специальное сообщение в PowerPoint:
Чтобы подписать презентацию или проверить подлинность её подписей, Aspose.Slides API предоставляет интерфейс IDigitalSignature , интерфейс IDigitalSignatureCollection и свойство IPresentation.DigitalSignatures . В настоящее время цифровые подписи поддерживаются только для формата PPTX.
Добавить цифровую подпись из сертификата PFX
Пример кода ниже демонстрирует, как добавить цифровую подпись из сертификата PFX:
- Откройте файл PFX и передайте пароль PFX объекту DigitalSignature .
- Добавьте созданную подпись к объекту презентации.
#[TODO:Exception] RuntimeError: Ошибка прокси(FileNotFoundException): Не удалось загрузить файл или сборку 'System.Security.Cryptography.Xml, Version=4.0.2.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51'. Файл не найден.
import aspose.slides as slides
with slides.Presentation() as pres:
# Создать объект DigitalSignature с файлом PFX и паролем PFX
signature = slides.DigitalSignature(path + "testsignature1.pfx", "testpass1")
# Добавить комментарий к новой цифровой подписи
signature.comments = "Aspose.Slides digital signing test."
# Добавить цифровую подпись к презентации
pres.digital_signatures.add(signature)
# Сохранить презентацию
pres.save("SomePresentationSigned.pptx", slides.export.SaveFormat.PPTX)
Теперь можно проверить, была ли презентация подписана цифровой подписью и не была изменена:
# Открыть презентацию
with slides.Presentation("SomePresentationSigned.pptx") as pres:
if len(pres.digital_signatures) > 0:
allSignaturesAreValid = True
print("Signatures used to sign the presentation: ")
# Проверить, являются ли все цифровые подписи действительными
for signature in pres.digital_signatures :
print(signature.certificate.subject_name.name + ", "
+ signature.sign_time.strftime("yyyy-MM-dd HH:mm") + " -- " + "VALID" if signature.is_valid else "INVALID")
allSignaturesAreValid = allSignaturesAreValid and signature.is_valid
if allSignaturesAreValid:
print("Presentation is genuine, all signatures are valid.")
else:
print("Presentation has been modified since signing.")
FAQ
Могу ли я удалить существующие подписи из файла?
Да. Коллекция цифровых подписей поддерживает удаление отдельных элементов и полную очистку ; после сохранения файла в презентации не будет подписей.
Становится ли файл «только для чтения» после подписи?
Нет. Подпись сохраняет целостность и авторство, но не блокирует редактирование. Чтобы ограничить редактирование, комбинируйте её с “Read-only” or a password .
Отображается ли подпись корректно в разных версиях PowerPoint?
Подпись создаётся для контейнера OOXML (PPTX). Современные версии PowerPoint, поддерживающие подписи OOXML, корректно отображают статус таких подписей.