Adicionar assinaturas digitais a apresentações com Python

Introdução

Certificado digital é usado para criar uma apresentação PowerPoint protegida por senha, marcada como criada por uma organização ou pessoa específica. O certificado digital pode ser obtido entrando em contato com uma organização autorizada – uma autoridade certificadora. Depois de instalar o certificado digital no sistema, ele pode ser usado para adicionar uma assinatura digital à apresentação via Arquivo -> Informações -> Proteger Apresentação:

todo:image_alt_text

A apresentação pode conter mais de uma assinatura digital. Depois que a assinatura digital é adicionada à apresentação, uma mensagem especial aparecerá no PowerPoint:

todo:image_alt_text

Para assinar a apresentação ou verificar a autenticidade das assinaturas da apresentação, Aspose.Slides API fornece a classe DigitalSignature, a classe DigitalSignatureCollection e a propriedade Presentation.digital_signatures. Atualmente, assinaturas digitais são suportadas apenas para o formato PPTX.

Adicionar assinatura digital a partir de certificado PFX

O exemplo de código abaixo demonstra como adicionar uma assinatura digital a partir de um certificado PFX:

  1. Abra o arquivo PFX e passe a senha do PFX para o objeto DigitalSignature.
  2. Adicione a assinatura criada ao objeto da apresentação.
import aspose.slides as slides

with slides.Presentation() as pres:
    # Crie o objeto DigitalSignature com o arquivo PFX e a senha PFX
    signature = slides.DigitalSignature(path + "testsignature1.pfx", "testpass1")

    # Comentário da nova assinatura digital
    signature.comments = "Aspose.Slides digital signing test."

    # Adicione a assinatura digital à apresentação
    pres.digital_signatures.add(signature)

    # Salve a apresentação
    pres.save("SomePresentationSigned.pptx", slides.export.SaveFormat.PPTX)

Agora é possível verificar se a apresentação foi assinada digitalmente e não foi modificada:

# Abrir apresentação
with slides.Presentation("SomePresentationSigned.pptx") as pres:
    if len(pres.digital_signatures) > 0:
        allSignaturesAreValid = True

        print("Signatures used to sign the presentation: ")
        # Verificar se todas as assinaturas digitais são válidas
        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.")

Perguntas frequentes

Posso remover assinaturas existentes de um arquivo?

Sim. A coleção de assinaturas digitais permite remover itens individuais e limpar totalmente a coleção; após salvar o arquivo, a apresentação não terá assinaturas.

O arquivo se torna “somente leitura” após a assinatura?

Não. Uma assinatura preserva a integridade e a autoria, mas não impede edições. Para restringir a edição, combine-a com “Somente leitura” ou uma senha.

A assinatura será exibida corretamente em diferentes versões do PowerPoint?

A assinatura é criada para o contêiner OOXML (PPTX). Versões modernas do PowerPoint que suportam assinaturas OOXML exibem corretamente o status dessas assinaturas.