Добавить цифровые подписи к презентациям в Java
Цифровой сертификат используется для создания защищённой паролем презентации PowerPoint, отмеченной как созданная определённой организацией или лицом. Цифровой сертификат можно получить, обратившись в уполномоченную организацию — центр сертификации. После установки цифрового сертификата в систему им можно добавить цифровую подпись к презентации через Файл → Сведения → Защитить презентацию:
Презентация может содержать более одной цифровой подписи. После добавления цифровой подписи к презентации в PowerPoint появится специальное сообщение:
Для подписи презентации или проверки подлинности её подписей Aspose.Slides API предоставляет интерфейс IDigitalSignature, интерфейс IDigitalSignatureCollection и метод IPresentation.getDigitalSignatures. В настоящее время цифровые подписи поддерживаются только для формата PPTX.
Добавление цифровой подписи из сертификата PFX
Приведённый ниже образец кода демонстрирует, как добавить цифровую подпись из сертификата PFX:
- Откройте файл PFX и передайте пароль PFX объекту DigitalSignature.
- Добавьте созданную подпись к объекту презентации.
// Открытие файла презентации
Presentation pres = new Presentation();
try {
// Создание объекта DigitalSignature с PFX-файлом и паролем PFX
DigitalSignature signature = new DigitalSignature("testsignature1.pfx", "testpass1");
// Комментарий к новой цифровой подписи
signature.setComments("Aspose.Slides digital signing test.");
// Добавление цифровой подписи к презентации
pres.getDigitalSignatures().add(signature);
// Сохранение презентации
pres.save("SomePresentationSigned.pptx", SaveFormat.Pptx);
} finally {
pres.dispose();
}
Теперь можно проверить, была ли презентация подписана цифровой подписью и не была изменена:
// Открыть презентацию
Presentation pres = new Presentation("SomePresentationSigned.pptx");
try {
if (pres.getDigitalSignatures().size() > 0)
{
boolean allSignaturesAreValid = true;
System.out.println("Signatures used to sign the presentation: ");
// Проверить, являются ли все цифровые подписи действительными
for (IDigitalSignature signature : pres.getDigitalSignatures())
{
System.out.println(signature.getComments() + ", "
+ signature.getSignTime().toString() + " -- " + (signature.isValid() ? "VALID" : "INVALID"));
allSignaturesAreValid &= signature.isValid();
}
if (allSignaturesAreValid)
System.out.println("Presentation is genuine, all signatures are valid.");
else
System.out.println("Presentation has been modified since signing.");
}
} finally {
if (pres != null) pres.dispose();
}
FAQ
Можно ли удалить существующие подписи из файла?
Да. Коллекция цифровых подписей поддерживает удаление отдельных элементов и полную очистку; после сохранения файла презентация не будет иметь подписей.
Становится ли файл “только для чтения” после подписи?
Нет. Подпись сохраняет целостность и авторство, но не блокирует редактирование. Чтобы ограничить редактирование, комбинируйте её с “Read-only” or a password.
Отображается ли подпись корректно в разных версиях PowerPoint?
Подпись создаётся для контейнера OOXML (PPTX). Современные версии PowerPoint, поддерживающие подписи OOXML, корректно отображают их статус.