adicionar assinatura digital ao PDF C#

As assinaturas digitais são usadas para proteger documentos PDF antes de serem compartilhados com terceiros. Assinar digitalmente um documento PDF permite detectar adulterações verificando o documento usando a assinatura digital. Para proteger os documentos PDF programaticamente usando assinaturas digitais, este artigo mostrará como adicionar assinaturas digitais em arquivos PDF em C#. Você também aprenderá a verificar as assinaturas digitais em arquivos PDF em C#.

API C# .NET para adicionar assinaturas digitais em PDF

Para adicionar e verificar assinaturas digitais em documentos PDF, usaremos a API Aspose.PDF for .NET que é uma poderosa API de manipulação de PDF para criar, editar, converter e assinar digitalmente documentos PDF. Você pode baixar Aspose.PDF para .NET ou instalá-lo usando uma das seguintes maneiras no Visual Studio:

Gerenciador de pacotes NuGet

Assinar PDF digitalmente em C#

Console do Gerenciador de Pacotes

PM> Install-Package Aspose.PDF

Adicionar assinatura digital a um PDF em C#

A seguir estão as etapas para assinar um documento PDF usando Aspose.PDF para .NET.

  • Crie um objeto da classe Document e inicialize-o com o caminho do documento PDF.
  • Crie um objeto da classe PdfFileSignature e inicialize-o com o objeto da classe Document.
  • Crie um objeto da classe PKCS7 e inicialize-o com um caminho de certificado e senha.
  • Crie e inicialize o objeto da classe DocMDPSignature para o tipo de assinatura MDP.
  • Crie um Retângulo para colocação de assinatura.
  • Assine digitalmente o documento PDF usando o método PdfFileSignature.Certify().
  • Salve o documento usando o método PdfFileSignature.Save().

O exemplo de código a seguir mostra como adicionar uma assinatura digital a um documento PDF em C#.

// Carregar 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);
		// Definir aparência da assinatura
		signature.SignatureAppearance = @"aspose-logo.png";
		// Crie qualquer um dos três tipos de assinatura
		signature.Certify(1, "Signature Reason", "Contact", "Location", true, rect, docMdpSignature);
		// Salvar arquivo PDF assinado digitalmente
		signature.Save("Digitally Signed PDF.pdf");
	}
}

C# Adicionar assinatura digital a PDF usando o servidor de carimbo de data/hora

Você também pode adicionar uma assinatura digital a um documento PDF com o servidor TimeStamp fornecendo seus detalhes usando a classe TimestampSettings. O exemplo de código a seguir mostra como assinar digitalmente um documento PDF com um servidor TimeStamp em C#.

// Carregar 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);
		// Crie qualquer um dos três tipos de assinatura
		signature.Sign(1, "Signature Reason", "Contact", "Location", true, rect, pkcs);
		// Salvar arquivo PDF de saída
		signature.Save("Output.pdf");
	}
}

Verificar PDF assinado digitalmente em C#

A seguir estão as etapas para verificar a assinatura digital em um documento PDF:

  • Crie um objeto da classe Document e inicialize-o com o caminho do documento PDF.
  • Crie um objeto da classe PdfFileSignature e inicialize-o com o objeto da classe Document.
  • Acesse todas as assinaturas do documento PDF.
  • Verifique a validade da assinatura usando o método PdfFileSignature.VerifySigned().

O exemplo de código a seguir mostra como verificar a assinatura digital em PDF usando C#.

// Carregar 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
					{
						// Faça alguma coisa
					}
				}
			}
		}
	}
}

Experimente o Aspose.PDF para .NET gratuitamente

Você pode obter uma licença temporária gratuita para tentar usar o Aspose.PDF para .NET.

Conclusão

Neste artigo, você aprendeu como adicionar assinaturas digitais a arquivos PDF em C#.NET. Além disso, você viu como verificar os arquivos PDF assinados digitalmente de forma programática em C#. Você pode simplesmente instalar o Aspose.PDF para .NET em seus aplicativos e assinar digitalmente seus arquivos PDF sem problemas.

Artigos relacionados