throw new InvalidKeySpecException();
return decodeDHPublicKey(input);
  protected PublicKey engineGeneratePublic(KeySpec keySpec)      throws InvalidKeySpecException  {    if (! (keySpec instanceof X509EncodedKeySpec))      throw new InvalidKeySpecException("only supports X.509 key specs");    byte[] input = ((X509EncodedKeySpec) keySpec).getEncoded();    // try DSS    try      {        return DSSPublicKey.valueOf(input);      }    catch (InvalidParameterException ignored)      {      }    // try RSA    try    {      return GnuRSAPublicKey.valueOf(input);    }  catch (InvalidParameterException ignored)    {    }    // FIXME: try DH    throw new InvalidKeySpecException();  }