Reference na assinatura de protNFe: alvo, transformações e digest
<Reference>nfeProc › protNFe › ds:Signature › ds:SignedInfo › ds:ReferenceRevisão editorial em 15 de out. de 2026. As versões e condições das regras estão indicadas ao longo do artigo.
Reference, em /nfeProc/protNFe/ds:Signature/ds:SignedInfo/ds:Reference, descreve o objeto coberto pelo resumo incluído na assinatura da resposta da SEFAZ. Na estrutura fiscal estudada há uma referência obrigatória dentro de SignedInfo; a declaração geral XMLDSig não deve ser usada para presumir múltiplas referências no perfil NF-e.
O que o grupo contém
O XSD exige Transforms, DigestMethod e DigestValue, nessa ordem. URI é obrigatório e tem comprimento mínimo de dois caracteres. Id e Type são opcionais. URI aponta para o objeto; Id identifica o próprio elemento Reference; Type, quando fornecido, descreve o tipo do objeto. Nenhum deles é a chave de acesso por definição do nome.
No protocolo, PR03/PR04 e PR90 vinculam a assinatura a infProt identificado pelo atributo Id. Não copie a URI #NFe... da assinatura do emitente: ali o contexto é a nota e seu infNFe, não a resposta.
Como conferir a cadeia completa
Localize a referência da assinatura sob protNFe. Resolva o alvo da URI no documento original e verifique que é o infProt esperado, sem IDs ambíguos. Aplique as transformações declaradas, calcule o resumo pelo algoritmo indicado e compare os bytes ao DigestValue decodificado de base64. Isso é a verificação da referência.
Depois há a verificação de SignatureValue sobre SignedInfo canonicalizado e a avaliação do certificado/signatário. Um digest coincidente, sem assinatura confiável, não autentica a resposta. Também não substitui a leitura de cStat nem uma consulta da situação fiscal atual.
Cenários de diagnóstico
Se a URI identifica um elemento que não existe, investigue perda de atributos ou montagem incorreta do XML. Se identifica dois elementos, há ambiguidade de ID e a verificação não deve escolher o primeiro por conveniência. Se o alvo existe mas o digest diverge, compare a resposta original, as transformações e o tratamento dos namespaces.
Exemplo textual: uma referência local aponta para a identificação do infProt recebido. Um parser que pesquisa somente pelo nome Id, sem associá-lo ao elemento esperado, pode usar outro alvo. Corrigir o resolver é diferente de editar a resposta. Não há XML completo de Reference aqui: os dados originais do protocolo são necessários para demonstrar uma referência e um digest reais, e inventá-los produziria falsa aparência de integridade.
URIs externas desconhecidas não devem provocar downloads automáticos. O objetivo da conferência fiscal é identificar o grupo previsto no retorno, não permitir acesso arbitrário a recursos pela biblioteca de assinatura.
Leituras relacionadas
- URI — /nfeProc/protNFe/ds:Signature/ds:SignedInfo/ds:Reference/@URI
- DigestValue — /nfeProc/protNFe/ds:Signature/ds:SignedInfo/ds:Reference/ds:DigestValue
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- 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:ReferenceType
- 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.