é o seguinte: criei uma chave rsa com o openssl (privkey.pem), depois gerei um certificado autoassinado com essa chave (cacert.pem).
daí fiz isso aí bem simples:
FileInputStream cacert = new FileInputStream("cacert.pem");
CertificateFactory certf = CertificateFactory.getInstance("X509");
X509Certificate cert = (X509Certificate) certf.generateCertificate(cacert);
FileInputStream privkey = new FileInputStream("privkey.pem");
byte[] key = new byte[privkey.available()];
privkey.read(key);
privkey.close();
SecretKeySpec spec = new SecretKeySpec(key, "RSA");
KeyStore ks = KeyStore.getInstance(KeyStore.getDefaultType());
ks.load(null, null);
ks.setKeyEntry("teste",spec,"teste".toCharArray(),null);
FileOutputStream fos = new FileOutputStream("newks");
ks.store(fos,"teste".toCharArray());
ks.getKey("teste","teste".toCharArray());
daí estou tendo o seguinte problema:
java.security.UnrecoverableKeyException: extra data given to DerValue constructor
at sun.security.provider.KeyProtector.recover(Unknown Source)
at sun.security.provider.JavaKeyStore.engineGetKey(Unknown Source)
at java.security.KeyStore.getKey(Unknown Source)
at KeyTest.main(KeyTest.java:42)
a linha 42 é ks.getKey(“rafael”,"".toCharArray());
o que eu to fazendo de errado??