Autor |
Mensagem |
|
![[Post New]](/jc/templates/javac/images/icon_minipost_new.gif) 02/05/2012 09:37:05
|
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!
|
|
|
|
![[Post New]](/jc/templates/javac/images/icon_minipost_new.gif) 04/05/2012 08:16:35
|
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..
|
|
|
![[Post New]](/jc/templates/javac/images/icon_minipost_new.gif) 11/05/2012 12:52:45
|
macielgoncalves
Administrador
![[Avatar]](/jc/images/avatar/eccbc87e4b5ce2fe28308fd9f2a7baf3.png)
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!
|
|
|
![[Post New]](/jc/templates/javac/images/icon_minipost_new.gif) 11/05/2012 13:46:47
|
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
|
|
|
![[Post New]](/jc/templates/javac/images/icon_minipost_new.gif) 11/05/2012 13:50:14
|
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
|
|
|
![[Post New]](/jc/templates/javac/images/icon_minipost_new.gif) 12/05/2012 10:09:50
|
Sir Camelot
JavaC Membro
Membro desde: 29/03/2012 14:47:58
Mensagens: 45
Localização: Recife - PE
Offline
|
|
Bruno Camelo |
|
|
![[Post New]](/jc/templates/javac/images/icon_minipost_new.gif) 14/05/2012 09:53:21
|
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
|
|
|
![[Post New]](/jc/templates/javac/images/icon_minipost_new.gif) 14/05/2012 10:00:48
|
Sir Camelot
JavaC Membro
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 |
|
|
![[Post New]](/jc/templates/javac/images/icon_minipost_new.gif) 22/09/2020 07:53:48
|
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:
|
|
|
|