Hi all,
I am trying to create a Private Key Instance from a file which contains a Base64 encoded PEM format private key.
I get an exception when I run the program:
Could not create RSA private key
java.security.spec.InvalidKeySpecException: Could not create RSA private key
at sun.security.pkcs11.P11RSAKeyFactory.engineGeneratePrivate(P11RSAKeyFactory.java:131)
at java.security.KeyFactory.generatePrivate(KeyFactory.java:322)
at signContract.main(signContract.java:66)
Caused by: java.security.InvalidKeyException: IOException : algid parse error, not a sequence
at sun.security.pkcs.PKCS8Key.decode(PKCS8Key.java:344)
at sun.security.pkcs.PKCS8Key.decode(PKCS8Key.java:350)
at sun.security.rsa.RSAPrivateCrtKeyImpl.<init>(RSAPrivateCrtKeyImpl.java:74)
at sun.security.rsa.RSAPrivateCrtKeyImpl.newKey(RSAPrivateCrtKeyImpl.java:58)
at sun.security.pkcs11.P11RSAKeyFactory.engineGeneratePrivate(P11RSAKeyFactory.java:127)
The private key file is as follows:
-----BEGIN RSA PRIVATE KEY-----
MIICXQIBAAKBgQCAp60IPvm2n10B43YVR2Tz6R9wH7j+2BlldwOLNRkWXYvzSqhX
OuOiZO10IL598dOcYJvQshURw+ZbjmK9qeReta8irrP17q+86puD2k0YqcYokpqL
82PsjrooeiK5e4/EW2qLQU2zWhihPKeK9YfoRR/Koudw7eM6eP+HogcRIwIDAQAB
AoGAXRTzo9usX+y9JfikHpEhATfRfxX0iq1e8oJBFh68n+ner498bGA3Ae9zvWlT
aVvldmaPVVcC12+c4vEJj5+zkaAnZiec/NvjEK4POZnUgzmVHzDw8f3AtY0AEgld
s5EdrCevx8EqjjxqneQpNKHGYbYcXls5M41vhkjlG6Iw78ECQQD0SRQrsxmhILR6
x3A/d8WNU1USTraJgRf6gcK4UtndICQfdk0czQvk/oE8WoXlk6mNOqaGqpWheUdz
vYWMkp1/AkEAhtMVNjvhTvwGfLNAmvkaiief2pEvN5iFotUEewV91pREgh6/Mhh6
U8DKh8yxCZasA3LUmIEFPtW8o6sdCh0mXQJBANIqGSdrg65DE+LZuLFx2s02l2cT
vylXngiQILUx2mvKnilPPxJ7OjN93jPNcYrM2j896UzMb8UnMRjbQY1qCgMCQAJl
jDH7nIS37DGZSiO3G+aqz6el/w3g8zcyzDKXpWYEGrepbkKotrv4aGFDnT4LZKFn
ECpp2LsGN6U9LHX6kK0CQQDmPsKeZcadFIGJ+yaccFsFwYvfpwmWRJ2rOL6P7TrN
3QHx2zBILrJHqSC6hDwzHLbnpVSVl8k2pUQn9TsJbCJ5
-----END RSA PRIVATE KEY-----
The code for the above program is
byte[] decodedBuffer=Base64.decodeFromFile("privateKey");
KeyFactory keyFactory = KeyFactory.getInstance("RSA");
PKCS8EncodedKeySpec privateKeySpec=new PKCS8EncodedKeySpec(decodedBuffer);
byte[] PKCSencoded=privateKeySpec.getEncoded();
PrivateKey privateKey = keyFactory.generatePrivate(privateKeySpec);
System.out.println("Created Instance of Private Key");
I tried to use the java.security.KeyPairGenerator to generate private key. Using that private key the above program works fine but not for any openssl generated private key. Can any one solve my problem??