agregar firma digital a PDF C#

Las firmas digitales se utilizan para proteger los documentos PDF antes de que se compartan con terceros. La firma digital de un documento PDF permite detectar la manipulación mediante la verificación del documento mediante la firma digital. Para proteger los documentos PDF mediante programación mediante firmas digitales, este artículo le mostrará cómo agregar firmas digitales en archivos PDF en C#. También aprenderá cómo verificar las firmas digitales en archivos PDF en C#.

C# .NET API para agregar firmas digitales en PDF

Para agregar y verificar firmas digitales en documentos PDF, utilizaremos la API Aspose.PDF for .NET, que es una potente API de manipulación de PDF para crear, editar, convertir y firmar digitalmente documentos PDF. Puede descargar Aspose.PDF for .NET o instalarlo usando una de las siguientes formas en Visual Studio:

Administrador de paquetes NuGet

Firmar PDF digitalmente en C#

Consola del administrador de paquetes

PM> Install-Package Aspose.PDF

Agregar firma digital a un PDF en C#

Los siguientes son los pasos para firmar un documento PDF utilizando Aspose.PDF for .NET.

  • Cree un objeto de la clase Document e inicialícelo con la ruta del documento PDF.
  • Cree un objeto de la clase PdfFileSignature e inicialícelo con el objeto de la clase Document.
  • Cree un objeto de la clase PKCS7 e inicialícelo con una ruta de certificado y una contraseña.
  • Cree e inicialice el objeto de la clase DocMDPSignature para el tipo de firma MDP.
  • Cree un Rectangle para colocar la firma.
  • Firme digitalmente un documento PDF utilizando el método PdfFileSignature.Certify().
  • Guarde el documento usando el método PdfFileSignature.Save().

El siguiente ejemplo de código muestra cómo agregar una firma digital a un documento PDF en C#.

// Cargar documento PDF
using (Document pdfDocument = new Document("Document.pdf"))
{
	using (PdfFileSignature signature = new PdfFileSignature(pdfDocument))
	{
		PKCS7 pkcs = new PKCS7("certificate.pfx", "1234567890"); // Use PKCS7/PKCS7Detached objects
		DocMDPSignature docMdpSignature = new DocMDPSignature(pkcs, DocMDPAccessPermissions.FillingInForms);
		System.Drawing.Rectangle rect = new System.Drawing.Rectangle(100, 100, 200, 100);
		// Establecer la apariencia de la firma
		signature.SignatureAppearance = @"aspose-logo.png";
		// Crea cualquiera de los tres tipos de firma
		signature.Certify(1, "Signature Reason", "Contact", "Location", true, rect, docMdpSignature);
		// Guardar archivo PDF firmado digitalmente
		signature.Save("Digitally Signed PDF.pdf");
	}
}

C# Agregar firma digital a PDF usando el servidor de marca de tiempo

También puede agregar una firma digital a un documento PDF con el servidor TimeStamp proporcionando sus detalles mediante la clase TimestampSettings. El siguiente ejemplo de código muestra cómo firmar digitalmente un documento PDF con un servidor TimeStamp en C#.

// Cargar documento PDF
using (Document pdfDocument = new Document("Document.pdf"))
{
	using (PdfFileSignature signature = new PdfFileSignature(pdfDocument))
	{
		PKCS7 pkcs = new PKCS7("certificate.pfx", "WebSales"); // Use PKCS7/PKCS7Detached objects
		TimestampSettings timestampSettings = new TimestampSettings("https:\\your_timestamp_settings", "user:password"); // User/Password can be omitted
		pkcs.TimestampSettings = timestampSettings;
		System.Drawing.Rectangle rect = new System.Drawing.Rectangle(100, 100, 200, 100);
		// Crea cualquiera de los tres tipos de firma
		signature.Sign(1, "Signature Reason", "Contact", "Location", true, rect, pkcs);
		// Guardar archivo PDF de salida
		signature.Save("Output.pdf");
	}
}

Verificar PDF firmado digitalmente en C#

Los siguientes son los pasos para verificar la firma digital en un documento PDF:

  • Cree un objeto de la clase Document e inicialícelo con la ruta del documento PDF.
  • Cree un objeto de la clase PdfFileSignature e inicialícelo con el objeto de la clase Document.
  • Accede a todas las firmas del documento PDF.
  • Verifique la validez de la firma usando el método PdfFileSignature.VerifySigned().

El siguiente ejemplo de código muestra cómo verificar la firma digital en PDF usando C#.

// Cargar documento PDF
using (Document pdfDocument = new Document("Document.pdf"))
{
	using (PdfFileSignature signature = new PdfFileSignature(pdfDocument))
	{
		IList<string> sigNames = signature.GetSignNames();
		if (sigNames.Count > 0) // Any signatures?
		{
			if (signature.VerifySigned(sigNames[0] as string)) // Verify first one
			{
				if (signature.IsCertified) // Certified?
				{
					if (signature.GetAccessPermissions() == DocMDPAccessPermissions.FillingInForms) // Get access permission
					{
						// Hacer algo
					}
				}
			}
		}
	}
}

Pruebe Aspose.PDF for .NET gratis

Puede obtener una licencia temporal gratuita para probar y usar Aspose.PDF for .NET.

Conclusión

En este artículo, ha aprendido a agregar firmas digitales a archivos PDF en C#.NET. Además, ha visto cómo verificar los archivos PDF firmados digitalmente mediante programación en C#. Simplemente puede instalar Aspose.PDF for .NET en sus aplicaciones y firmar digitalmente sus archivos PDF sin problemas.

Artículos relacionados