Ajouter des signatures numériques aux présentations avec Python

Digital certificate est utilisé pour créer une présentation PowerPoint protégée par mot de passe, indiquée comme créée par une organisation ou une personne particulière. Le certificat numérique peut être obtenu en contactant une organisation autorisée – une autorité de certification. Après avoir installé le certificat numérique dans le système, il peut être utilisé pour ajouter une signature numérique à la présentation via Fichier -> Info -> Protéger la présentation :

todo:image_alt_text

Une présentation peut contenir plus d’une signature numérique. Après l’ajout de la signature numérique à la présentation, un message spécial apparaîtra dans PowerPoint :

todo:image_alt_text

Pour signer une présentation ou vérifier l’authenticité des signatures de la présentation, Aspose.Slides API fournit l'IDigitalSignature interface, l'IDigitalSignatureCollection interface et la propriété IPresentation.DigitalSignatures. Actuellement, les signatures numériques sont prises en charge uniquement pour le format PPTX.

Ajouter une signature numérique à partir d’un certificat PFX

L’exemple de code ci-dessous montre comment ajouter une signature numérique à partir d’un certificat PFX :

  1. Ouvrez le fichier PFX et transmettez le mot de passe PFX à l’objet DigitalSignature.
  2. Ajoutez la signature créée à l’objet présentation.

#[TODO:Exception] RuntimeError: Erreur de proxy (FileNotFoundException) : Impossible de charger le fichier ou l'assembly 'System.Security.Cryptography.Xml, Version=4.0.2.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51'. Le fichier est introuvable.

import aspose.slides as slides

with slides.Presentation() as pres:
    # Créer l'objet DigitalSignature avec le fichier PFX et le mot de passe PFX 
    signature = slides.DigitalSignature(path + "testsignature1.pfx", "testpass1")

    # Commenter la nouvelle signature numérique
    signature.comments = "Aspose.Slides digital signing test."

    # Ajouter la signature numérique à la présentation
    pres.digital_signatures.add(signature)

    # enregistrer la présentation
    pres.save("SomePresentationSigned.pptx", slides.export.SaveFormat.PPTX)

Il est maintenant possible de vérifier si la présentation a été signée numériquement et n’a pas été modifiée :

# Ouvrir la présentation
with slides.Presentation("SomePresentationSigned.pptx") as pres:
    if len(pres.digital_signatures) > 0:
        allSignaturesAreValid = True

        print("Signatures used to sign the presentation: ")
        # Vérifier si toutes les signatures numériques sont valides
        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

Puis-je supprimer les signatures existantes d’un fichier ?

Oui. La collection de signatures numériques prend en charge la suppression d’éléments individuels et la suppression complète; après avoir enregistré le fichier, la présentation n’aura aucune signature.

Le fichier devient-il “lecture seule” après la signature ?

Non. Une signature préserve l’intégrité et l’attribution, mais ne bloque pas les modifications. Pour restreindre l’édition, combinez-la avec “Lecture seule” ou un mot de passe.

La signature s’affichera-t-elle correctement dans différentes versions de PowerPoint ?

La signature est créée pour le conteneur OOXML (PPTX). Les versions modernes de PowerPoint qui prennent en charge les signatures OOXML affichent correctement l’état de ces signatures.