Trabalho com assinaturas digitais

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

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

Este artigo explica como fazer todos os acima 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 em PDF ou XPS formato.

Limitações de assinaturas digitais

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

Limitação Opção alternativa
Perda de assinaturas digitais em um documento após carregar e salvá-lo. Portanto, processar 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 a ação apropriada se algum for encontrado. Por exemplo, envie um alerta para os clientes informando que o documento que eles estão carregando contém assinaturas digitais que serão perdidas se for processado
Aspose.Words suporta trabalhar com macros em um documento. Mas… Aspose.Words ainda não suporta assinaturas digitais em macros Exportar o documento de volta para qualquer formato do Word e usar Microsoft Word para adicionar uma assinatura digital a macros

Detectar, Contar e Verificar assinaturas digitais

Aspose.Words permite detectar assinatura digital em um documento usando o DetectFileFormat método e HasDigitalSignature propriedade. Vale a pena notar que tal verificação só irá detectar 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 usuários. Para verificar a validade das assinaturas digitais, você precisa carregá-las do documento usando o LoadSignatures método e usar o IsValid propriedade. Também Aspose.Words permite que você conte um conjunto de todas as assinaturas digitais dentro de um documento usando o Count propriedade.

Tudo isso fornece uma maneira eficiente e segura de verificar um documento para assinaturas antes de processá-lo.

O exemplo de código a seguir mostra como detectar a presença de assinaturas digitais e verificar:

Criar uma assinatura digital

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

Aspose.Words permite que você crie o certificado X.509, um certificado digital que usa o padrão internacionalmente aceito X.509 PKI para verificar se uma chave pública pertence ao signer incluído dentro do certificado. Para fazer isso, use o Create método dentro do CertificateHolder classe.

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

Assine um documento

Aspose.Words permite que você assine um documento DOC, DOCX ou ODT digitalmente usando o Sign método e SignOptions propriedades.

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

Adicionar uma linha de assinatura

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

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

valid-digital-signature invalid-digital-signature

Além disso, se um documento contém uma linha de assinatura e nenhuma assinatura digital, há um recurso para pedir ao usuário para adicionar 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:

Assine um Documento PDF Gerado

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

O exemplo a seguir mostra como assinar um PDF gerado:

A imagem abaixo mostra 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

Recupere o valor de assinatura digital

Aspose.Words também fornece a capacidade de recuperar o valor de assinatura digital de um documento digitalmente assinado como um array byte usando o SignatureValue propriedade.

O exemplo a seguir mostra como obter o valor de assinatura digital como um array byte de um documento:

Remover assinaturas digitais

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

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