Přidání digitálních podpisů do prezentací v C++
Úvod
Digitální certifikát se používá k vytvoření prezentace PowerPoint chráněné heslem, označené jako vytvořená konkrétní organizací nebo osobou. Digitální certifikát lze získat kontaktováním oprávněné organizace – certifikační autority. Po instalaci digitálního certifikátu do systému jej lze použít k přidání digitálního podpisu do prezentace pomocí Soubor → Informace → Chránit prezentaci:
Prezentace může obsahovat více než jeden digitální podpis. Po přidání digitálního podpisu do prezentace se v PowerPointu zobrazí speciální zpráva:
Pro podepsání prezentace nebo kontrolu pravosti podpisů prezentace poskytuje Aspose.Slides API IDigitalSignature (https://reference.aspose.com/slides/cs/cpp/class/aspose.slides.i_digital_signature) rozhraní, IDigitalSignatureCollection (https://reference.aspose.com/slides/cs/cpp/class/aspose.slides.i_digital_signature_collection) rozhraní a IPresentation.DigitalSignatures (https://reference.aspose.com/slides/cs/cpp/class/aspose.slides.i_presentation#a6f78aff0f8ffa07ff67368fa003722b1) metodu. V současné době jsou digitální podpisy podporovány pouze pro formát PPTX.
Přidání digitálního podpisu z PFX certifikátu
Níže uvedený ukázkový kód demonstruje, jak přidat digitální podpis z PFX certifikátu:
- Otevřete soubor PFX a předávejte heslo PFX do objektu DigitalSignature objektu.
- Přidejte vytvořený podpis do objektu prezentace.
auto pres = System::MakeObject<Presentation>();
// Vytvořte objekt DigitalSignature s PFX souborem a PFX heslem
auto signature = System::MakeObject<DigitalSignature>(u"testsignature1.pfx", u"testpass1");
// Poznámka k novému digitálnímu podpisu
signature->set_Comments(u"Aspose.Slides digital signing test.");
// Přidejte digitální podpis do prezentace
pres->get_DigitalSignatures()->Add(signature);
// Uložte prezentaci
pres->Save(u"SomePresentationSigned.pptx", SaveFormat::Pptx);
Nyní je možné zkontrolovat, zda byla prezentace digitálně podepsána a nebyla změněna:
// Otevřete prezentaci
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: ");
// Zkontrolujte, zda jsou všechny digitální podpisy platné
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.");
}
}
Často kladené otázky
Mohou být z souboru odstraněny existující podpisy?
Ano. Kolekce digitálních podpisů podporuje odstranění jednotlivých položek a úplné vymazání; po uložení souboru nebude v prezentaci žádný podpis.
Stane se soubor po podepsání „pouze pro čtení“?
Ne. Podpis zachovává integritu a autorství, ale neblokuje úpravy. Pro omezení úprav kombinujte jej s “Pouze pro čtení” nebo heslo.
Zobrazí se podpis správně v různých verzích PowerPointu?
Podpis je vytvořen pro kontejner OOXML (PPTX). Moderní verze PowerPointu, které podporují OOXML podpisy, zobrazují stav takových podpisů správně.