Lägg till digitala signaturer i presentationer med Python

Introduktion

Digitalt certifikat används för att skapa en lösenordsskyddad PowerPoint-presentation, markerad som skapad av en viss organisation eller person. Digitalt certifikat kan erhållas genom att kontakta en auktoriserad organisation – en certifikatutfärdare. Efter att ha installerat digitalt certifikat i systemet kan det användas för att lägga till en digital signatur i presentationen via Fil → Info → Skydda presentation:

todo:image_alt_text

En presentation kan innehålla mer än en digital signatur. När den digitala signaturen har lagts till i presentationen visas ett särskilt meddelande i PowerPoint:

todo:image_alt_text

För att signera en presentation eller kontrollera äktheten hos presentationssignaturer tillhandahåller Aspose.Slides API klassen DigitalSignature, klassen DigitalSignatureCollection och egenskapen Presentation.digital_signatures. För närvarande stöds digitala signaturer endast för PPTX‑format.

Lägg till digital signatur från PFX‑certifikat

Kodexemplet nedan visar hur man lägger till en digital signatur från ett PFX‑certifikat:

  1. Öppna PFX‑filen och skicka PFX‑lösenordet till DigitalSignature‑objektet.
  2. Lägg till den skapade signaturen i presentationsobjektet.
import aspose.slides as slides

with slides.Presentation() as pres:
    # Skapa DigitalSignature-objekt med PFX-fil och PFX-lösenord 
    signature = slides.DigitalSignature(path + "testsignature1.pfx", "testpass1")

    # Kommentera ny digital signatur
    signature.comments = "Aspose.Slides digital signing test."

    # Lägg till digital signatur i presentationen
    pres.digital_signatures.add(signature)

    # spara presentationen
    pres.save("SomePresentationSigned.pptx", slides.export.SaveFormat.PPTX)

Nu är det möjligt att kontrollera om presentationen signerades digitalt och inte har modifierats:

# Öppna presentation
with slides.Presentation("SomePresentationSigned.pptx") as pres:
    if len(pres.digital_signatures) > 0:
        allSignaturesAreValid = True

        print("Signatures used to sign the presentation: ")
        # Kontrollera om alla digitala signaturer är giltiga
        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.")

FAQ

Kan jag ta bort befintliga signaturer från en fil?

Ja. Samlingen av digitala signaturer stödjer att ta bort enskilda objekt och att rensa den helt; efter att du sparat filen kommer presentationen inte ha några signaturer.

Blir filen skrivskyddad efter signering?

Nej. En signatur bevarar integritet och författarskap men blockerar inte redigering. För att begränsa redigering, kombinera den med “Read-only” eller ett lösenord.

Kommer signaturen att visas korrekt i olika versioner av PowerPoint?

Signaturen är skapad för OOXML‑behållaren (PPTX). Moderna versioner av PowerPoint som stödjer OOXML‑signaturer visar statusen för sådana signaturer korrekt.