Añadir firmas digitales a presentaciones con Python
Introducción
El certificado digital se utiliza para crear una presentación de PowerPoint protegida con contraseña, marcada como creada por una organización o persona concreta. El certificado digital puede obtenerse contactando con una organización autorizada —una autoridad de certificación. Tras instalar el certificado digital en el sistema, puede usarse para añadir una firma digital a la presentación mediante Archivo → Información → Proteger presentación:
La presentación puede contener más de una firma digital. Después de que la firma digital se añada a la presentación, aparecerá un mensaje especial en PowerPoint:
Para firmar una presentación o comprobar la autenticidad de las firmas de la presentación, Aspose.Slides API ofrece la clase DigitalSignature, la clase DigitalSignatureCollection y la propiedad Presentation.digital_signatures. Actualmente, las firmas digitales solo son compatibles con el formato PPTX.
Añadir firma digital desde un certificado PFX
El siguiente ejemplo de código muestra cómo añadir una firma digital desde un certificado PFX:
- Abra el archivo PFX y pase la contraseña del PFX al objeto DigitalSignature.
- Añada la firma creada al objeto de presentación.
import aspose.slides as slides
with slides.Presentation() as pres:
# Crear objeto DigitalSignature con archivo PFX y contraseña PFX
signature = slides.DigitalSignature(path + "testsignature1.pfx", "testpass1")
# Comentario nueva firma digital
signature.comments = "Aspose.Slides digital signing test."
# Añadir firma digital a la presentación
pres.digital_signatures.add(signature)
# guardar presentación
pres.save("SomePresentationSigned.pptx", slides.export.SaveFormat.PPTX)
Ahora es posible comprobar si la presentación está firmada digitalmente y no ha sido modificada:
# Abrir presentación
with slides.Presentation("SomePresentationSigned.pptx") as pres:
if len(pres.digital_signatures) > 0:
allSignaturesAreValid = True
print("Signatures used to sign the presentation: ")
# Comprobar si todas las firmas digitales son 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.")
Preguntas frecuentes
¿Puedo eliminar firmas existentes de un archivo?
Sí. La colección de firmas digitales permite eliminar elementos individuales y vaciarla por completo; después de guardar el archivo, la presentación no tendrá firmas.
¿El archivo pasa a ser “solo lectura” tras la firma?
No. Una firma conserva la integridad y la autoría, pero no impide las ediciones. Para restringir la edición, combínela con “Read-only” or a password.
¿La firma se mostrará correctamente en distintas versiones de PowerPoint?
La firma se crea para el contenedor OOXML (PPTX). Las versiones modernas de PowerPoint que admiten firmas OOXML muestran el estado de dichas firmas correctamente.