salve,
ho un piccolo problema di criptografia,
ho creato una semplice Certificate authority dove creo keypair( una chiave pubblica e una privata)
e creo un file contenente la private key
codice:
public void getKeyPair(){
try{
KeyPairGenerator kPGen = KeyPairGenerator.getInstance("RSA");
kPGen.initialize(1024);
KeyPair kPair = kPGen.generateKeyPair();
this.privateKey = kPair.getPrivate();
this.publicKey = kPair.getPublic();
}
catch(Exception e){
System.out.println(e);
}
}
codice:
public void createCAPrivateKeyFile(){
try {
byte[] privateKeyFile = this.privateKey.getEncoded();
FileOutputStream certfos = new FileOutputStream("caKeyCA.csw");
Writer wr = new OutputStreamWriter(certfos, Charset.forName("UTF-8"));
// wr.write("-----BEGIN RSA PRIVATE KEY-----\n");
wr.write(new sun.misc.BASE64Encoder().encode(privateKeyFile));
// wr.write("\n-----END RSA PRIVATE KEY-----\n");
wr.flush();
certfos.close();
}
catch (Exception e) {
e.printStackTrace();
System.out.println("da file");
}
in un'altra classe dove firmerò i futuri certificati vorrei leggere il file che contiene la chiave privata della CA e me la traduca di nuovo in tipo PrivateKey, ho provato così
codice:
public void readKeyFile (){
try {
String privKeyFile = "caKeyCA.csw";
java.io.DataInputStream dis = new java.io.DataInputStream(new FileInputStream(privKeyFile));
byte[] privKeyBytes = new byte[(int)privKeyFile.length()];
dis.readFully(privKeyBytes);
dis.close();
KeyFactory keyFactory = KeyFactory.getInstance("RSA");
PKCS8EncodedKeySpec privSpec = new PKCS8EncodedKeySpec (new sun.misc.BASE64Decoder().decodeBuffer(privKeyBytes.toString()));
this.privateKey = keyFactory.generatePrivate(privSpec);
}
catch(Exception e){
e.printStackTrace();
System.out.println(e);
}
}
ma mi da un errore : java.security.spec.InvalidKeySpecException: java.security.InvalidKeyException: IOException : null
allora ho provato al posto di PKCS(EncodedKeySpec, con X509EncodedKeySpec ma mi esce un altro errore :java.security.spec.InvalidKeySpecException: Only RSAPrivate(Crt)KeySpec and PKCS8EncodedKeySpec supported for RSA private keys
qualcuno sa come potrei fare???