DigestValue da NF-e: como conferir o resumo sem confundir assinatura
<DigestValue>nfeProc › NFe › ds:Signature › ds:SignedInfo › ds:Reference › ds:DigestValueRevisão editorial em 15 de out. de 2026. As versões e condições das regras estão indicadas ao longo do artigo.
DigestValue é o resumo criptográfico dos dados indicados por Reference, representado em Base64. Na assinatura fiscal da NF-e, a referência aponta para infNFe e o método declarado é SHA-1.
Caminho desta página: /nfeProc/NFe/ds:Signature/ds:SignedInfo/ds:Reference/ds:DigestValue. O alias ds neste XPath representa o namespace http://www.w3.org/2000/09/xmldsig#; ele permite localizar o elemento, mas não exige esse prefixo na serialização fiscal.
Como se chega ao valor?
O verificador resolve a URI ao infNFe correto, aplica as transformações e calcula SHA-1 da representação resultante. O algoritmo produz 20 bytes; sua codificação Base64 usual tem 28 caracteres, com preenchimento. O tipo DigestValueType do schema deriva de base64Binary, mas não impõe sozinho que esses bytes sejam o SHA-1 correto daquele alvo.
Não há XML completo com digest inventado neste artigo. O valor operacional depende do conteúdo original e das transformações. Recalcular apenas o hash do arquivo salvo, inclusive assinatura e protocolo, é uma comparação diferente.
Qual a diferença para SignatureValue e digVal?
SignatureValue é a assinatura de SignedInfo canonicalizado com a chave privada. DigestValue é o hash do objeto referenciado e está dentro de SignedInfo. Para validar a assinatura, é necessário conferir o resumo e depois a assinatura final.
protNFe/infProt/digVal é o digest da NF-e processada retornado pela SEFAZ, usado na conferência de integridade do original. Ele não é a assinatura opcional do protocolo nem o DigestValue dessa eventual assinatura. Compare valores referentes à mesma nota e ao mesmo objeto; caminhos diferentes podem representar operações diferentes.
XMLDSig: processamento e elementos.
Como analisar valores que não conferem?
Cenário 1: duas exportações da mesma nota têm DigestValue igual, mas uma ganhou espaços de texto em infNFe após assinar. O resumo armazenado pode ter permanecido igual; é preciso recalculá-lo sobre o arquivo recebido para detectar a alteração. Cenário 2: Base64 difere visualmente por espaços permitidos na codificação. Compare bytes decodificados e o resultado do verificador, não apenas aparência.
Confirme primeiro a URI, o alvo único, os métodos e o conteúdo original. Não sobrescreva o digest para igualar a comparação: ele está dentro de SignedInfo e participa da assinatura. Preserve a evidência, ajuste a origem comprovada do problema em ambiente controlado e mantenha a autorização/situação fiscal como verificações separadas.
MOC: perfil de assinatura, pp. 53–56.
Fontes e contexto
Schema específico XMLDSig da NF-e — PL_010f_v1.04 / xmldsig-core-schema_v1.01.xsd; Leiaute da NF-e e protocolo — PL_010f_v1.04 / leiauteNFe_v4.00.xsd; MOC — Visão Geral — 7.0; XML Signature Syntax and Processing — 1.1, Recommendation 11/04/2013; XML Schema Part 2: Datatypes — Second Edition, 28/10/2004.
Referência técnica para integração
- XPath completo
/nfeProc/NFe/ds:Signature/ds:SignedInfo/ds:Reference/ds:DigestValue- Namespace
http://www.w3.org/2000/09/xmldsig#- Leiaute
- 4.00 · PL_010e_v1.02
- Ocorrências no XSD
- 1–1 no contexto do elemento pai
- Tipo
- ds:DigestValueType · base64Binary
- Preenchimento no catálogo
- Obrigatório
A ocorrência vale dentro da estrutura XML: um campo obrigatório em um grupo opcional não torna esse grupo obrigatório. A aplicação fiscal depende da operação e da versão da regra.