Tenho um certificado digital, e preciso assinar um arquivo XML, só não entendo qual a lógica da assinatura, quais dados ela precisa, como criptografa, onde posso adicionar os tais dados, etc.
Se alguém tiver uma explicação sobre o assunto, ou um código fonte comentado pra mim poder adaptar na linguagem que uso, ficaria grato.
Veja:
http://pt.wikipedia.org/wiki/Certificado_digital
http://www.receita.fazenda.gov.br/atendvirtual/Orientacoes/ConceitoBasico.htm#Certificado%20Digital%20e-CPF%20ou%20e-CNPJ
http://www.iti.gov.br/twiki/pub/Certificacao/CartilhasCd/brochura01.pdf
Pelo jeito tah fazendo o projeto para nota fiscal eletrônica né?
Vamos por partes…
“A lógica da assinatura digital” – É simples, quando você cria uma assinatura digital no arquivo… você está garantindo duas coisas:
——Que os dados do arquivo não serão mais modificados, pois se houver modificação… A assinatura que você fez… será invalida para os novos dados.
——A confiabilidade de que o emissor (você) está assinando o arquivo… pois, terá um certificado digital dedicado a isso… Ou seja, se alguém q não contém seu certificado digital cria um arquivo xml para enviar para o SEFAZ contendo os dados de sua empresa como Emissor, o arquivo não será validado… pois o certificado digital irá diferir dos dados do emissor…
Para assinar um arquivo .xml você só precisa de 2 coisas:
—- Do arquivo a ser assinado
—- Do certificado digital (se for sobre Nota fiscal eletronica mesmo… pode ser do tipo A1 ou tipo A3… a diferença é que A1 é mais barato, pois dura apenas 1 ano… enquanto o A3 expira apenas depois de 3 anos)
Para o código fonte… preciso de informações… qual linguagem você usa?
Se você usar alguma linguagem .NET fica mais fácil… você encontra vários exemplos na net… inclusive no blog da nota fiscal eletronica… em C#.
Se você tiver usando VB6, por exemplo… sugiro até que mude de linguagem… hehehe
Eu gosto do VB6… só que para esse projeto… fica um pouco inviavel… você teria que fazer referencias à dlls de terceiros… para assinar e usar o web service…
Abraços… e boa sorte!