Tô com um problema q até então não resolvi, talvez alguém possa ajudar.
Seguinte, preciso q meu programa de “Assinatura Digital” liste os tokens da máquina numa de suas telas. Isso ele já faz, porém quando é retirado um token e colocado outro, essa tela nao se atualiza. Entao, é necessário fechar o programa e abrir denovo pra q a lista de tokens seja atualizada. Nem se fechar a tela e abrir denovo essa atualizaçao ocorre.
Isso acontece, suponho, por q o Cryptomanager, do pacote org.mozilla.jss, nao “finaliza sua instancia” e cria uma nova.
Minha pergunta é: Como faço pra “desinstanciar” o objeto do tipo Cryptomanager e criar uma nova instancia sem precisar fechar o programa?
Pode ser quando se fecha a sub-tela e abre outra ou mesmo quando se clica em um botao atualizar.
Acho que você vai ter de submeter sua dúvida à lista de desenvolvimento do Mozilla - news://news.mozilla.org:119/mozilla.dev.tech.crypto
Você pode até tentar ler o código-fonte do Mozilla, mas o código do NSS é incrivelmente complexo, como você já deve saber.
Outra coisa: pode ser que o fabricante do seu token não tenha implementado corretamente a função do PKCS#11 que indica a remoção do token.
Se isso não for feito corretamente, você terá problemas na atualização dessa lista.
Veja se não é esse o problema (ou seja, se você tiver algum outro token de outra marca, talvez o status seja corretamente atualizado).
Estou chutando isso, porque pode ser que o seu problema não seja do Mozilla NSS e sim do driver do fabricante. (Coisas acontecem)
Não suponha isso. Muitas vezes o pessoal capricha no driver para MS CryptoAPI e deixa a desejar no driver para PKCS#11. (São drivers diferentes; às vezes são feitos até por empresas diferentes! )
Veja em algum fórum que fale de tokens desse fabricante se não há alguma coisa estranha com o driver.
Mas, suponhamos q haja realmente um problema com este driver. Uma alternativa seria desinstaciar o cryptomanager e instancia-lo denovo, assim, simulando o ato de fechar e abrir o programa. Já andei lendo o código do Cryptomanager e percebi q ele é um singleton que, quando já existe uma instancia, ao invés dele retornar a instancia ja criada ele lança uma excessao.
Vc tem alguma outra idéia?
Algo q poderia ser feito em outro objeto qualquer sei lá, tipo chamar o “Garbage Collector” e mandar limpar a referencia dela sei lá… Com certeza devo ta falando bobagem mas, nunca é tarde pra se aprender sobre coisas básicas de Java ehhehe.