Login Registre-se
Busca automatica da .dll para cada tipo de certificado digital A3  XML
Índice dos Fóruns » NF-e / NFS-e / CT-e / CF-e / Certificados Digitais
Autor Mensagem
Rodolfo

JavaC Membro

Membro desde: 02/05/2012 09:30:02
Mensagens: 4
Offline

Bom dia pessoal,
Estou com necessidade de automatizar meu instalador de NFe, preciso que ao marcar a opção de certificado A3 ele faça uma busca pelas possíveis .dll para aquele certificado, independente da marca ou modelo. O emissor de NFe da Sefaz faz dessa maneira, marco uma opção como busca automática e ele sai procurando as .dll para aquele certificado. Alguém sabe de alguma maneira para que seja feito isso?

Grato pela atenção!
Rodolfo

JavaC Membro

Membro desde: 02/05/2012 09:30:02
Mensagens: 4
Offline

Bom dia pessoal,
Descobri uma solução para minha duvida, talvez não a mais correta, porem eficaz. Observando o emissor da Sefaz, desenvolvi uma algoritmo onde eu listo todos os arquivos da pasta System32 ou da SysWOW64 e pego apenas os arquivos .dll em um loop, sendo que para cada .dll que pego tento comunicar com o certificado A3, assim aquele que conectar, eu pego os dados do certificado para garantir que é o certificado requerido, e se for, gravo um arquivo .cfg com o caminho\nome.dll onde uso para integração do meu sistema de nota. Quando a solução não vem, temos que dar um jeito.. hehe

Grato..
macielgoncalves

Administrador
[Avatar]

Membro desde: 06/03/2011 14:49:25
Mensagens: 1237
Localização: Tubarão - SC
Offline

Olá Rodolfo,

Concordo que a solução não é uma das melhores, mas na prática deve funcionar. Minha pergunta é: ficou rápido? Quando existirem muitas DLLs, o que considero ser comum, o processo não ficou demorado?

Obrigado por compartilhar sua solução.

Att,

Maciel Gonçalves
Administrador (JavaC - Java Community)
Seguir no Twitter @macielgoncalves



Projeto NF-e, CT-e, CC-e? Comece Por Aqui!

Quer saber mais sobre NF-e? Acesse www.MACIELGONCALVES.com.br

"A mente que se abre a uma nova ideia jamais voltará ao seu tamanho original." Albert Einstein
"Seja liberal naquilo que você aceita, e conservador naquilo que você propaga". Jon Postel.
"A coisa mais indispensável a um homem é reconhecer o uso que deve fazer do seu próprio conhecimento". Platão


Emissão de Documentos Fiscais para Desenvolvedores Java


Membros do fórum,

Usem a tag [code] e [/code] quando postarem Códigos Java e ou exemplos de XMLs.
Evitem tópicos duplicados.
Tópico solucionado? Edite o primeiro post e coloque [RESOLVIDO] no final do título.
Evitem reviver tópicos antigos.

O tópico resolveu seu problema? Seja gentil, comente e ou agradeça quem contribuiu com a solução.

Obrigado!

[WWW] [MSN]
Rodolfo

JavaC Membro

Membro desde: 02/05/2012 09:30:02
Mensagens: 4
Offline

Boa Tarde Maciel
A unica demora que tem, é listar todos os arquivos, ou seja, leva de 30 a 40 segundos em média para listar todas as .dll e testá-las, tempo que prefiro espera a ter que adivinhar qual a .dll isso pelo fato que tivemos muitos problemas referentes a configuração de certificados A3, justamente por não saber ao certo qual a .dll correta a ser utilizada, assim, chamo cada .dll e tento acessá-la com os dados do certificado, caso alguma dê certo, eu pego os dados retornado e continuo a busca, monto uma lista com os certificados encontrados e mostro ao usuário para que ele escolha qual a empresa, por exemplo (isso se ele tiver mais de um certificado na maquina).
Caso você já tenha utilizado o emissor da Sefaz, você poderá observar que lá eles também tem uma busca automática das .dll, porém não sei qual a mameira que eles identificam a .dll, minha ideia de fazer dessa forma, surgiu observando o gerador da deles
Em principio, estou tendo um retorno satisfatório..

Grato,

Esta mensagem foi editada 1 vez. Última atualização foi em 11/05/2012 14:00:19

spacethiago

JavaC Membro

Membro desde: 23/04/2012 10:24:12
Mensagens: 20
Offline

Esta mensagem foi editada 1 vez. Última atualização foi em 15/05/2012 09:28:53

Sir Camelot

JavaC Membro
[Avatar]
Membro desde: 29/03/2012 14:47:58
Mensagens: 45
Localização: Recife - PE
Offline




Bruno Camelo
Rodolfo

JavaC Membro

Membro desde: 02/05/2012 09:30:02
Mensagens: 4
Offline

Bom dia Sir Camelot,
Acredito que sua resposta não tenha nada a ver com o tópico "Busca automatica da .dll para cada tipo de certificado digital A3", pelo que percebi você apenas colocou o caminho manual..

Grato
Sir Camelot

JavaC Membro
[Avatar]
Membro desde: 29/03/2012 14:47:58
Mensagens: 45
Localização: Recife - PE
Offline

na verdade é apenas o código de spacethiago colocado na tag pra visualizar melhor.

seria mais fácil testar as dlls entre os fabricantes disponíveis, do que testar todas do system.

Bruno Camelo
betonetotbo

JavaC Membro

Membro desde: 23/08/2018 11:57:36
Mensagens: 4
Offline

Galera, queria compartilhar a minha solução.

Eu notei que existe um padrão de funções exportadas nessas DLLs que se comunicam com certificados A3.

Encontrei essa especificação sobre PKCS 11: http://docs.oasis-open.org/pkcs11/pkcs11-base/v2.40/os/pkcs11-base-v2.40-os.html

Com isso notei que essas DLLs sempre tem uma função exportada chamada: C_Initialize

Então baixei o programa "DLL Export Viewer" (que carrega uma DLL e mostra as funções que ela exporta): http://www.nirsoft.net/utils/dll_export_viewer.html

E depois criei um BAT para executar uma varredura sobre sobre todas as DLLs do windows procurando por essa função C_Initialize, veja o bat:



No fim esse programa "DLL Export Viewer" abre e mostra todas as DLLs que estão instaladas no computador com essa função C_Initialize. Assim acaba ficando mais fácil quais DLLs testar/usar.

Veja o resultado na imagem abaixo:

 
Índice dos Fóruns » NF-e / NFS-e / CT-e / CF-e / Certificados Digitais
Ir para:   
Powered by JForum 2.1.9 © JForum Team