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 oDocumentcompleto quando você só precisa verificar se um arquivo está assinado — isso evita o custo de analisar todo o corpo do documento. - Verifique
DigitalSignatureCollection.IsValidprimeiro para uma aprovação/rejeição rápida antes de iterar os valores individuais deDigitalSignature.IsValid. SignatureTypeinforma qual mecanismo de assinatura gerou a assinatura (CryptoApivs.XmlDsig); isso afeta quais campos do certificado são significativos.- Trate
IsValid == falsecomo 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
| Problema | Causa | Correção |
|---|---|---|
DigitalSignatures.Count é 0 em um .docx assinado | O arquivo foi regravado por uma ferramenta que removeu a parte da assinatura | Verifique contra o arquivo original assinado, não uma cópia regravada |
A assinatura relata IsValid = false | O conteúdo do documento foi alterado após a assinatura, ou o certificado não é confiável/expirado | Tratar como inválido; não tente “reparar” a assinatura |
| Tentar assinar um documento não tem efeito | A assinatura não está implementada nesta edição FOSS | Use Aspose.Words para .NET (comercial) para fluxos de trabalho de assinatura |
CertificateHolder.Certificate lança uma exceção ao ser inspecionado | Os dados subjacentes do certificado estão malformados ou a parte da assinatura está corrompida | Confirme 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étodo | Descrição |
|---|---|
Document.DigitalSignatures | Assinaturas já anexadas a um documento carregado |
DigitalSignatureUtil.LoadSignatures() | Leia assinaturas de um arquivo ou fluxo sem carregar o documento completo |
DigitalSignatureCollection | Coleção somente leitura de objetos DigitalSignature; IsValid, Count |
DigitalSignature | Uma única assinatura: IsValid, SignTime, SubjectName, IssuerName, CertificateHolder |
DigitalSignatureType | Enum: CryptoApi, XmlDsig, Unknown |
CertificateHolder | Envolve a assinatura X509Certificate2 |