Цифровая подпись в PowerPoint
Цифровой сертификат используется для создания защищённой паролем презентации PowerPoint, отмеченной как созданная определенной организацией или лицом. Цифровой сертификат можно получить, обратившись в уполномоченную организацию - удостоверяющий центр. После установки цифрового сертификата в систему его можно использовать для добавления цифровой подписи к презентации через Файл -> Сведения -> Защитить презентацию:
Презентация может содержать более одной цифровой подписи. После добавления цифровой подписи в презентацию в PowerPoint появится специальное сообщение:
Чтобы подписать презентацию или проверить подлинность подписей презентации, Aspose.Slides API предоставляет IDigitalSignature интерфейс, IDigitalSignatureCollection интерфейс и IPresentation.DigitalSignatures метод. В настоящее время поддерживаются цифровые подписи только для формата PPTX.
Добавить цифровую подпись из сертификата PFX
Пример кода ниже демонстрирует, как добавить цифровую подпись из сертификата PFX:
- Откройте файл PFX и передайте пароль PFX в DigitalSignature объект.
- Добавьте созданную подпись к объекту презентации.
auto pres = System::MakeObject<Presentation>();
// Создайте объект DigitalSignature с файлом PFX и паролем PFX
auto signature = System::MakeObject<DigitalSignature>(u"testsignature1.pfx", u"testpass1");
// Комментарий к новой цифровой подписи
signature->set_Comments(u"Тест цифровой подписи Aspose.Slides.");
// Добавьте цифровую подпись к презентации
pres->get_DigitalSignatures()->Add(signature);
// Сохраните презентацию
pres->Save(u"SomePresentationSigned.pptx", SaveFormat::Pptx);
Теперь можно проверить, была ли презентация подписана цифровой подписью и не была ли изменена:
// Откройте презентацию
auto pres = System::MakeObject<Presentation>(u"SomePresentationSigned.pptx");
if (pres->get_DigitalSignatures()->get_Count() > 0)
{
bool allSignaturesAreValid = true;
Console::WriteLine(u"Подписи, использованные для подписания презентации: ");
// Проверьте, действительны ли все цифровые подписи
for (auto signature : pres->get_DigitalSignatures())
{
Console::WriteLine(signature->get_Certificate()->get_SubjectName()->get_Name()
+ u", "
+ signature->get_SignTime().ToString(u"yyyy-MM-dd HH:mm")
+ u" -- "
+ (signature->get_IsValid() ? System::String(u"ДЕЙСТВИТЕЛЬНО") : System::String(u"НЕДЕЙСТВИТЕЛЬНО")));
allSignaturesAreValid &= signature->get_IsValid();
}
if (allSignaturesAreValid)
{
Console::WriteLine(u"Презентация подлинная, все подписи действительные.");
}
else
{
Console::WriteLine(u"Презентация была изменена с момента подписания.");
}
}