Pular para o conteúdo
Fiscal ProBiblioteca
NF-e e NFC-e · Suplemento, assinatura e protocolo

Transforms em protNFe: as duas transformações da referência

<Transforms>nfeProc › protNFe › ds:Signature › ds:SignedInfo › ds:Reference › ds:Transforms

Revisã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

Fontes oficiais

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.