Bom dia galera,
Acessando a parte de artigos do GUJ encontrei a parte de Assinatura Digital com um código em Java para trabalhar com este conceito. O link é: http://www.guj.com.br/java.tutorial.artigp.141.1.guj.
Um dos métodos de buscar a chave pública através de um arquivo de certificado digital está logo abaixo.
/**
* Extrai a chave pública do arquivo.
*/
public static PublicKey getPublicKeyFromFile( File cert, String alias, String password ) throws Exception {
KeyStore ks = KeyStore.getInstance ( "JKS" );
char[] pwd = password.toCharArray();
InputStream is = new FileInputStream( cert );
ks.load( is, pwd );
Key key = ks.getKey( alias, pwd );
Certificate c = ks.getCertificate( alias );
PublicKey p = c.getPublicKey();
return p;
}
Neste caso ele extrai a chave pública de um certificado. Mas gostaria de saber o que preciso mudar/alterar para que ele busque não o certificado, mas sim já a chave pública que já exportei pelo comando keytool. Eu criei uma interface gráfica e na parte do destinatário gostaria que ele selecionasse a chave pública e assim fizesse a descriptografia do dado e assim garantisse sua autenticidade e integridade.
Só preciso deste detalhe pra complementar minha aplicação, porque da forma que o método está implementado, ele recebe o certificado, que contém já a chave privada e pública, e extrai a chave pública.
Obs.: Aproveitando este tópico. No JAVA só posso fazer assinatura de um dado com a chave privada? O método initSign da classe Signature recebe como parâmetro SOMENTE chave privada.
Aguardo contato.
Raphael