Trabalhar com assinaturas digitais

Uma assinatura digital é uma implementação tecnológica de assinaturas eletrónicas para assinar documentos e autenticar o signatário para garantir que um documento não foi modificado desde a sua assinatura. Cada assinatura digital é única para cada signatário, pois segue o protocolo PKI para gerar chaves públicas e privadas. Assinar um documento digitalmente significa criar uma assinatura usando a chave privada do signatário, onde um algoritmo matemático é usado para criptografar o hash gerado.

Aspose.Words permite detectar, contar ou verificar assinaturas digitais existentes e também adicionar uma nova assinatura ao seu documento para descobrir qualquer adulteração nele. Também é possível remover todas as assinaturas digitais de um documento. Use a classe DigitalSignatureUtil para trabalhar com assinaturas digitais.

Este artigo explica como fazer tudo o que precede para validar a autenticidade e integridade de um documento digital.

Formatos Suportados

Aspose.Words permite trabalhar com assinaturas digitais em documentos DOC, OOXML e ODT e assinar o documento gerado no formato PDF ou XPS.

Limitações das Assinaturas Digitais

A tabela abaixo descreve algumas limitações que você pode enfrentar ao trabalhar com assinaturas digitais através de Aspose.Words, bem como algumas opções alternativas.

Limitação Opção alternativa
Perda de assinaturas digitais num documento depois de O carregar e guardar. Portanto, o processamento de um documento para um servidor pode causar a perda de todas as assinaturas digitais sem aviso prévio. Verifique se um documento tem assinaturas digitais e tome as medidas adequadas, se forem encontradas. Por exemplo, enviar um alerta aos clientes informando-os de que o documento que estão a enviar contém assinaturas digitais que serão perdidas se forem processadas.
Aspose.Words suporta trabalhar com macros num documento. Mas Aspose.Words ainda não suporta assinaturas digitais em macros. Exporte o documento de volta para qualquer formato do Word e utilize Microsoft Word para adicionar uma assinatura digital às macros.

Detectar, contar e verificar assinaturas digitais

Aspose.Words permite detectar a assinatura digital num documento utilizando o método DetectFileFormat e a propriedade HasDigitalSignature. Vale a pena notar que tal verificação detectará apenas o fato da assinatura, mas não sua validade.

Um documento pode ser assinado mais de uma vez, e isso pode ser feito por diferentes utilizadores. Para verificar a validade das assinaturas digitais, você precisa carregá-las do documento usando o método LoadSignatures e usar a propriedade IsValid. Além disso, Aspose.Words permite contar um conjunto de todas as assinaturas digitais dentro de um documento usando a propriedade Count.

Tudo isto proporciona uma forma eficiente e segura de verificar a existência de assinaturas num documento antes de o processar.

O exemplo de código a seguir mostra como detectar a presença de assinaturas digitais e verificá-las:

Criar uma assinatura digital

Para criar uma assinatura digital, você precisará carregar um certificado de assinatura que confirme a identidade. Ao enviar um documento assinado digitalmente, você também envia seu certificado e chave pública.

Aspose.Words permite criar o certificado X. 509, um certificado digital que utiliza a norma X. 509 PKI internacionalmente aceite para verificar se uma chave pública pertence ao signatário incluído no certificado. Para fazer isso, use o método Create dentro da classe CertificateHolder.

As próximas secções explicam como adicionar uma assinatura digital, uma linha de assinatura e como assinar um documento PDF gerado.

Assinar um documento

Aspose.Words permite assinar um documento DOC, DOCX ou ODT digitalmente utilizando o método Sign e as propriedades SignOptions.

O exemplo de código a seguir mostra como assinar documentos usando um detentor de certificado e opções de assinatura:

Adicionar uma linha de assinatura

Uma linha de assinatura é uma representação visual de uma assinatura digital num documento. Aspose.Words permite inserir uma linha de assinatura usando o método DocumentBuilder.InsertSignatureLine. Você também pode definir os parâmetros para esta representação usando a classe SignatureLineOptions.

Por exemplo, a figura abaixo mostra como assinaturas válidas e inválidas podem ser exibidas.

valid-digital-signature invalid-digital-signature

Além disso, se um documento contiver uma linha de assinatura e nenhuma assinatura digital, existe um recurso para solicitar ao usuário que adicione uma assinatura.

O exemplo de código a seguir mostra como assinar um documento com um certificado pessoal e uma linha de assinatura específica:

Assinar um documento PDF gerado

Aspose.Words permite assinar e obter todos os detalhes de um documento PDF usando as propriedades PdfDigitalSignatureDetails.

O exemplo de código a seguir mostra como assinar um PDFgerado:

A figura abaixo demonstra que o documento PDF gerado é aberto em Adobe Acrobat e a assinatura digital é verificada como presente e válida.

create-digital-signed-pdf-aspose-words-java

Recuperar o valor da Assinatura Digital

Aspose.Words também fornece a capacidade de recuperar o valor da assinatura digital de um documento assinado digitalmente como uma matriz de bytes usando a propriedade SignatureValue.

O exemplo de código a seguir mostra como obter o valor da assinatura digital como uma matriz de bytes de um documento:

Remover Assinaturas Digitais

Aspose.Words permite remover todas as assinaturas digitais de um documento assinado utilizando o método RemoveAllSignatures.

O exemplo de código a seguir mostra como carregar e remover assinaturas digitais de um documento: