Neste artigo veremos como assinar um documento XML, procedimento necessário para diversas operações. A nota fiscal eletrônica de produtos/serviços é um bom exemplo, e que exige a assinatura do documento usando um certificado digital válido instalado na sua máquina, token, smartcards etc…
Os certificados utilizados normalmente são o tipo A1 e A3, sendo que o primeiro é armazenado no computador do solicitante, enquanto que o segundo é guardado em cartões inteligentes (smartcards) ou tokens protegidos por senha.
Vamos ao projeto!
1 – Comece iniciando um novo projeto Windows Forms e nomeando-o como AssinarXML.
2 – Configure o formulário principal da seguinte maneira:
Agora que o formulário está configurado, vamos ao código.
1 – Adicione a seguinte referência em seu projeto System.Security.
2 – Importe os seguintes namespaces
3 – Crie um novo procedimento com o nome AssinarDocumentoXml(), e fique a vontade para escolher o nome que quiser.
4 – Inicie um novo bloco Try…Catch imediatamente antes da instrução End Sub, para pegar as exceções, e dentro desse bloco vamos começar a programar.
5 – Pegamos o conteúdo do XML original usando StreamReader e guardamos o resultado na variável srtXML.
6 – Instanciamos um novo objeto que representa um certificado e selecionados um certificado válido usando o número serial como parâmetro.
7 – Verifique se o certificado foi selecionado.
8 – Carregue o certificado e o documento XML para a memória.
9 – Após verificar se a tag de assinatura existe.
10 – O trecho abaixo é bem interessante, ele define a assinatura do XML.
11 – Adicione as informações do certificado e salve o documento.
Agora que já criamos o procedimento responsável por assinar nosso documento, vamos configurar nosso formulário que foi criado logo acima.
1 – No botão Selecionar XML adicionamos o seguinte código:
2 – Vamos criar agora o procedimento que seleciona o certificado no computador.
3 – Agora é só adicionar os códigos abaixo no evento click dos botões Selecionar Certificado e Assinar o XML.
Nesse exemplo,assinei uma Nota Fiscal Eletrônica de serviço, onde o uso da assinatura digital é obrigatório. Lembrando que para assinar um documento XML você precisa ter o certificado correto.
Download do projeto: http://www.zumodrive.com/share/cNetMWVjZT
Abraço e até a próxima!