Цифровая подпись в PowerPoint
Цифровой сертификат используется для создания защищенной паролем презентации PowerPoint, помеченной как созданная определенной организацией или человеком. Цифровой сертификат можно получить, обратившись в уполномоченную организацию - удостоверяющий центр. После установки цифрового сертификата в систему его можно использовать для добавления цифровой подписи к презентации через Файл -> Сведения -> Защитить презентацию:
Презентация может содержать более одной цифровой подписи. После добавления цифровой подписи к презентации в PowerPoint появится специальное сообщение:
Для подписания презентации или проверки подлинности подписей в презентации Aspose.Slides API предоставляет IDigitalSignature интерфейс, IDigitalSignatureCollection интерфейс и IPresentation.DigitalSignatures свойство. На данный момент цифровые подписи поддерживаются только для формата PPTX.
Добавить цифровую подпись из сертификата PFX
Пример кода ниже демонстрирует, как добавить цифровую подпись из сертификата PFX:
- Откройте файл PFX и передайте пароль PFX в DigitalSignature объект.
- Добавьте созданную подпись в объект презентации.
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("Презентация была изменена с момента подписания.");
}
}