Dodaj podpisy cyfrowe do prezentacji w C++
Wprowadzenie
Certyfikat cyfrowy jest używany do tworzenia prezentacji PowerPoint chronionych hasłem, oznaczonych jako utworzone przez określoną organizację lub osobę. Certyfikat cyfrowy można uzyskać, kontaktując się z autoryzowaną organizacją – urzędem certyfikacji. Po zainstalowaniu certyfikatu cyfrowego w systemie można go użyć do dodania podpisu cyfrowego do prezentacji poprzez Plik -> Informacje -> Ochrona prezentacji:
Prezentacja może zawierać więcej niż jeden podpis cyfrowy. Po dodaniu podpisu cyfrowego do prezentacji pojawi się specjalna wiadomość w PowerPoint:
Aby podpisać prezentację lub sprawdzić autentyczność podpisów prezentacji, Aspose.Slides API udostępnia interfejs IDigitalSignature, interfejs IDigitalSignatureCollection oraz metodę IPresentation.DigitalSignatures. Obecnie podpisy cyfrowe są obsługiwane tylko dla formatu PPTX.
Dodaj podpis cyfrowy z certyfikatu PFX
Poniższy przykład kodu demonstruje, jak dodać podpis cyfrowy z certyfikatu PFX:
- Otwórz plik PFX i przekaż hasło PFX do obiektu DigitalSignature.
- Dodaj utworzony podpis do obiektu prezentacji.
auto pres = System::MakeObject<Presentation>();
// Utwórz obiekt DigitalSignature z plikiem PFX i hasłem PFX
auto signature = System::MakeObject<DigitalSignature>(u"testsignature1.pfx", u"testpass1");
// Skomentuj nowy podpis cyfrowy
signature->set_Comments(u"Aspose.Slides digital signing test.");
// Dodaj podpis cyfrowy do prezentacji
pres->get_DigitalSignatures()->Add(signature);
// Zapisz prezentację
pres->Save(u"SomePresentationSigned.pptx", SaveFormat::Pptx);
Teraz można sprawdzić, czy prezentacja została podpisana cyfrowo i nie została zmodyfikowana:
// Otwórz prezentację
auto pres = System::MakeObject<Presentation>(u"SomePresentationSigned.pptx");
if (pres->get_DigitalSignatures()->get_Count() > 0)
{
bool allSignaturesAreValid = true;
Console::WriteLine(u"Signatures used to sign the presentation: ");
// Sprawdź, czy wszystkie podpisy cyfrowe są ważne
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"VALID") : System::String(u"INVALID")));
allSignaturesAreValid &= signature->get_IsValid();
}
if (allSignaturesAreValid)
{
Console::WriteLine(u"Presentation is genuine, all signatures are valid.");
}
else
{
Console::WriteLine(u"Presentation has been modified since signing.");
}
}
FAQ
Czy mogę usunąć istniejące podpisy z pliku?
Tak. Kolekcja podpisów cyfrowych obsługuje usuwanie pojedynczych elementów oraz całkowite czyszczenie; po zapisaniu pliku prezentacja nie będzie zawierała żadnych podpisów.
Czy plik staje się „tylko do odczytu” po podpisaniu?
Nie. Podpis zachowuje integralność i autorstwo, ale nie blokuje edycji. Aby ograniczyć edycję, połącz go z „Tylko do odczytu” lub hasłem.
Czy podpis będzie wyświetlany prawidłowo w różnych wersjach PowerPoint?
Podpis jest tworzony dla kontenera OOXML (PPTX). Nowoczesne wersje PowerPoint, które obsługują podpisy OOXML, wyświetlają status takich podpisów prawidłowo.