Assinatura Digital XML em ambiente WIN32

Documentos relacionados
Demonstração de uso da DLL NFe_Util em Visual Data Flex 2008 Studio 14.1

REP idx Manual do desenvolvedor

DISTRIBUINDO SUA APLICAÇÃO

Processo de atualização para NFe 4.0

Manual de instalação, configuração e utilização do Enviador XML

Manual de acesso ao Portal do Contribuinte - SIGET

Manual do Usuário Assinador Prodist e-financeira

Manual de instalação do software CSIBackup Versão 1.0

VERIFICAÇÃO BÁSICA DE CONFIGURAÇÃO DE ECF DARUMA

QBalança Biblioteca de comunicação com balanças

Manual do Usuário. Cartosoft - Recibo de Envio de Selos Eletrônicos

Manual do Sistema Assinador Livre

Manual do Usuário Assinador Prodist e-financeira

DISTRIBUINDO SUA APLICAÇÃO

Instalação Serviço de Acompanhamento de Projeto (PCSIS007) Sistema de Gestão da Qualidade

Manual de Instalação Emissor NF-e Advanced SAIB 3.10 Versão e posteriores

Nota Fiscal Eletrônica Versão 2.0

MANUAL PARA UTILIZAÇÃO DA ASSINATURA DIGITAL

Manual SISTEMA GERENCIADOR DE SENHAS Versão GUICHÊ

BAIXA E INSTALAÇÃO DE CERTIFICADO A1. Versão 1.0r0 de 19 de Janeiro Classificação: Ostensivo

Guia de Instalação e Inicialização. Para DataPage+ 2012

Florianópolis, 11 de março de Sped Fiscal EFD Manual de Geração do Arquivo

Manual de atualização para uso do xml versão 3.10

BAIXA E INSTALAÇÃO DO CERTIFICADO DIGITAL. A3 em token

DRIVER LYNX-IO ACESSO A I/O NO WINDOWS NT 4.0

A1 Manual Certificado Digital A1 no Windows

Título: SEFAZ RS Como configurar o sistema para importar os arquivos XML de NF-e através do Web Service diretamente do SEFAZ Certificado A1?

Manual de Instalação Recuperação Fiscal

Procedimentos Instalação de DLL da Nota Fiscal Eletrônica

Guia de Uso - Mobile ID

Instalação do SQL Server 2008

Automatização Notas Destinadas

Manual de Integração. Versão 1.0.2

Índice. Manual De instalação ProjectNet Manager

MANUAL DE INSTALAÇÃO. LSoft NFe

Documentação de análise de erro

Linguagem de Programação II Programação Orientada a Objetos. Ambientes de Programação

2017/07/25 19:38 1/10 DocFix

Configurando o Ambiente de Desenvolvimento Android Studio No Windows Antes de qualquer trabalho ser iniciado no desenvolvimento de uma aplicação

Guia para geração de certificado digital A1 em computador MANUAL DO USUÁRIO R 2. 0

PASSO A PASSO - UTILIZAÇÃO DO ASSINADOR DIGITAL LOCAL - ARISP. Adicionando Arquivos no Projeto de Assinatura

Programa <AssinadorRS>

G5 CONTROL MÓDULO HUNTER

MANUAL DE INSTALAÇÃO

MANUAL DE INSTALAÇÃO DO CERTIFICADO DIGITAL A1

Manual de Utilização

MANUAL DE USO ASSINADOR DE DOCUMENTOS DIGITAIS PROTESTO ELETRÔNICO

BAIXA E INSTALAÇÃO DO CERTIFICADO DIGITAL. A3 em cartão + leitora

Configuração do assinador Shodō

BAIXA DO CERTIFICADO DIGITAL SERPRO MOZILLA FIREFOX GOOGLE CHROME INTERNET EXPLORER SOLUTI

GRUPO: Rafael Igor Vanderlei Vieira

GUIA RAPIDO DE INSTALAÇÃO D-SAT VINCULAÇÃO D-SAT AO CNPJ DO CONTRIBUINTE

Manual de Instalação do Módulo de Segurança MMA SISGEN

Procedimentos para Instalação do Sisloc (Estação de Trabalho) versão

Tutorial Instalador de configuração - Eduroam. 14/10/2016 Ver. 1.1

Nota Fiscal Consumidor

Tutorial de Instalação - Emissor NFe 4G

Busca XML - Cliente. *Observação* Se o certificado do cliente não for armazenado nessa tela a pesquisa da NFE para a empresa não será realizada.

SW Ativação Linker SAT II

Tutorial Eduroam - Windows 7 Passo a passo. 14/10/2016 Ver. 1

Manual de Instalação do Plugin de Assinatura Digital para Windows 7, 8, 10, XP e Vista

MANUAL DE EMISSÃO DE CERTIFICADO DIGITAL A1

Título: Como configurar o gerenciador Busca NF-e no meu Cliente do Escritório?

Validação do Schema (Esquema) do XML da NFe / CTe / MDFe

IDES E PROGRAMAÇÃO. Prof. Dr. Cláudio Fabiano Motta Toledo PAE: Maurício A Dias

OASyS Informática. Notas Fiscais de Serviço (NFS-e)

ADS Assinador Digital Soft Guia do usuário Instalação e configuração ADS ASSINADOR DIGITAL SOFT - GUIA DO USUÁRIO

Manual de Instalação de Software SoapAdmin3.5

WINTHOR UPGRADE VERSÃO 2

Manual de Utilização. Gerenciador do Token Athena

Índice. 1. Introdução Instalação: Eclipse e Android Primeira aplicação em Android... 11

Procedimentos para download e instalação no Ubuntu 8.04

Para maiores informações a respeito do esocial acesse

Manual de instalação do Microsoft SQL Server 2008 R2 Express no Windows 10

LINX DMS Apollo/BRAVOS Distribuição de Documentos Fiscais Eletrônicos 1 / 18

MANUAL DE INSTALAÇÃO DO GERENCIADOR DO CARTÃO CRIPTOGRÁFICO E TOKEN SAFRAN SAFESIGN

MANUAL DE EMISSÃO E INSTALAÇÃO DO CERTIFICADO TIPO A1 (INTERNET EXPLORER)

Instrução de Trabalho: Instalar Client

Instalação do SQL Server 2008 R2

Instalação do Banco de Dados

LINX DMS NF-e. Linx Sistemas

COMO INSTALAR O CATÁLOGO

Sophos SafeGuard Enterprise 8.0.1

Procedimento Instalação Impressora Servidor de impressão/quota

Para críticas e sugestões, envie para

MANUAL DE INSTALAÇÃO SISTEMA DE GERÊNCIA CONSCIUS

Instalação do SQL Server 2014

Manual de Instalação e Utilização Módulo de emissão de Notas Fiscais Eletrônicas Sysfar

INSTALAÇÃO DO WORKMOTOR FREE

Cartilha da Nota Fiscal Eletrônica 4.0 Hábil Empresarial (Profissional, Compacta e Super Compacta)

TUTORIAL DE INSTALAÇÃO DO AMBIENTE DE DESENVOLVIMENTO ANDROID NO UBUNTU

a) Acesse o endereço e clique no botão [EMITIR]:

Guia de Uso. Certisign MobileID - Apple IOS

Sobre o Visual C

Manual de Instalação do Programa Conexão Digital Fiscal CDF. Versão 2.0.0

Desenho Arquitetônico

Atualizações do sistema Adendo do usuário

Manual de Instrução: LG MG320c - Versão Windows LG MG320C

Transcrição:

Assinatura Digital XML em ambiente WIN32 Exemplo de uso de DLL de Assinatura Digital XML escrita em C#.NET por aplicação WIN32 (Delphi 7). Os desenvolvedores que utilizam linguagem de plataforma WIN32 enfrentam uma maior dificuldade para implementar a assinatura digital XML em sua aplicação em razão da inexistência de suporte nativo para a linguagem utilizada (Delphi 5/6/7, VB 5/6, etc.), o que exige a aquisição de framework de terceiros ou a migração para uma plataforma com suporte a assinatura digital XML nativo. Para as pequenas e médias empresas, seja qual for a solução, a situação não é muito confortável, pois implica em necessidade de investimento e aprendizado de novas tecnologias, que nem sempre estão disponíveis, além da perda dos investimentos realizado no desenvolvimento de suas aplicações em uso. Para os pequenos e médios provedores de solução e desenvolvedores independentes a situação não é melhor, apesar de a situação atual significar uma grande oportunidade de negócios, muitos correm o risco de perder anos de trabalho e investimento por não conseguir se adequar à realidade com a velocidade que o mercado exige. Uma solução interessante é o uso de DLL de Assinatura Digital XML escrita em.net (C#, VB, etc) para evitar aquisição de componentes de terceiros ou a migração de plataforma de desenvolvimento. Apesar da necessidade de instalação do.net Framework (2.0) da Microsoft, a solução é bastante interessante pelos seguintes aspectos: a solução de emissão de NF existente escrita em Delphi 5/6/7, VB 5.0/6.0 ou qualquer outra linguagem pode ser adequada com facilidade para emitir a NF-e; não ter custos de licenciamento e aquisição de componentes de terceiros para assinatura digital XML; proporcionar total domínio do processo de assinatura digital XML e emissão da NFe; promove a competitividade do desenvolvedor independente no mercado de software; permite que as empresas continuem com desenvolvimento interno de aplicações; reduz o montante de investimentos para adoção de novas tecnologias e conhecimentos; facilita o cumprimento de novas obrigações acessórias que tendem a assimilar as novas tecnologias. 1

A criação de DLL de Assinatura Digital XML em ambiente.net é trivial e não existem grandes dificuldades, o maior dificuldade que o desenvolvedor pode enfrentar são: domínio da linguagem e do ambiente; implementação da assinatura digital XML; obtenção um certificado digital no padrão adotado pelo Projeto NF-eletrônica nacional; geração de uma DLL que seja compatível com o ambiente WIN32. Escrevendo a DLL em ambiente.net O código para Assinatura Digital XML em C# está disponível em http://nfeletronica.com/blog/?p=47, não existindo grandes segredos na implementação. A maior dificuldade que o desenvolvedor pode enfrentar é fazer com que a DLL do.net possa ser chamada por um aplicativo WIN32. O segredo é a geração da DLL com a Register for COM interop do Output da aba Build marcada: Caminho: Solution Explorer/Property/Configuration/Build/Output 2

Maiores detalhes podem obtidos no artigo Building COM objects in C# de Shripad Kukarni, disponível em http://www.csharphelp.com/archives/archive281.html. Os detalhes da geração da DLL serão mostrados oportunamente. Utilizando a DLL gerada em ambiente.net Para utilizar a DLL gerada é necessário o ter o Framework.NET 2.0 (Microsoft.NET Framework Version 2.0 Redistributable Package (x86)), instalado e prévio registro da DLL no Windows que pode ser realizada da seguinte forma: regasm NFe_Util.dll /tlb:nfe_util.tlb ou execute registradll.bat Após o registro, a DLL está disponível para uso. O exemplo de uso disponibilizado foi escrito em Delphi 7. Para acessar a DLL em Delphi é necessário importar a Type Library da DLL NFe_Util.dll no Delphi: 1. Abra um novo projeto; 2. selecione a opção Import Type Library do menu Project; 3. na janela Import Type Library, clique no botão Add; 4. procure o arquivo NFe_Util.tlb; 5. clique no botão Create Unit; Na próxima vez não será mais necessário executar o passo 4, pois a Type Library deverá estar disponível como Biblioteca de utilidades da NF-e (Version 1.0). O uso da DLL é bastante simples, basta declarar a interface, criar objeto e usar o objeto: Busca da Versão procedure TForm1.btVersaoClick(Sender: TObject); var Util:NFe_Util_Interface; Util := CoUtil.Create; MessageDlg( 'A versão da DLL NFe_Util em uso é: '+Util.versao, mtinformation, [mbok], 0); Util :=nil; 3

Assinatura Digital procedure TForm1.btAssinarClick(Sender: TObject); var Util:NFe_Util_Interface; i:integer; 1.Assinar: Assinatura Digital XML no padrão do Projeto NF-e Entradas: XMLString: string XML a ser assinada RefUri : Referência da URI a ser assinada (Ex. infnfe X509Cert : certificado digital a ser utilizado na assinatura digital Retornos: Assinar : código do resultado 0 - Assinatura realizada com sucesso 1 - Erro: Problema ao acessar o certificado digital - %exceção% 2 - Certificado digital inexistente para %nome% 3 - XML mal formado + exceção 4 - A tag de assinatura %RefUri% inexiste 5 - A tag de assinatura %RefUri% não é unica 6 - Erro Ao assinar o documento - ID deve ser string %RefUri(Atributo)% 7 - Erro: Ao assinar o documento - %exceção% XMLStringAssinado : string XML assinada msgresultado : Literal da mensagem resultado if xmldoc <> '' then if ednome.text <> '' then Util := CoUtil.Create; case tpdoc.itemindex of 0: ref := 'infnfe'; 1: ref := 'infcanc'; 2: ref := 'infinut'; nome := ednome.text; i:= Util.Assinar(xmlDoc, ref, nome, xmlassinado, mensagem); 4

if i <> 0 then MessageDlg( 'Processo de assinatura falhou...', mtinformation, [mbok], 0); edresultado.text := inttostr(i)+ ' - ' +mensagem; rtfassinado.text := xmlassinado; Util := nil; end MessageDlg( 'Nome do titular do Certificado não informado...', mtinformation, [mbok], 0); end MessageDlg( 'Documento XML para assinatura não informado...', mtinformation, [mbok], 0); PegaNomeCertificado procedure TForm1.Button1Click(Sender: TObject); var Util:NFe_Util_Interface; i:integer; 2. PegaNomeCertificado: Seleciona ou confirma a exitência de um certificado para o nome informado. Entrada: Nome do titular se não informado busca certificado do repositório; se informado confirma a existência. Retornos: PegaNomeCertificado: código do resultado 0-Selecinado um Certificado 1-Existe um Certificado com o nome informado 2-Nenhum Certificado Selecionado 3-Nenhum certificado válido foi encontrado com o nome informado 4-Erro Inesperado: "+ex.message Nome : Nome do titular do Certificado msgresultado : Literal da mensagem do resultado 5

Util := CoUtil.Create; nome := trim(ednome.text); i:= Util.PegaNomeCertificado(nome, mensagem); if i > 1 then MessageDlg( 'Ocorreu uma falha no acesso ao repositório de certificados digitais...'+#13+#13+mensagem, mtinformation, [mbok], 0) if i = 0 then MessageDlg( 'Certificado selecionado:'#13+#13+nome, mtinformation, [mbok], 0) MessageDlg( 'O Certificado:'#13+#13+nome+#13+#13+'foi localizado no repósitorio de certificados!', mtinformation, [mbok], 0); ednome.text := nome; Util := nil; Estamos disponibilizando as seguintes funções na DLL NFe_Util: Classes de apoio para a a NF-eletrônica. 1.Assinar: Assinatura Digital XML no padrão do Projeto NF-e Entradas: XMLString: string XML a ser assinada RefUri : Referência da URI a ser assinada (Ex. infnfe X509Cert : certificado digital a ser utilizado na assinatura digital Retornos: Assinar : código do resultado 0 - Assinatura realizada com sucesso 1 - Erro: Problema ao acessar o certificado digital - %exceção% 2 - Certificado digital inexistente para %nome% 3 - XML mal formado + exceção 4 - A tag de assinatura %RefUri% inexiste 5 - A tag de assinatura %RefUri% não é unica 6 - Erro Ao assinar o documento - ID deve ser string %RefUri(Atributo)% 7 - Erro: Ao assinar o documento - %exceção% XMLStringAssinado : string XML assinada 6

msgresultado : Literal da mensagem resultado 2. PegaNomeCertificado: Seleciona ou confirma a exitência de um certificado para o nome informado. Entrada: Nome do titular se não informado busca certificado do repositório; se informado confirma a existência. Retornos: PegaNomeCertificado: código do resultado 0-Selecinado um Certificado 1-Existe um Certificado com o nome informado 2-Nenhum Certificado Selecionado 3-Nenhum certificado válido foi encontrado com o nome informado 4-Erro Inesperado: "+ex.message Nome MsgResultado : Nome do titular do Certificado : Literal da mensagem do resultado 3. Versao: retorna a vesão atual da DLL Para maiores detalhes queira ver o código fonte da aplicação de exemplo. Certificado Digital de testes Caso necessite, utilize o certificado digital de testes existente no pacote. Para instalar o certificado, basta clicar no arquivo Associação.pfx e confirmar em todas as opções, a senha é associacao. Condições de uso: Este material pode ser copiado, distribuído, exibido e executado, bem como utilizado para criar obras derivadas, sob licença Creative Commons Attribution, com a citação da fonte e o devido crédito. Acesse hhtp://nf-eletronica.com/blog para obter obter mais Informações Técnicas do Projeto Nota Fiscal eletrônica. 7