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
