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