Algorithm de Transform em protNFe: métodos permitidos na cadeia
@AlgorithmnfeProc › protNFe › ds:Signature › ds:SignedInfo › ds:Reference › ds:Transforms › ds:Transform › @AlgorithmRevisão editorial em 15 de out. de 2026. As versões e condições das regras estão indicadas ao longo do artigo.
Algorithm de Transform identifica uma transformação aplicada ao objeto da referência da assinatura do protocolo. Está em /nfeProc/protNFe/ds:Signature/ds:SignedInfo/ds:Reference/ds:Transforms/ds:Transform/@Algorithm. Ele é obrigatório e seu domínio vem de TTransformURI.
Os dois identificadores do pacote fiscal
PL_010f_v1.04 enumera somente http://www.w3.org/2000/09/xmldsig#enveloped-signature e http://www.w3.org/TR/2001/REC-xml-c14n-20010315. O primeiro identifica a transformação de assinatura envelopada; o segundo, a canonicalização C14N 1.0 sem comentários.
O pai Transforms exige duas etapas e impõe algoritmos distintos. Por isso, duas ocorrências com URI C14N não são uma alternativa às duas transformações previstas. A ordem declarada é relevante para o processamento e precisa ser preservada.
Fragmento para reconhecer a URI
Fragmento sintético parcial de uma etapa; ele não constitui a cadeia completa nem autentica um protocolo:
<Transform xmlns="http://www.w3.org/2000/09/xmldsig#" Algorithm="http://www.w3.org/2000/09/xmldsig#enveloped-signature"/>
Algorithm contém o nome do método. Reference/@URI, em outro nível, identifica o objeto de entrada. Confundir os dois faz o verificador procurar um recurso onde existe apenas um identificador de transformação. Nenhuma dessas URIs autoriza consulta externa arbitrária.
Suporte da biblioteca não amplia o perfil
Uma biblioteca XMLDSig pode implementar XPath, XSLT ou outros métodos. Isso não os inclui no TTransformURI fiscal. Mesmo a existência de um filho XPath no tipo estrutural de Transform não libera a URI de filtro XPath, ausente da enumeração.
Exemplo: o validador genérico aceita uma transformação XPath que o XSD fiscal rejeita. A divergência é de perfil aceito, e não demonstra que basta instalar outra biblioteca ou alterar a URI. Confira o documento, o schema e a origem da resposta.
Diagnóstico antes de qualquer correção
Compare a URI integral, inclusive fragmento após #, e diferencie ausência do atributo, valor fora da enumeração e duplicidade no pai. Se a estrutura estiver correta mas o digest divergir, examine alvo e resultados da cadeia. Um método aceito não garante cálculo correto.
A correção cabível pode ser no leitor, no pacote selecionado ou na recuperação dos bytes originais. Não substitua o Algorithm de protocolo assinado por tentativa e não retire transformações para evitar erro. A identidade do signatário, a assinatura e o status da nota continuam sendo verificações próprias.
Leituras relacionadas
- Transform — /nfeProc/protNFe/ds:Signature/ds:SignedInfo/ds:Reference/ds:Transforms/ds:Transform
- XPath — /nfeProc/protNFe/ds:Signature/ds:SignedInfo/ds:Reference/ds:Transforms/ds:Transform/ds:XPath
Fontes oficiais
- Schema XMLDSig NF-e/NFC-e — PL_010f_v1.04: SignatureValueType, SignedInfoType, ReferenceType, TransformsType e TTransformURI.
- 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/ds:Transform/@Algorithm- Namespace
Não informado- Leiaute
- 4.00 · PL_010e_v1.02
- Ocorrências no XSD
- 1–1 no contexto do elemento pai
- Tipo
- ds:TTransformURI · anyURI
- 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.
- enumeration
http://www.w3.org/2000/09/xmldsig#enveloped-signature- enumeration
http://www.w3.org/TR/2001/REC-xml-c14n-20010315