Glossário

XMLDSig

Atualizado em · 4 min de leitura

Definição

XMLDSig é o padrão internacional que define como assinar digitalmente arquivos XML. Ele especifica onde a assinatura fica no arquivo, quais partes são protegidas e como verificar sua validade. No Brasil, é a base técnica da assinatura de documentos fiscais eletrônicos como NF-e, NFC-e, CT-e, MDF-e e muitas NFS-e.

Também conhecido como: XMLDSig, XML Digital Signature, XML Signature, XML-DSig, XML DSig, Assinatura digital XML

O que é XMLDSig, em palavras simples?

XMLDSig é a abreviação de XML Digital Signature, uma recomendação do W3C, o consórcio que define padrões da web. Ela descreve uma forma padronizada de colocar uma assinatura digital dentro de um arquivo XML ou de associá-la a ele.

Funciona como um lacre eletrônico. Quem recebe o arquivo consegue confirmar duas coisas: quem assinou e se o conteúdo foi alterado depois da assinatura. Se alguém mudar um único caractere do trecho assinado, a verificação falha.

Para que serve o XMLDSig nos documentos fiscais?

Uma nota fiscal eletrônica é um arquivo XML com validade jurídica. Para que a SEFAZ ou a prefeitura aceite esse arquivo, ele precisa estar assinado com o certificado digital da empresa emitente, geralmente um certificado do tipo A1 ou A3 no padrão ICP-Brasil.

O XMLDSig é a regra técnica que diz como essa assinatura deve ser montada. Ele garante autoria, já que só o dono do certificado pode assinar, e integridade, já que qualquer alteração posterior invalida o documento. Sem uma assinatura válida, o documento é rejeitado e não recebe autorização de uso.

Como funciona uma assinatura XMLDSig?

Primeiro, o trecho do XML que será protegido passa por uma canonicalização, uma padronização que elimina diferenças irrelevantes, como espaços e ordem de atributos. Depois, calcula-se um resumo criptográfico (hash) desse conteúdo, chamado DigestValue.

Em seguida, esse resumo e as informações sobre os algoritmos usados são reunidos em um bloco chamado SignedInfo, que é assinado com a chave privada do certificado. O resultado é o SignatureValue. Por fim, o certificado público é incluído no bloco KeyInfo, para que qualquer pessoa possa verificar a assinatura usando a chave pública correspondente.

Quais são as partes de uma assinatura XMLDSig?

A assinatura fica dentro de um elemento chamado Signature. Nele aparecem: SignedInfo, que descreve o que foi assinado e com quais algoritmos; Reference, que aponta para o trecho protegido, normalmente pelo atributo Id; DigestValue, com o hash do conteúdo; SignatureValue, com a assinatura propriamente dita; e KeyInfo, que traz o certificado X.509 do assinante.

Nos documentos fiscais brasileiros, a Reference costuma apontar para o grupo principal de informações, como o infNFe na NF-e, identificado pelo Id que contém a chave de acesso.

Quais são os tipos de assinatura XMLDSig?

O padrão prevê três formatos. Na assinatura envelopada (enveloped), ela fica dentro do próprio XML assinado. Na envolvente (enveloping), o conteúdo assinado fica dentro da assinatura. Na destacada (detached), a assinatura fica separada do conteúdo.

Os documentos fiscais eletrônicos brasileiros usam a assinatura envelopada: o elemento Signature fica dentro do arquivo da nota, logo após o bloco de informações assinado. Os detalhes exatos, como algoritmos e transformações aceitas, são definidos no leiaute e nas notas técnicas de cada documento.

Por que a assinatura XMLDSig costuma gerar rejeições?

Por ser muito sensível, pequenos detalhes quebram a assinatura: alterar o XML depois de assinado, formatar o arquivo com quebras de linha, usar namespace incorreto, canonicalização diferente da esperada ou um certificado vencido ou revogado. O resultado é uma rejeição fiscal por assinatura inválida ou digest divergente.

Por isso, muitos sistemas preferem delegar essa etapa a uma API fiscal. O sistema envia os dados da venda, e a infraestrutura de emissão monta o XML, assina com o certificado cadastrado e transmite ao órgão autorizador, evitando que cada equipe precise dominar os detalhes do padrão.

Exemplos de XMLDSig

  • Um ERP envia os dados de uma venda para uma API fiscal, que gera o XML da NF-e, aplica a assinatura XMLDSig envelopada com o certificado A1 da empresa e transmite o arquivo à SEFAZ.
  • Uma equipe de desenvolvimento recebe uma rejeição por assinatura inválida porque o sistema reformatava o XML com indentação depois de assiná-lo, alterando o conteúdo protegido.
  • Um evento de cancelamento de NF-e também é um XML assinado com XMLDSig, com a Reference apontando para o Id do grupo de informações do evento.
  • Um escritório contábil importa XMLs de notas recebidas e usa a validação da assinatura XMLDSig para confirmar que os arquivos não foram adulterados.

Perguntas frequentes

XMLDSig é a mesma coisa que certificado digital?

Não. O certificado digital é a identidade eletrônica da empresa, com o par de chaves. O XMLDSig é o padrão que define como usar esse certificado para assinar um arquivo XML.

Posso editar o XML de uma nota depois de assinado?

Não. Qualquer alteração no trecho assinado invalida a assinatura. Se for preciso corrigir algo, o XML deve ser gerado e assinado novamente antes do envio, ou, após a autorização, deve-se usar os eventos fiscais previstos, como carta de correção ou cancelamento.

Toda NFS-e usa XMLDSig?

Muitas usam, incluindo o Padrão Nacional da NFS-e, mas alguns municípios têm regras próprias de envio e assinatura. Por isso, os requisitos variam conforme a prefeitura e o leiaute adotado.

Preciso implementar XMLDSig se uso uma API fiscal?

Em geral, não. A API fiscal recebe os dados, monta o XML e faz a assinatura com o certificado cadastrado. Seu sistema só precisa enviar as informações corretas e tratar o retorno.

Atualizado em · Como produzimos este glossário