Цифровая подпись в PowerPoint
Цифровой сертификат используется для создания паролем защищенной презентации PowerPoint, которая отмечена как созданная конкретной организацией или человеком. Цифровой сертификат можно получить, обратившись в уполномоченную организацию - удостоверяющий центр. После установки цифрового сертификата в систему его можно использовать для добавления цифровой подписи к презентации через Файл -> Информация -> Защитить презентацию:
Презентация может содержать более одной цифровой подписи. После добавления цифровой подписи к презентации особое сообщение появится в PowerPoint:
Для подписания презентации или проверки подлинности подписей в презентации Aspose.Slides API предоставляет интерфейс IDigitalSignature, интерфейс IDigitalSignatureCollection и метод IPresentation.getDigitalSignatures. В настоящее время цифровые подписи поддерживаются только для формата PPTX.
Добавить цифровую подпись из сертификата PFX
Пример кода ниже демонстрирует, как добавить цифровую подпись из сертификата PFX:
- Откройте файл PFX и передайте пароль PFX в объект DigitalSignature.
- Добавьте созданную подпись в объект презентации.
# Открытие файла презентации
$pres = new Presentation();
try {
# Создание объекта DigitalSignature с файлом PFX и паролем PFX
$signature = new DigitalSignature("testsignature1.pfx", "testpass1");
# Комментарий к новой цифровой подписи
$signature->setComments("Тест цифровой подписи Aspose.Slides.");
# Добавление цифровой подписи в презентацию
$pres->getDigitalSignatures()->add($signature);
# Сохранение презентации
$pres->save("SomePresentationSigned.pptx", SaveFormat::Pptx);
} finally {
$pres->dispose();
}
Теперь можно проверить, была ли презентация подписана цифровой подписью и не была ли изменена:
# Открытие презентации
$pres = new Presentation("SomePresentationSigned.pptx");
try {
if (java_values($pres->getDigitalSignatures()->size()) > 0) {
$allSignaturesAreValid = true;
echo("Подписи, использованные для подписания презентации: ");
# Проверка, все ли цифровые подписи действительны
foreach($pres->getDigitalSignatures() as $signature) {
echo($signature->getComments() . ", " . $signature->getSignTime()->toString() . " -- " . $signature->isValid() ? "ДЕЙСТВИТЕЛЬНО" : "НЕДЕЙСТВИТЕЛЬНО");
$allSignaturesAreValid &= $signature->isValid();
}
if ($allSignaturesAreValid) {
echo("Презентация подлинная, все подписи действительны.");
} else {
echo("Презентация была изменена после подписания.");
}
}
} finally {
if (!java_is_null($pres)) {
$pres->dispose();
}
}