Skip to Main Content

Java Security

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!

Can't import public/private key generated by gpg

843811Aug 8 2007 — edited Aug 10 2007
I've been banging my head on the wall on this one. Hopefully one of you guys can help me.

I'm attempting to import a public key generated by gpg, but am unable to do so. Below is the public key:
-----BEGIN PGP PUBLIC KEY BLOCK-----
Version: GnuPG v1.4.2 (GNU/Linux)

mQELBEa4qroBCADGov82NYozQaXXZDSSksae9R+SNXivgXX5SDz6BF77x9e9Jnwv
22GsKqbLVsLholsO28KVM7P4CrmxstLJeqV2vh3rRASMCn/3uXamPU05iiOphF1K
bqW3NzYuLBNTJzzZQDtVHVH31XcA7BrDfWODtji3d5ldVeqJHk9OztwgFM5bpA4C
EC4N8xY83Phyb9QLYgWAFCTFMy+q/KkJFy+L7Fl/0euG1Q/bdUMh1Sj3wl1oxlGL
YzfZPteBwJI7LcUxkhj773fphLlR5MqyjtezNH//WCdbLlkLCvM25GD1fJcEJm/X
dIXBO3taDBMvdCh9SjtOwUkp0EcgFZTolLj9AAYptB9SU0EgVGVzdCAoeHh4KSA8
dGVzdDFAdGVzdC5jb20+iQE1BBMBAgAfBQJGuKq6AhsDBgsJCAcDAgQVAggDAxYC
AQIeAQIXgAAKCRC+yU9sUXFZDaE8CACcUMPmVRtUzj8Em/8Ibt4fH6qMvO/1aVCN
37BCerTaJ7W6kDWMBpLvT5qk0uSgsLemOCxAAj+7lztlZ2vx1DnN+6qvNb3MK8fb
BskBt22Rp0tdAkkwu0Fo3WeNg2DD+I2cmMLUP55eB2qEGvFXFjHSvI3l2msUIpja
wSWh5IgctZGZFR2ETUUtcdh2DZjM8OYFrvmqJRIohUUFqH/+JZWlAZfTgKqRszcl
+RCEWDmuLBaSdXEkc7ob7F3bVEL7699FdmtHOGN5Bis5+f61m8TZo8h79WgHKRSj
KEPl8YAKjMOmnrXPjSWPLYO0+aZlGSHbFmGsuPp0vvFhP7eYRc3b
=DD9P
-----END PGP PUBLIC KEY BLOCK-----
When I run the code below, I get an exception stating "java.security.spec.InvalidKeySpecException: java.security.InvalidKeyException: invalid key format".

The file "key3" contains the unencoded key as generated by: gpg --export "RSA Test" > key3
import java.security.*;
import java.security.spec.*;
import java.io.*;

public class crypt {
    public static void main(String[] args) throws Exception {
        File pubKeyFile = new File("key3");
        DataInputStream dis = new DataInputStream(new FileInputStream(pubKeyFile));
        byte[] pubKeyBytes = new byte[(int)pubKeyFile.length()];
        dis.readFully(pubKeyBytes);
        dis.close();

        KeySpec ks = new X509EncodedKeySpec(pubKeyBytes);
        Key k = KeyFactory.getInstance("RSA").generatePublic(ks);
    }
}
I also tried doing it as follows with the same results:
import java.security.*;
import java.security.spec.*;
import org.apache.commons.codec.binary.Base64;

public class crypt {
    public static void main(String[] args) throws Exception {

        String keystr = "mQELBEa4qroBCADGov82NYozQaXXZDSSksae9R+SNXivgXX5SDz6BF77x9e9Jnwv" +
        "22GsKqbLVsLholsO28KVM7P4CrmxstLJeqV2vh3rRASMCn/3uXamPU05iiOphF1K" +
        "bqW3NzYuLBNTJzzZQDtVHVH31XcA7BrDfWODtji3d5ldVeqJHk9OztwgFM5bpA4C" +
        "EC4N8xY83Phyb9QLYgWAFCTFMy+q/KkJFy+L7Fl/0euG1Q/bdUMh1Sj3wl1oxlGL" +
        "YzfZPteBwJI7LcUxkhj773fphLlR5MqyjtezNH//WCdbLlkLCvM25GD1fJcEJm/X" +
        "dIXBO3taDBMvdCh9SjtOwUkp0EcgFZTolLj9AAYptB9SU0EgVGVzdCAoeHh4KSA8" +
        "dGVzdDFAdGVzdC5jb20+iQE1BBMBAgAfBQJGuKq6AhsDBgsJCAcDAgQVAggDAxYC" +
        "AQIeAQIXgAAKCRC+yU9sUXFZDaE8CACcUMPmVRtUzj8Em/8Ibt4fH6qMvO/1aVCN" +
        "37BCerTaJ7W6kDWMBpLvT5qk0uSgsLemOCxAAj+7lztlZ2vx1DnN+6qvNb3MK8fb" +
        "BskBt22Rp0tdAkkwu0Fo3WeNg2DD+I2cmMLUP55eB2qEGvFXFjHSvI3l2msUIpja" +
        "wSWh5IgctZGZFR2ETUUtcdh2DZjM8OYFrvmqJRIohUUFqH/+JZWlAZfTgKqRszcl" +
        "+RCEWDmuLBaSdXEkc7ob7F3bVEL7699FdmtHOGN5Bis5+f61m8TZo8h79WgHKRSj" +
        "KEPl8YAKjMOmnrXPjSWPLYO0+aZlGSHbFmGsuPp0vvFhP7eYRc3b" +
        "=DD9P";

        byte[] instr = keystr.getBytes();
        byte[] outstr = new Base64().decode(instr);

        KeySpec ks = new X509EncodedKeySpec(outstr);
        Key k = KeyFactory.getInstance("RSA").generatePublic(ks);
    }
}
Any help would be much appreciated.

Thanks,
Dennis
Comments
Locked Post
New comments cannot be posted to this locked post.
Post Details
Locked on Sep 7 2007
Added on Aug 8 2007
7 comments
550 views