/*
* Copyright (C)2009 - SSHJ Contributors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package net.schmizz.sshj.common;
/** SSH message identifiers */
public enum Message {
UNKNOWN(0),
DISCONNECT(1),
IGNORE(2),
UNIMPLEMENTED(3),
DEBUG(4),
SERVICE_REQUEST(5),
SERVICE_ACCEPT(6),
KEXINIT(20),
NEWKEYS(21),
KEXDH_INIT(30),
/** { KEXDH_REPLY, KEXDH_GEX_GROUP, SSH_MSG_KEX_ECDH_REPLY } */
KEXDH_31(31),
KEX_DH_GEX_INIT(32),
KEX_DH_GEX_REPLY(33),
KEX_DH_GEX_REQUEST(34),
USERAUTH_REQUEST(50),
USERAUTH_FAILURE(51),
USERAUTH_SUCCESS(52),
USERAUTH_BANNER(53),
/** { USERAUTH_PASSWD_CHANGREQ, USERAUTH_PK_OK, USERAUTH_INFO_REQUEST } */
USERAUTH_60(60),
USERAUTH_INFO_RESPONSE(61),
USERAUTH_GSSAPI_EXCHANGE_COMPLETE(63),
USERAUTH_GSSAPI_MIC(66),
GLOBAL_REQUEST(80),
REQUEST_SUCCESS(81),
REQUEST_FAILURE(82),
CHANNEL_OPEN(90),
CHANNEL_OPEN_CONFIRMATION(91),
CHANNEL_OPEN_FAILURE(92),
CHANNEL_WINDOW_ADJUST(93),
CHANNEL_DATA(94),
CHANNEL_EXTENDED_DATA(95),
CHANNEL_EOF(96),
CHANNEL_CLOSE(97),
CHANNEL_REQUEST(98),
CHANNEL_SUCCESS(99),
CHANNEL_FAILURE(100);
private final byte b;
private static final Message[] cache = new Message[256];
static {
for (Message c : Message.values())
cache[c.toByte()] = c;
for (int i = 0; i < 256; i++) {
if (cache[i] == null)
cache[i] = UNKNOWN;
}
}
public static Message fromByte(byte b) {
return cache[b];
}
private Message(int b) {
this.b = (byte) b;
}
public boolean geq(int num) {
return b >= num;
}
public boolean gt(int num) {
return b > num;
}
public boolean in(int x, int y) {
return b >= x && b <= y;
}
public boolean leq(int num) {
return b <= num;
}
public boolean lt(int num) {
return b < num;
}
public byte toByte() {
return b;
}
}