Skip to Main Content

New to Java

Announcement

For appeals, questions and feedback about Oracle Forums, please email oracle-forums-moderators_us@oracle.com. Technical questions should be asked in the appropriate category. Thank you!

Creating java.security.PrivateKey from a file containing Base64 encoded key

843785Nov 10 2008 — edited Nov 21 2008
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??

Comments
Locked Post
New comments cannot be posted to this locked post.
Post Details
Locked on Dec 19 2008
Added on Nov 10 2008
1 comment
4,129 views