DigestValue da assinatura de protNFe: resumo do conteúdo protegido
<DigestValue>nfeProc › protNFe › 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, em /nfeProc/protNFe/ds:Signature/ds:SignedInfo/ds:Reference/ds:DigestValue, contém o resumo do objeto referenciado na assinatura da resposta da SEFAZ, após as transformações declaradas. Ele não é a assinatura digital em si. O schema o declara obrigatório dentro de Reference e do tipo base64Binary.
Que valor deve ser comparado?
O objeto vem de Reference/@URI. O processamento vem de Transforms e o algoritmo vem de DigestMethod. No perfil PL_010f_v1.04 o método é SHA-1, cujo resultado tem 20 bytes. DigestValue representa esses bytes em base64; não se trata de um número fiscal nem de um texto de livre preenchimento.
A verificação consiste em calcular novamente o resumo do alvo original e compará-lo aos bytes decodificados do XML. Apenas constatar que o texto é base64 válido não verifica essa igualdade. O tipo base64Binary, por si, não impõe tamanho de 20 bytes: a relação com o algoritmo é também uma conferência criptográfica.
DigestValue, digVal e SignatureValue
DigestValue desta Reference é o resumo do conteúdo protegido pela assinatura do protocolo. infProt/digVal é o digest da NF-e processada, usado para conferir a correspondência com a nota original. SignatureValue contém o resultado da assinatura de SignedInfo. Mesmo que todos apareçam codificados em base64, não são intercambiáveis.
Exemplo de diagnóstico: a integração compara infProt/digVal com a Reference da assinatura de protNFe e acusa diferença. Antes de concluir que houve alteração, identifique o alvo de cada digest. O primeiro se relaciona à NF-e; o segundo, ao grupo referenciado pela assinatura da resposta.
Bytes didáticos e limites da verificação
Este fragmento sintético ilustra somente a codificação base64 de um byte zero. AA== não é um digest SHA-1 de 20 bytes, não comprova integridade e não tem validade operacional:
<DigestValue xmlns="http://www.w3.org/2000/09/xmldsig#">AA==</DigestValue>
O fragmento cabe no domínio lexical amplo do XSD; isso demonstra justamente por que validar o tipo não verifica o cálculo do resumo. Não o use em documento fiscal.
Como investigar a divergência real
Preserve o retorno original e confira alvo inequívoco, conteúdo, transformações, algoritmo e decodificação. Se a cópia foi reconstruída, compare-a com os bytes recebidos antes de atribuir a falha à SEFAZ. Recupere a fonte original quando necessário; não substitua o digest por um valor recalculado em documento já assinado.
Depois da referência, confira SignatureValue e confiança no certificado. Por fim, correlacione chave, ambiente e status fiscal: um resumo correto não significa autorização nem situação atual regular após eventos.
Leituras relacionadas
- digVal — /nfeProc/protNFe/infProt/digVal
- SignatureMethod — /nfeProc/protNFe/ds:Signature/ds:SignedInfo/ds:SignatureMethod
Fontes oficiais
- Schema XMLDSig NF-e/NFC-e — PL_010f_v1.04: SignatureValueType, SignedInfoType, ReferenceType, TransformsType e TTransformURI.
- Leiaute NF-e/NFC-e — PL_010f_v1.04: TProtNFe, linhas 6686–6770.
- NT 2025.002 RTC — 1.52: seção 5.1, p. 11; PR03–PR90, p. 13.
- XML Signature Syntax and Processing — 1.1: seções 3.2, 4.3, 4.4 e 6: processamento, referências, IDs e algoritmos.
Referência técnica para integração
- XPath completo
/nfeProc/protNFe/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
- Condicional
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.