.NET

20 jun, 2011

Assinando um documento XML

Publicidade

 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!