PORRRRRR FINNNNNNNNN LO HE CONSEGUIDO, hay que ver la de tiempo que me he tirado... puff.
 
Al final he descubierto que solo se puede hacer lo siguiente: 
Mediante esta página:  
http://codeartisan.blogspot.com/2009...y-in-java.html 
Hay que seguir estos pasos a hacer con tu clave privada para generar una nueva clave pública válida en JAVA. 
# generate a 2048-bit RSA private key
$ openssl genrsa -out private_key.pem 2048 
# convert private Key to PKCS#8 format (so Java can read it)
$ openssl pkcs8 -topk8 -inform PEM -outform DER -in private_key.pem \
    -out private_key.der -nocrypt 
# output public key portion in DER format (so Java can read it)
$ openssl rsa -in private_key.pem -pubout -outform DER -out public_key.der 
Después os aseguro que funciona:  
Código:
 public static PublicKey get(String filename)
        throws Exception {
        File f = new File(filename);
        FileInputStream fis = new FileInputStream(f);
        DataInputStream dis = new DataInputStream(fis);
        byte[] keyBytes = new byte[(int)f.length()];
        dis.readFully(keyBytes);
        dis.close();
        X509EncodedKeySpec spec =
          new X509EncodedKeySpec(keyBytes);
        KeyFactory kf = KeyFactory.getInstance("RSA");
        return kf.generatePublic(spec);
    }
  Este código os permitirá conseguir la clavePública desde un fichero.  
Código:
      public static boolean verifySig(byte[] data, PublicKey key, byte[] sig) throws Exception {
        Signature signer = Signature.getInstance("SHA1withRSA");
        signer.initVerify(key);
        signer.update(data);
        return (signer.verify(sig));
      }
  Este os permitirá verificar la firma digital. 
Cuando leáis la firma como tenéis que pasarla en binario si la leeis de algún sitio que esté en hexadecimal: 
byte[] signature = new BigInteger(keyzamSignature, 16).toByteArray(); 
Y ya está ahí acaba mi quebradero de cabeza durante 8 días.