Цифровая подпись в 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. Добавьте созданную подпись в объект презентации.
using (Presentation pres = new Presentation())
{
    // Создание объекта DigitalSignature с файлом PFX и паролем PFX 
    DigitalSignature signature = new DigitalSignature("testsignature1.pfx", @"testpass1");

    // Комментарий к новой цифровой подписи
    signature.Comments = "Тест цифровой подписи Aspose.Slides.";

    // Добавление цифровой подписи к презентации
    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("Подписи, используемые для подписания презентации: ");

        // Проверка, все ли цифровые подписи действительны
        foreach (DigitalSignature signature in pres.DigitalSignatures)
        {
            Console.WriteLine(signature.Certificate.SubjectName.Name + ", "
                    + signature.SignTime.ToString("yyyy-MM-dd HH:mm") + " -- " + (signature.IsValid ? "ДЕЙСТВИТЕЛЬНА" : "НЕДЕЙСТВИТЕЛЬНА"));
            allSignaturesAreValid &= signature.IsValid;
        }

        if (allSignaturesAreValid)
            Console.WriteLine("Презентация подлинная, все подписи действительны.");
        else
            Console.WriteLine("Презентация была изменена с момента подписания.");
    }
}