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???