CanonicalizationMethod no protocolo: normalização de SignedInfo
<CanonicalizationMethod>nfeProc › protNFe › ds:Signature › ds:SignedInfo › ds:CanonicalizationMethodRevisão editorial em 15 de out. de 2026. As versões e condições das regras estão indicadas ao longo do artigo.
CanonicalizationMethod define como SignedInfo será transformado em uma representação padronizada para a verificação da assinatura do protocolo. Seu caminho é /nfeProc/protNFe/ds:Signature/ds:SignedInfo/ds:CanonicalizationMethod. Ele não normaliza automaticamente toda a NF-e nem torna qualquer alteração posterior inofensiva.
Qual método o pacote fiscal declara?
No XSD XMLDSig de PL_010f_v1.04, o elemento é obrigatório dentro de SignedInfo e seu atributo Algorithm é obrigatório, com valor fixo http://www.w3.org/TR/2001/REC-xml-c14n-20010315. Trata-se do identificador de Canonical XML 1.0 sem comentários. Essa URI identifica o algoritmo: a aplicação não precisa baixar uma página da internet para cada verificação.
O perfil fiscal é mais restrito que a família geral XMLDSig. O fato de uma biblioteca conhecer outras canonicalizações não permite trocar o método de uma resposta da SEFAZ por aquele que parecer mais moderno.
Por que não é o mesmo que Transforms?
O método aqui estudado atua sobre SignedInfo antes da verificação de SignatureValue. Já Reference/Transforms atua sobre o objeto referenciado antes de calcular seu DigestValue. Pode haver a mesma URI C14N nos dois lugares, mas as entradas e as finalidades são distintas.
Canonicalização padroniza aspectos da representação XML; não recupera dados alterados e não é sinônimo de remover espaços livremente. Espaços em texto e o contexto de namespaces podem importar. Uma assinatura não deve ser testada depois de reconstruir arbitrariamente o documento.
Fragmento e investigação
Este fragmento sintético representa somente a declaração do método; não é uma assinatura nem um protocolo completo:
<CanonicalizationMethod xmlns="http://www.w3.org/2000/09/xmldsig#" Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315"/>
O namespace identifica o elemento XMLDSig; Algorithm é atributo sem prefixo. O trecho não produz hash ou assinatura.
Se o método declarado não for reconhecido, compare a URI integral, incluindo maiúsculas, caminho e sufixos, com o pacote utilizado. Se o método for reconhecido e a assinatura falhar, compare o XML original com o armazenado e examine a canonicalização de SignedInfo, não apenas o digest da referência. Registre os dois resultados separadamente. Preserve o retorno e investigue a integração; não troque o atributo em uma resposta já assinada. A aprovação no XSD confirma somente estrutura e valor declarado.
Leituras relacionadas
- Algorithm — /nfeProc/protNFe/ds:Signature/ds:SignedInfo/ds:CanonicalizationMethod/@Algorithm
- Transforms — /nfeProc/protNFe/ds:Signature/ds:SignedInfo/ds:Reference/ds:Transforms
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.
- NT 2025.002 RTC — 1.52: seção 5.1, p. 11; PR03–PR90, p. 13.
Referência técnica para integração
- XPath completo
/nfeProc/protNFe/ds:Signature/ds:SignedInfo/ds:CanonicalizationMethod- 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
- inline:complexType
- 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.