private boolean initialize(String user) throws IOException {
    if (initDone == false) {
      tm.registerMessageHandler(this, 0, 255);

      PacketServiceRequest sr = new PacketServiceRequest("ssh-userauth");
      tm.sendMessage(sr.getPayload());

      byte[] msg = getNextMessage();
      new PacketServiceAccept(msg, 0, msg.length);

      PacketUserauthRequestNone urn = new PacketUserauthRequestNone("ssh-connection", user);
      tm.sendMessage(urn.getPayload());

      msg = getNextMessage();

      initDone = true;

      if (msg[0] == Packets.SSH_MSG_USERAUTH_SUCCESS) {
        authenticated = true;
        tm.removeMessageHandler(this, 0, 255);
        return true;
      }

      if (msg[0] == Packets.SSH_MSG_USERAUTH_FAILURE) {
        PacketUserauthFailure puf = new PacketUserauthFailure(msg, 0, msg.length);

        remainingMethods = puf.getAuthThatCanContinue();
        isPartialSuccess = puf.isPartialSuccess();
        return false;
      }

      throw new IOException("Unexpected SSH message (type " + msg[0] + ")");
    }
    return authenticated;
  }
 /**
  * Constructor for server-mode.
  *
  * @param state
  */
 public ChannelManager(ServerConnectionState state) {
   this.server_state = state;
   this.tm = state.tm;
   tm.registerMessageHandler(this, 80, 100);
 }
 /**
  * Constructor for client-mode.
  *
  * @param tm
  */
 public ChannelManager(TransportManager tm) {
   this.server_state = null;
   this.tm = tm;
   tm.registerMessageHandler(this, 80, 100);
 }