demoiselle / signer

Repositório que contém os componentes para facilitar a implementação de assinatura digital nos padrões da ICP-BRASIL
https://www.frameworkdemoiselle.gov.br/v3/signer/
GNU Lesser General Public License v3.0
142 stars 73 forks source link

Problemas no retorno do keystore ao utilizar biblioteca. #361

Closed gabrielborgesc closed 1 year ago

gabrielborgesc commented 1 year ago

Baseado na documentação oficial de utilização da biblioteca (https://www.frameworkdemoiselle.gov.br/v3/signer/),

segui o tutorial para conseguir pegar dados de um certificado do tipo A3 (token) conforme https://www.frameworkdemoiselle.gov.br/v3/signer/docs/cryptography-funcionalidades.html#d0e3625

No entanto, logo nas primeiras linhas, em "KeyStore keyStore = KeyStoreLoaderFactory.factoryKeyStoreLoader().getKeyStore(PIN);", está sendo retornado keyStore null.

Em outras partes dessa documentação, orienta-se utilizar "KeyStore keyStore = (new MSKeyStoreLoader()).getKeyStore(null);"

Verifiquei no código fonte da biblioteca (https://github.com/demoiselle/signer/blob/master/core/src/main/java/org/demoiselle/signer/core/keystore/loader/implementation/MSKeyStoreLoader.java) e, de fato, não possui implementação para este método.

Verifiquei que o projeto certificate (que foi descontinuado) possuía implementação para este método em (https://github.com/demoiselle/certificate/blob/master/impl/core/src/main/java/br/gov/frameworkdemoiselle/certificate/keystore/loader/implementation/MSKeyStoreLoader.java).

Gostaria de saber então, como realizar a leitura do token A3 com o novo projeto signer.

OBS: Estou utilizando Windows e possuo um token A3 conectado ao computador, bem como estou rodando a aplicação localmente.

esaito commented 1 year ago

De uma olhada neste código:

https://github.com/demoiselle/signer/blob/master/policy-impl-cades/src/test/java/org/demoiselle/signer/policy/impl/cades/pkcs7/impl/CAdESSignerTest.java

Porém se o seu sistema precisar acessar o token de uma máquina remota (cliente), ou terá que implementar uma solução cliente ou usar uma solução como do Assinador SERPRO: https://www.assinadorserpro.estaleiro.serpro.gov.br/minimalista/tutorial/