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# para assinar digitalmente PDF
- Adicionar assinaturas digitais em documentos PDF usando C#
- Assine digitalmente documentos PDF com um servidor Timestamp em C#
- Verifique a assinatura digital em PDF usando 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
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.