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:
A apresentação pode conter mais de uma assinatura digital. Depois que a assinatura digital é adicionada à apresentação, uma mensagem especial aparecerá no PowerPoint:
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:
- Abra o arquivo PFX e passe a senha do PFX para o objeto DigitalSignature.
- 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.