Transforms em protNFe: as duas transformações da referência
<Transforms>nfeProc › protNFe › ds:Signature › ds:SignedInfo › ds:Reference › ds:TransformsRevisão editorial em 15 de out. de 2026. As versões e condições das regras estão indicadas ao longo do artigo.
Transforms, em /nfeProc/protNFe/ds:Signature/ds:SignedInfo/ds:Reference/ds:Transforms, descreve o processamento aplicado ao objeto referenciado antes de calcular seu DigestValue. Esse grupo faz parte da assinatura do protocolo da SEFAZ, e não de uma transformação de dados fiscais feita pelo emissor.
Quantas transformações o schema exige?
No XMLDSig específico do pacote PL_010f_v1.04, Reference exige um Transforms com exatamente dois elementos Transform. O tipo TTransformURI admite somente as URIs de enveloped-signature e Canonical XML 1.0. A declaração unique_Transf_Alg exige unicidade de Algorithm dentro da lista. Portanto, repetir duas vezes a mesma URI não satisfaz a restrição, ainda que existam dois elementos.
O conjunto permitido e a quantidade não devem ser inferidos da especificação XMLDSig geral, que é mais ampla. O schema fiscal restringe a estrutura que deve ser conferida.
O que cada etapa faz
A transformação enveloped-signature exclui a assinatura envolvida do conjunto de nós de entrada conforme sua definição XMLDSig. A canonicalização converte o XML resultante em representação padronizada. A cadeia é aplicada na ordem em que aparece; não trate os filhos como um conjunto desordenado e não os reorganize na resposta.
CanonicalizationMethod de SignedInfo é outra etapa: prepara SignedInfo para verificar SignatureValue. Aqui, Transforms prepara o objeto de Reference para o digest. No protocolo, o objeto previsto no leiaute é infProt, por PR03/PR04 e PR90.
Fragmento da cadeia
Fragmento sintético parcial da estrutura, sem objeto referenciado, digest ou assinatura operacional:
<Transforms xmlns="http://www.w3.org/2000/09/xmldsig#">
<Transform Algorithm="http://www.w3.org/2000/09/xmldsig#enveloped-signature"/>
<Transform Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315"/>
</Transforms>
Os métodos são identificadores; não provocam consulta remota. A aceitação estrutural do fragmento não comprova que uma biblioteca aplicou corretamente as etapas sobre um retorno real.
Como investigar erros da cadeia
Se faltou Transform ou há três ocorrências, confira a montagem original e o pacote aplicável. Se dois métodos se repetem, examine a unicidade, não apenas a quantidade. Se o digest diverge com a estrutura correta, registre a URI do alvo e os resultados intermediários da cadeia em ambiente de diagnóstico, sem divulgar dados protegidos.
Uma biblioteca que calcula o hash do documento completo sem resolver a Reference pode produzir outro resultado. Corrija o verificador quando a causa estiver demonstrada, preservando a resposta. Não elimine uma transformação, acrescente XPath ou reordene o XML assinado para obter sucesso.
Leituras relacionadas
- Transform — /nfeProc/protNFe/ds:Signature/ds:SignedInfo/ds:Reference/ds:Transforms/ds:Transform
- Algorithm — /nfeProc/protNFe/ds:Signature/ds:SignedInfo/ds:Reference/ds:Transforms/ds:Transform/@Algorithm
Fontes oficiais
- Schema XMLDSig NF-e/NFC-e — PL_010f_v1.04: SignatureValueType, SignedInfoType, ReferenceType, TransformsType e TTransformURI.
- 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:Transforms- 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:TransformsType
- 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.