Přidání digitálních podpisů do prezentací pomocí Pythonu

Úvod

Digitální certifikát se používá k vytvoření prezentace PowerPoint chráněné heslem, označené jako vytvořenou 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 přes Soubor → Info → Ochraňovat prezentaci:

todo:image_alt_text

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:

todo:image_alt_text

Pro podepisování prezentace nebo kontrolu pravosti podpisů prezentace poskytuje Aspose.Slides API třídu DigitalSignature, třídu DigitalSignatureCollection a vlastnost Presentation.digital_signatures. 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:

  1. Otevřete soubor PFX a předáte heslo PFX objektu DigitalSignature.
  2. Přidejte vytvořený podpis do objektu prezentace.
import aspose.slides as slides

with slides.Presentation() as pres:
    # Vytvořte objekt DigitalSignature s PFX souborem a heslem PFX 
    signature = slides.DigitalSignature(path + "testsignature1.pfx", "testpass1")

    # Poznámka k novému digitálnímu podpisu
    signature.comments = "Aspose.Slides digital signing test."

    # Přidejte digitální podpis do prezentace
    pres.digital_signatures.add(signature)

    # uložit prezentaci
    pres.save("SomePresentationSigned.pptx", slides.export.SaveFormat.PPTX)

Nyní je možné zkontrolovat, zda byla prezentace digitálně podepsána a nebyla upravena:

# Otevřít prezentaci
with slides.Presentation("SomePresentationSigned.pptx") as pres:
    if len(pres.digital_signatures) > 0:
        allSignaturesAreValid = True

        print("Signatures used to sign the presentation: ")
        # Zkontrolovat, zda jsou všechny digitální podpisy platné
        for signature in pres.digital_signatures :
            print(signature.certificate.subject_name.name + ", "
                    + signature.sign_time.strftime("yyyy-MM-dd HH:mm") + " -- " + "VALID" if signature.is_valid else "INVALID")
            allSignaturesAreValid = allSignaturesAreValid and signature.is_valid
        

        if allSignaturesAreValid:
            print("Presentation is genuine, all signatures are valid.")
        else:
            print("Presentation has been modified since signing.")

Často kladené otázky

Mohu odstranit existující podpisy ze souboru?

Ano. Kolekce digitálních podpisů podporuje odstranění jednotlivých položek i vymazání celé kolekce; 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 jej můžete kombinovat s “Pouze pro čtení” nebo heslem.

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ě.