Agregar firma digital o firmar digitalmente PDF en C#

Aspose.PDF para .NET admite la característica de firmar digitalmente archivos PDF utilizando la clase SignatureField. También puedes certificar un archivo PDF con un Certificado PKCS12. Algo similar a Agregar firmas y seguridad en Adobe Acrobat.

Al firmar un documento PDF usando una firma, básicamente confirmas su contenido “tal cual”. En consecuencia, cualquier otro cambio realizado después invalida la firma y, por lo tanto, sabrías si el documento fue alterado. Mientras que, certificar un documento primero te permite especificar los cambios que un usuario puede hacer al documento sin invalidar la certificación.

En otras palabras, el documento todavía se consideraría que retiene su integridad y el destinatario aún podría confiar en el documento. Para más detalles, por favor visita Certificar y firmar un PDF. En general, certificar un documento puede compararse con firmar código de un ejecutable .NET.

El siguiente fragmento de código también funciona con la biblioteca Aspose.PDF.Drawing. El siguiente fragmento de código también funciona con la biblioteca Aspose.PDF.Drawing.

Características de firma de Aspose.PDF para .NET

Podemos usar las siguientes clases y método para la firma de PDF

Firmar PDF con firmas digitales

public static void SignDocument()
{
    string inFile = System.IO.Path.Combine(_dataDir,"DigitallySign.pdf");
    string outFile = System.IO.Path.Combine(_dataDir,"DigitallySign_out.pdf");
    using (Document document = new Document(inFile))
    {
        using (PdfFileSignature signature = new PdfFileSignature(document))
        {
            PKCS7 pkcs = new PKCS7(@"C:\Keys\test.pfx", "Pa$$w0rd2020"); // Use objetos PKCS7/PKCS7Detached
            signature.Sign(1, true, new System.Drawing.Rectangle(300, 100, 400, 200),pkcs);
            // Guardar el archivo PDF de salida
            signature.Save(outFile);
        }
    }
}

Agregar marca de tiempo a la firma digital

Cómo firmar digitalmente un PDF con marca de tiempo

Aspose.PDF para .NET permite firmar digitalmente el PDF con un servidor de marcas de tiempo o un servicio web.

Para lograr este requisito, se ha añadido la clase TimestampSettings al espacio de nombres de Aspose.PDF. Por favor, eche un vistazo al siguiente fragmento de código que obtiene la marca de tiempo y la añade al documento PDF:

public static void SignWithTimeStampServer()
{
    using (Document document = new Document(System.IO.Path.Combine(_dataDir,"SimpleResume.pdf")))
    {
        using (PdfFileSignature signature = new PdfFileSignature(document))
        {
            PKCS7 pkcs = new PKCS7(@"C:\Keys\test.pfx", "Start2020");
            TimestampSettings timestampSettings = new TimestampSettings("https://freetsa.org/tsr", string.Empty); // Usuario/Contraseña puede ser omitido
            pkcs.TimestampSettings = timestampSettings;
            System.Drawing.Rectangle rect = new System.Drawing.Rectangle(100, 100, 200, 100);
            // Crear cualquiera de los tres tipos de firma
            signature.Sign(1, "Razón de la firma", "Contacto", "Ubicación", true, rect, pkcs);
            // Guardar archivo PDF de salida
            signature.Save(System.IO.Path.Combine(_dataDir, "DigitallySignWithTimeStamp_out.pdf"));
        }
    }
}