1323129Sdes/* $OpenBSD: ssh2.h,v 1.18 2016/05/04 14:22:33 markus Exp $ */
292555Sdes
360573Skris/*
465668Skris * Copyright (c) 2000 Markus Friedl.  All rights reserved.
565668Skris *
665668Skris * Redistribution and use in source and binary forms, with or without
765668Skris * modification, are permitted provided that the following conditions
865668Skris * are met:
965668Skris * 1. Redistributions of source code must retain the above copyright
1065668Skris *    notice, this list of conditions and the following disclaimer.
1165668Skris * 2. Redistributions in binary form must reproduce the above copyright
1265668Skris *    notice, this list of conditions and the following disclaimer in the
1365668Skris *    documentation and/or other materials provided with the distribution.
1465668Skris *
1565668Skris * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
1665668Skris * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
1765668Skris * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
1865668Skris * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
1965668Skris * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
2065668Skris * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
2165668Skris * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
2265668Skris * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
2365668Skris * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
2465668Skris * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
2565668Skris */
2665668Skris
2765668Skris/*
2861209Skris * draft-ietf-secsh-architecture-05.txt
2960573Skris *
3060573Skris *   Transport layer protocol:
3160573Skris *
3260573Skris *     1-19     Transport layer generic (e.g. disconnect, ignore, debug,
3360573Skris *              etc)
3460573Skris *     20-29    Algorithm negotiation
3560573Skris *     30-49    Key exchange method specific (numbers can be reused for
3660573Skris *              different authentication methods)
3760573Skris *
3860573Skris *   User authentication protocol:
3960573Skris *
4060573Skris *     50-59    User authentication generic
4160573Skris *     60-79    User authentication method specific (numbers can be reused
4260573Skris *              for different authentication methods)
4360573Skris *
4460573Skris *   Connection protocol:
4560573Skris *
4660573Skris *     80-89    Connection protocol generic
4760573Skris *     90-127   Channel related messages
4860573Skris *
4960573Skris *   Reserved for client protocols:
5060573Skris *
5160573Skris *     128-191  Reserved
5260573Skris *
5360573Skris *   Local extensions:
5460573Skris *
5560573Skris *     192-255  Local extensions
5660573Skris */
5760573Skris
58323129Sdes/* special marker for no message */
59323129Sdes
60323129Sdes#define SSH_MSG_NONE					0
61323129Sdes
6292555Sdes/* ranges */
6392555Sdes
6492555Sdes#define SSH2_MSG_TRANSPORT_MIN				1
6592555Sdes#define SSH2_MSG_TRANSPORT_MAX				49
6692555Sdes#define SSH2_MSG_USERAUTH_MIN				50
6792555Sdes#define SSH2_MSG_USERAUTH_MAX				79
68124208Sdes#define SSH2_MSG_USERAUTH_PER_METHOD_MIN		60
69124208Sdes#define SSH2_MSG_USERAUTH_PER_METHOD_MAX		SSH2_MSG_USERAUTH_MAX
7092555Sdes#define SSH2_MSG_CONNECTION_MIN				80
7192555Sdes#define SSH2_MSG_CONNECTION_MAX				127
7292555Sdes#define SSH2_MSG_RESERVED_MIN				128
7392555Sdes#define SSH2_MSG_RESERVED_MAX				191
7492555Sdes#define SSH2_MSG_LOCAL_MIN				192
7592555Sdes#define SSH2_MSG_LOCAL_MAX				255
7692555Sdes#define SSH2_MSG_MIN					1
7792555Sdes#define SSH2_MSG_MAX					255
7892555Sdes
7960573Skris/* transport layer: generic */
8060573Skris
8160573Skris#define SSH2_MSG_DISCONNECT				1
8260573Skris#define SSH2_MSG_IGNORE					2
8360573Skris#define SSH2_MSG_UNIMPLEMENTED				3
8460573Skris#define SSH2_MSG_DEBUG					4
8560573Skris#define SSH2_MSG_SERVICE_REQUEST			5
8660573Skris#define SSH2_MSG_SERVICE_ACCEPT				6
87296633Sdes#define SSH2_MSG_EXT_INFO				7
8860573Skris
8960573Skris/* transport layer: alg negotiation */
9060573Skris
9160573Skris#define SSH2_MSG_KEXINIT				20
9260573Skris#define SSH2_MSG_NEWKEYS				21
9360573Skris
9460573Skris/* transport layer: kex specific messages, can be reused */
9560573Skris
9660573Skris#define SSH2_MSG_KEXDH_INIT				30
9760573Skris#define SSH2_MSG_KEXDH_REPLY				31
9860573Skris
9969587Sgreen/* dh-group-exchange */
10076259Sgreen#define SSH2_MSG_KEX_DH_GEX_REQUEST_OLD			30
10169587Sgreen#define SSH2_MSG_KEX_DH_GEX_GROUP			31
10269587Sgreen#define SSH2_MSG_KEX_DH_GEX_INIT			32
10369587Sgreen#define SSH2_MSG_KEX_DH_GEX_REPLY			33
10476259Sgreen#define SSH2_MSG_KEX_DH_GEX_REQUEST			34
10569587Sgreen
106221420Sdes/* ecdh */
107221420Sdes#define SSH2_MSG_KEX_ECDH_INIT				30
108221420Sdes#define SSH2_MSG_KEX_ECDH_REPLY				31
109221420Sdes
11060573Skris/* user authentication: generic */
11160573Skris
11260573Skris#define SSH2_MSG_USERAUTH_REQUEST			50
11360573Skris#define SSH2_MSG_USERAUTH_FAILURE			51
11460573Skris#define SSH2_MSG_USERAUTH_SUCCESS			52
11560573Skris#define SSH2_MSG_USERAUTH_BANNER			53
11660573Skris
11760573Skris/* user authentication: method specific, can be reused */
11860573Skris
11960573Skris#define SSH2_MSG_USERAUTH_PK_OK				60
12060573Skris#define SSH2_MSG_USERAUTH_PASSWD_CHANGEREQ		60
12160573Skris#define SSH2_MSG_USERAUTH_INFO_REQUEST			60
12260573Skris#define SSH2_MSG_USERAUTH_INFO_RESPONSE			61
12360573Skris
12460573Skris/* connection protocol: generic */
12560573Skris
12660573Skris#define SSH2_MSG_GLOBAL_REQUEST				80
12760573Skris#define SSH2_MSG_REQUEST_SUCCESS			81
12860573Skris#define SSH2_MSG_REQUEST_FAILURE			82
12960573Skris
13060573Skris/* channel related messages */
13160573Skris
13260573Skris#define SSH2_MSG_CHANNEL_OPEN				90
13360573Skris#define SSH2_MSG_CHANNEL_OPEN_CONFIRMATION		91
13460573Skris#define SSH2_MSG_CHANNEL_OPEN_FAILURE			92
13560573Skris#define SSH2_MSG_CHANNEL_WINDOW_ADJUST			93
13660573Skris#define SSH2_MSG_CHANNEL_DATA				94
13760573Skris#define SSH2_MSG_CHANNEL_EXTENDED_DATA			95
13860573Skris#define SSH2_MSG_CHANNEL_EOF				96
13960573Skris#define SSH2_MSG_CHANNEL_CLOSE				97
14060573Skris#define SSH2_MSG_CHANNEL_REQUEST			98
14160573Skris#define SSH2_MSG_CHANNEL_SUCCESS			99
14260573Skris#define SSH2_MSG_CHANNEL_FAILURE			100
14360573Skris
14460573Skris/* disconnect reason code */
14560573Skris
14660573Skris#define SSH2_DISCONNECT_HOST_NOT_ALLOWED_TO_CONNECT	1
14760573Skris#define SSH2_DISCONNECT_PROTOCOL_ERROR			2
14860573Skris#define SSH2_DISCONNECT_KEY_EXCHANGE_FAILED		3
14960573Skris#define SSH2_DISCONNECT_HOST_AUTHENTICATION_FAILED	4
15061209Skris#define SSH2_DISCONNECT_RESERVED			4
15160573Skris#define SSH2_DISCONNECT_MAC_ERROR			5
15260573Skris#define SSH2_DISCONNECT_COMPRESSION_ERROR		6
15360573Skris#define SSH2_DISCONNECT_SERVICE_NOT_AVAILABLE		7
15460573Skris#define SSH2_DISCONNECT_PROTOCOL_VERSION_NOT_SUPPORTED	8
15560573Skris#define SSH2_DISCONNECT_HOST_KEY_NOT_VERIFIABLE		9
15660573Skris#define SSH2_DISCONNECT_CONNECTION_LOST			10
15760573Skris#define SSH2_DISCONNECT_BY_APPLICATION			11
15861209Skris#define SSH2_DISCONNECT_TOO_MANY_CONNECTIONS		12
15961209Skris#define SSH2_DISCONNECT_AUTH_CANCELLED_BY_USER		13
16061209Skris#define SSH2_DISCONNECT_NO_MORE_AUTH_METHODS_AVAILABLE	14
16161209Skris#define SSH2_DISCONNECT_ILLEGAL_USER_NAME		15
16260573Skris
16360573Skris/* misc */
16460573Skris
16560573Skris#define SSH2_OPEN_ADMINISTRATIVELY_PROHIBITED		1
16660573Skris#define SSH2_OPEN_CONNECT_FAILED			2
16760573Skris#define SSH2_OPEN_UNKNOWN_CHANNEL_TYPE			3
16860573Skris#define SSH2_OPEN_RESOURCE_SHORTAGE			4
16960573Skris
17060573Skris#define SSH2_EXTENDED_DATA_STDERR			1
171192595Sdes
172204917Sdes/* Certificate types for OpenSSH certificate keys extension */
173204917Sdes#define SSH2_CERT_TYPE_USER				1
174204917Sdes#define SSH2_CERT_TYPE_HOST				2
175