/* $OpenBSD: ssh1.h,v 1.6 2006/03/25 22:22:43 djm Exp $ */

/*
 * Author: Tatu Ylonen <ylo@cs.hut.fi>
 * Copyright (c) 1995 Tatu Ylonen <ylo@cs.hut.fi>, Espoo, Finland
 *                    All rights reserved
 *
 * As far as I am concerned, the code I have written for this software
 * can be used freely for any purpose.  Any derived versions of this
 * software must be clearly marked as such, and if the derived work is
 * incompatible with the protocol description in the RFC file, it must be
 * called by a name other than "ssh" or "Secure Shell".
 */

/*
 * Definition of message types.  New values can be added, but old values
 * should not be removed or without careful consideration of the consequences
 * for compatibility.  The maximum value is 254; value 255 is reserved for
 * future extension.
 */
/* Ranges */
#define SSH_MSG_MIN    1
#define SSH_MSG_MAX    254
/* Message name */   /* msg code */ /* arguments */
#define SSH_MSG_NONE    0 /* no message */
#define SSH_MSG_DISCONNECT   1 /* cause (string) */
#define SSH_SMSG_PUBLIC_KEY   2 /* ck,msk,srvk,hostk */
#define SSH_CMSG_SESSION_KEY   3 /* key (BIGNUM) */
#define SSH_CMSG_USER    4 /* user (string) */
#define SSH_CMSG_AUTH_RHOSTS   5 /* user (string) */
#define SSH_CMSG_AUTH_RSA   6 /* modulus (BIGNUM) */
#define SSH_SMSG_AUTH_RSA_CHALLENGE  7 /* int (BIGNUM) */
#define SSH_CMSG_AUTH_RSA_RESPONSE  8 /* int (BIGNUM) */
#define SSH_CMSG_AUTH_PASSWORD   9 /* pass (string) */
#define SSH_CMSG_REQUEST_PTY   10 /* TERM, tty modes */
#define SSH_CMSG_WINDOW_SIZE   11 /* row,col,xpix,ypix */
#define SSH_CMSG_EXEC_SHELL   12 /* */
#define SSH_CMSG_EXEC_CMD   13 /* cmd (string) */
#define SSH_SMSG_SUCCESS   14 /* */
#define SSH_SMSG_FAILURE   15 /* */
#define SSH_CMSG_STDIN_DATA   16 /* data (string) */
#define SSH_SMSG_STDOUT_DATA   17 /* data (string) */
#define SSH_SMSG_STDERR_DATA   18 /* data (string) */
#define SSH_CMSG_EOF    19 /* */
#define SSH_SMSG_EXITSTATUS   20 /* status (int) */
#define SSH_MSG_CHANNEL_OPEN_CONFIRMATION 21 /* channel (int) */
#define SSH_MSG_CHANNEL_OPEN_FAILURE  22 /* channel (int) */
#define SSH_MSG_CHANNEL_DATA   23 /* ch,data (int,str) */
#define SSH_MSG_CHANNEL_CLOSE   24 /* channel (int) */
#define SSH_MSG_CHANNEL_CLOSE_CONFIRMATION 25 /* channel (int) */
/*      SSH_CMSG_X11_REQUEST_FORWARDING  26    OBSOLETE */
#define SSH_SMSG_X11_OPEN   27 /* channel (int) */
#define SSH_CMSG_PORT_FORWARD_REQUEST  28 /* p,host,hp (i,s,i) */
#define SSH_MSG_PORT_OPEN   29 /* ch,h,p (i,s,i) */
#define SSH_CMSG_AGENT_REQUEST_FORWARDING 30 /* */
#define SSH_SMSG_AGENT_OPEN   31 /* port (int) */
#define SSH_MSG_IGNORE    32 /* string */
#define SSH_CMSG_EXIT_CONFIRMATION  33 /* */
#define SSH_CMSG_X11_REQUEST_FORWARDING  34 /* proto,data (s,s) */
#define SSH_CMSG_AUTH_RHOSTS_RSA  35 /* user,mod (s,mpi) */
#define SSH_MSG_DEBUG    36 /* string */
#define SSH_CMSG_REQUEST_COMPRESSION  37 /* level 1-9 (int) */
#define SSH_CMSG_MAX_PACKET_SIZE  38 /* size 4k-1024k (int) */
#define SSH_CMSG_AUTH_TIS   39 /* we use this for s/key */
#define SSH_SMSG_AUTH_TIS_CHALLENGE  40 /* challenge (string) */
#define SSH_CMSG_AUTH_TIS_RESPONSE  41 /* response (string) */
#define SSH_CMSG_AUTH_KERBEROS   42 /* (KTEXT) */
#define SSH_SMSG_AUTH_KERBEROS_RESPONSE  43 /* (KTEXT) */
#define SSH_CMSG_HAVE_KERBEROS_TGT  44 /* credentials (s) */
#define SSH_CMSG_HAVE_AFS_TOKEN   65 /* token (s) */

/* protocol version 1.5 overloads some version 1.3 message types */
#define SSH_MSG_CHANNEL_INPUT_EOF SSH_MSG_CHANNEL_CLOSE
#define SSH_MSG_CHANNEL_OUTPUT_CLOSE SSH_MSG_CHANNEL_CLOSE_CONFIRMATION

/*
 * Authentication methods.  New types can be added, but old types should not
 * be removed for compatibility.  The maximum allowed value is 31.
 */
#define SSH_AUTH_RHOSTS  1
#define SSH_AUTH_RSA  2
#define SSH_AUTH_PASSWORD 3
#define SSH_AUTH_RHOSTS_RSA 4
#define SSH_AUTH_TIS  5
#define SSH_AUTH_KERBEROS 6
#define SSH_PASS_KERBEROS_TGT 7
/* 8 to 15 are reserved */
#define SSH_PASS_AFS_TOKEN 21

/* Protocol flags.  These are bit masks. */
#define SSH_PROTOFLAG_SCREEN_NUMBER 1 /* X11 forwarding includes screen */
#define SSH_PROTOFLAG_HOST_IN_FWD_OPEN 2 /* forwarding opens contain host */
