Assinaturas Digitais

Assinaturas Digitais

Aspose.Words FOSS para .NET pode inspecionar e verificar assinaturas digitais que já estão anexadas a um .docx documento através do Aspose.Words.DigitalSignatures namespace. Esta edição cobre assinatura verification — leitura de metadados da assinatura, verificação de validade e exame do certificado de assinatura. Não inclui a capacidade de criar novas assinaturas em um documento.


Lendo Assinaturas de um Documento

Cada Document expõe uma propriedade DigitalSignatures que retorna um DigitalSignatureCollection — uma coleção somente leitura e enumerável de objetos DigitalSignature já presentes no arquivo carregado. DigitalSignatureUtil.LoadSignatures(fileName) (e a sobrecarga LoadSignatures(stream)) lê assinaturas diretamente de um arquivo ou fluxo sem carregar o documento completo em um objeto Document, o que é útil quando você só precisa verificar o status da assinatura. A propriedade IsValid da coleção indica se todas as assinaturas que ela contém são válidas, e Count informa quantas assinaturas foram encontradas.


Inspecionando uma Assinatura Individual

Cada DigitalSignature expõe IsValid (se a assinatura é criptograficamente válida), SignatureType (um valor DigitalSignatureType — CryptoApi, XmlDsig ou Unknown), SignTime, Comments, SubjectName, IssuerName e os bytes brutos SignatureValue. A propriedade CertificateHolder retorna um objeto CertificateHolder que encapsula o certificado de assinatura; sua propriedade Certificate expõe o X509Certificate2 subjacente para que você possa inspecionar os campos padrão do certificado (emissor, assunto, período de validade) com as próprias APIs de certificado do .NET.


O que não é suportado nesta edição

A superfície API ainda declara membros relacionados à assinatura — DigitalSignatureUtil.Sign(), SignOptions, e XmlDsigLevel — para compatibilidade estrutural com o modelo de objeto comercial Aspose.Words para .NET, mas a criação de uma nova assinatura digital em um documento não é funcional nesta edição FOSS. Use esta edição para verify assinaturas que já existem em um documento; um fluxo de trabalho de assinatura requer Aspose.Words para .NET.


Dicas e Melhores Práticas

  • Prefira DigitalSignatureUtil.LoadSignatures() em vez de abrir o Document completo quando você só precisa verificar se um arquivo está assinado — isso evita o custo de analisar todo o corpo do documento.
  • Verifique DigitalSignatureCollection.IsValid primeiro para uma aprovação/rejeição rápida antes de iterar os valores individuais de DigitalSignature.IsValid.
  • SignatureType informa qual mecanismo de assinatura gerou a assinatura (CryptoApi vs. XmlDsig); isso afeta quais campos do certificado são significativos.
  • Trate IsValid == false como uma condição de falha crítica em qualquer pipeline automatizado de ingestão de documentos — não exponha os metadados da assinatura de uma assinatura inválida como confiáveis.

Problemas Comuns

ProblemaCausaCorreção
DigitalSignatures.Count é 0 em um .docx assinadoO arquivo foi regravado por uma ferramenta que removeu a parte da assinaturaVerifique contra o arquivo original assinado, não uma cópia regravada
A assinatura relata IsValid = falseO conteúdo do documento foi alterado após a assinatura, ou o certificado não é confiável/expiradoTratar como inválido; não tente “reparar” a assinatura
Tentar assinar um documento não tem efeitoA assinatura não está implementada nesta edição FOSSUse Aspose.Words para .NET (comercial) para fluxos de trabalho de assinatura
CertificateHolder.Certificate lança uma exceção ao ser inspecionadoOs dados subjacentes do certificado estão malformados ou a parte da assinatura está corrompidaConfirme que o arquivo de origem é um documento assinado genuíno e não modificado

FAQ

Pode Aspose.Words FOSS para .NET assinar um documento?

Não. Esta edição pode verificar assinaturas digitais existentes, mas não pode criar novas. O método DigitalSignatureUtil.Sign() e a classe SignOptions existem na superfície API para compatibilidade estrutural, mas a assinatura não funciona aqui.

Como verifico se um documento está assinado sem carregá-lo completamente?

Chame DigitalSignatureUtil.LoadSignatures(fileName), que retorna um DigitalSignatureCollection diretamente do arquivo.

O que DigitalSignatureCollection.IsValid significa?

É true somente quando cada assinatura na coleção é individualmente válida — uma maneira rápida de verificar a integridade geral das assinaturas do documento antes de inspecionar cada DigitalSignature.

Onde obtenho os detalhes do certificado de uma assinatura?

Através de DigitalSignature.CertificateHolder.Certificate, que retorna um .NET X509Certificate2 padrão.


API Reference Resumo

Classe / MétodoDescrição
Document.DigitalSignaturesAssinaturas já anexadas a um documento carregado
DigitalSignatureUtil.LoadSignatures()Leia assinaturas de um arquivo ou fluxo sem carregar o documento completo
DigitalSignatureCollectionColeção somente leitura de objetos DigitalSignature; IsValid, Count
DigitalSignatureUma única assinatura: IsValid, SignTime, SubjectName, IssuerName, CertificateHolder
DigitalSignatureTypeEnum: CryptoApi, XmlDsig, Unknown
CertificateHolderEnvolve a assinatura X509Certificate2

Ver também

 Português