Añadir firmas digitales a presentaciones en .NET

Certificado digital se utiliza para crear una presentación de PowerPoint protegida con contraseña, marcada como creada por una organización o persona específica. El certificado digital puede obtenerse contactando a una organización autorizada, una autoridad de certificación. Después de instalar el certificado digital en el sistema, puede usarse para añadir una firma digital a la presentación a través de Archivo -> Información -> Proteger presentación:

todo:image_alt_text

Una presentación puede contener más de una firma digital. Después de que se añade la firma digital a la presentación, aparecerá un mensaje especial en PowerPoint:

todo:image_alt_text

Para firmar una presentación o verificar la autenticidad de las firmas de la presentación, Aspose.Slides API proporciona la interfaz IDigitalSignatureinterface, la interfaz IDigitalSignatureCollectioninterface y la propiedad IPresentation.DigitalSignaturesproperty. Actualmente, las firmas digitales solo se admiten para el formato PPTX.

Agregar una firma digital desde un certificado PFX

El siguiente ejemplo de código muestra cómo agregar una firma digital desde un certificado PFX:

  1. Abra el archivo PFX y pase la contraseña PFX al objeto DigitalSignature objeto.
  2. Añada la firma creada al objeto de la presentación.
using (Presentation pres = new Presentation())
{
    // Crear objeto DigitalSignature con archivo PFX y contraseña PFX 
    DigitalSignature signature = new DigitalSignature("testsignature1.pfx", @"testpass1");

    // Comentario de la nueva firma digital
    signature.Comments = "Aspose.Slides digital signing test.";

    // Añadir firma digital a la presentación
    pres.DigitalSignatures.Add(signature);

    // Guardar presentación
    pres.Save("SomePresentationSigned.pptx", SaveFormat.Pptx);
}

Ahora es posible comprobar si la presentación está firmada digitalmente y no ha sido modificada:

// Abrir presentación
using (Presentation pres = new Presentation("SomePresentationSigned.pptx"))
{
    if (pres.DigitalSignatures.Count > 0)
    {
        bool allSignaturesAreValid = true;

        Console.WriteLine("Signatures used to sign the presentation: ");

        // Verificar si todas las firmas digitales son válidas
        foreach (DigitalSignature signature in pres.DigitalSignatures)
        {
            Console.WriteLine(signature.Certificate.SubjectName.Name + ", "
                    + signature.SignTime.ToString("yyyy-MM-dd HH:mm") + " -- " + (signature.IsValid ? "VALID" : "INVALID"));
            allSignaturesAreValid &= signature.IsValid;
        }

        if (allSignaturesAreValid)
            Console.WriteLine("Presentation is genuine, all signatures are valid.");
        else
            Console.WriteLine("Presentation has been modified since signing.");
    }
}

Preguntas frecuentes

¿Puedo eliminar firmas existentes de un archivo?

Sí. La colección de firmas digitales admite eliminar elementos individuales y borrarla por completo; después de guardar el archivo, la presentación no tendrá firmas.

¿El archivo se vuelve “solo lectura” después de firmar?

No. Una firma preserva la integridad y la autoría, pero no bloquea las ediciones. Para restringir la edición, combínela con “Solo lectura” o una contraseña.

¿La firma se mostrará correctamente en diferentes versiones de PowerPoint?

La firma se crea para el contenedor OOXML (PPTX). Las versiones modernas de PowerPoint que admiten firmas OOXML muestran correctamente el estado de dichas firmas.