Цифровая подпись в PowerPoint

Цифровой сертификат используется для создания презентации PowerPoint с защищенным паролем, помеченной как созданная определенной организацией или лицом. Цифровой сертификат можно получить, обратившись в уполномоченную организацию – удостоверяющий центр. После установки цифрового сертификата в систему его можно использовать для добавления цифровой подписи к презентации через Файл -> Информация -> Защитить презентацию:

todo:image_alt_text

Презентация может содержать более одной цифровой подписи. После добавления цифровой подписи к презентации в PowerPoint появится специальное сообщение:

todo:image_alt_text

Чтобы подписать презентацию или проверить подлинность подписей в презентации, Aspose.Slides API предоставляет интерфейсы IDigitalSignature и IDigitalSignatureCollection и свойство IPresentation.DigitalSignatures. В настоящее время цифровые подписи поддерживаются только для формата PPTX.

Добавить цифровую подпись из сертификата PFX

Пример кода ниже демонстрирует, как добавить цифровую подпись из сертификата PFX:

  1. Откройте файл PFX и передайте пароль PFX объекту DigitalSignature.
  2. Добавьте созданную подпись к объекту презентации.

#[TODO:Исключение] 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."

    # Добавить цифровую подпись к презентации
    pres.digital_signatures.add(signature)

    # сохранить презентацию
    pres.save("НекотораяПодписаннаяПрезентация.pptx", slides.export.SaveFormat.PPTX)

Теперь можно проверить, была ли презентация цифровой подписью и не была ли она изменена:

# Открыть презентацию
with slides.Presentation("НекотораяПодписаннаяПрезентация.pptx") as pres:
    if len(pres.digital_signatures) > 0:
        всеПодписиДействительны = True

        print("Подписи, использованные для подписания презентации: ")
        # Проверить, действительны ли все цифровые подписи
        for signature in pres.digital_signatures :
            print(signature.certificate.subject_name.name + ", "
                    + signature.sign_time.strftime("yyyy-MM-dd HH:mm") + " -- " + "ДЕЙСТВИТЕЛЬНА" if signature.is_valid else "НЕДЕЙСТВИТЕЛЬНА")
            всеПодписиДействительны = всеПодписиДействительны and signature.is_valid
        

        if всеПодписиДействительны:
            print("Презентация подлинная, все подписи действительны.")
        else:
            print("Презентация была изменена с момента подписания.")