xref: /dflybsd-src/crypto/openssh/ssh2.h (revision ba1276acd1c8c22d225b1bcf370a14c878644f44)
1*ba1276acSMatthew Dillon /* $OpenBSD: ssh2.h,v 1.22 2023/10/10 03:57:45 djm Exp $ */
218de8d7fSPeter Avalos 
318de8d7fSPeter Avalos /*
418de8d7fSPeter Avalos  * Copyright (c) 2000 Markus Friedl.  All rights reserved.
518de8d7fSPeter Avalos  *
618de8d7fSPeter Avalos  * Redistribution and use in source and binary forms, with or without
718de8d7fSPeter Avalos  * modification, are permitted provided that the following conditions
818de8d7fSPeter Avalos  * are met:
918de8d7fSPeter Avalos  * 1. Redistributions of source code must retain the above copyright
1018de8d7fSPeter Avalos  *    notice, this list of conditions and the following disclaimer.
1118de8d7fSPeter Avalos  * 2. Redistributions in binary form must reproduce the above copyright
1218de8d7fSPeter Avalos  *    notice, this list of conditions and the following disclaimer in the
1318de8d7fSPeter Avalos  *    documentation and/or other materials provided with the distribution.
1418de8d7fSPeter Avalos  *
1518de8d7fSPeter Avalos  * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
1618de8d7fSPeter Avalos  * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
1718de8d7fSPeter Avalos  * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
1818de8d7fSPeter Avalos  * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
1918de8d7fSPeter Avalos  * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
2018de8d7fSPeter Avalos  * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
2118de8d7fSPeter Avalos  * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
2218de8d7fSPeter Avalos  * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
2318de8d7fSPeter Avalos  * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
2418de8d7fSPeter Avalos  * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
2518de8d7fSPeter Avalos  */
2618de8d7fSPeter Avalos 
2718de8d7fSPeter Avalos /*
2850a69bb5SSascha Wildner  * RFC4251:
2918de8d7fSPeter Avalos  *
3018de8d7fSPeter Avalos  *   Transport layer protocol:
3118de8d7fSPeter Avalos  *
3218de8d7fSPeter Avalos  *     1-19     Transport layer generic (e.g. disconnect, ignore, debug,
3318de8d7fSPeter Avalos  *              etc)
3418de8d7fSPeter Avalos  *     20-29    Algorithm negotiation
3518de8d7fSPeter Avalos  *     30-49    Key exchange method specific (numbers can be reused for
3618de8d7fSPeter Avalos  *              different authentication methods)
3718de8d7fSPeter Avalos  *
3818de8d7fSPeter Avalos  *   User authentication protocol:
3918de8d7fSPeter Avalos  *
4018de8d7fSPeter Avalos  *     50-59    User authentication generic
4118de8d7fSPeter Avalos  *     60-79    User authentication method specific (numbers can be reused
4218de8d7fSPeter Avalos  *              for different authentication methods)
4318de8d7fSPeter Avalos  *
4418de8d7fSPeter Avalos  *   Connection protocol:
4518de8d7fSPeter Avalos  *
4618de8d7fSPeter Avalos  *     80-89    Connection protocol generic
4718de8d7fSPeter Avalos  *     90-127   Channel related messages
4818de8d7fSPeter Avalos  *
4918de8d7fSPeter Avalos  *   Reserved for client protocols:
5018de8d7fSPeter Avalos  *
5118de8d7fSPeter Avalos  *     128-191  Reserved
5218de8d7fSPeter Avalos  *
5318de8d7fSPeter Avalos  *   Local extensions:
5418de8d7fSPeter Avalos  *
5518de8d7fSPeter Avalos  *     192-255  Local extensions
56*ba1276acSMatthew Dillon  *     248-255  Local extensions (OpenSSH will never use numbers in this range)
5718de8d7fSPeter Avalos  */
5818de8d7fSPeter Avalos 
59e9778795SPeter Avalos /* special marker for no message */
60e9778795SPeter Avalos 
61e9778795SPeter Avalos #define SSH_MSG_NONE					0
62e9778795SPeter Avalos 
6318de8d7fSPeter Avalos /* ranges */
6418de8d7fSPeter Avalos 
6518de8d7fSPeter Avalos #define SSH2_MSG_TRANSPORT_MIN				1
6618de8d7fSPeter Avalos #define SSH2_MSG_TRANSPORT_MAX				49
6718de8d7fSPeter Avalos #define SSH2_MSG_USERAUTH_MIN				50
6818de8d7fSPeter Avalos #define SSH2_MSG_USERAUTH_MAX				79
6918de8d7fSPeter Avalos #define SSH2_MSG_USERAUTH_PER_METHOD_MIN		60
7018de8d7fSPeter Avalos #define SSH2_MSG_USERAUTH_PER_METHOD_MAX		SSH2_MSG_USERAUTH_MAX
7118de8d7fSPeter Avalos #define SSH2_MSG_CONNECTION_MIN				80
7218de8d7fSPeter Avalos #define SSH2_MSG_CONNECTION_MAX				127
7318de8d7fSPeter Avalos #define SSH2_MSG_RESERVED_MIN				128
7418de8d7fSPeter Avalos #define SSH2_MSG_RESERVED_MAX				191
7518de8d7fSPeter Avalos #define SSH2_MSG_LOCAL_MIN				192
7618de8d7fSPeter Avalos #define SSH2_MSG_LOCAL_MAX				255
7718de8d7fSPeter Avalos #define SSH2_MSG_MIN					1
7818de8d7fSPeter Avalos #define SSH2_MSG_MAX					255
7918de8d7fSPeter Avalos 
8018de8d7fSPeter Avalos /* transport layer: generic */
8118de8d7fSPeter Avalos 
8218de8d7fSPeter Avalos #define SSH2_MSG_DISCONNECT				1
8318de8d7fSPeter Avalos #define SSH2_MSG_IGNORE					2
8418de8d7fSPeter Avalos #define SSH2_MSG_UNIMPLEMENTED				3
8518de8d7fSPeter Avalos #define SSH2_MSG_DEBUG					4
8618de8d7fSPeter Avalos #define SSH2_MSG_SERVICE_REQUEST			5
8718de8d7fSPeter Avalos #define SSH2_MSG_SERVICE_ACCEPT				6
88e9778795SPeter Avalos #define SSH2_MSG_EXT_INFO				7
89*ba1276acSMatthew Dillon #define SSH2_MSG_NEWCOMPRESS				8
9018de8d7fSPeter Avalos 
9118de8d7fSPeter Avalos /* transport layer: alg negotiation */
9218de8d7fSPeter Avalos 
9318de8d7fSPeter Avalos #define SSH2_MSG_KEXINIT				20
9418de8d7fSPeter Avalos #define SSH2_MSG_NEWKEYS				21
9518de8d7fSPeter Avalos 
9618de8d7fSPeter Avalos /* transport layer: kex specific messages, can be reused */
9718de8d7fSPeter Avalos 
9818de8d7fSPeter Avalos #define SSH2_MSG_KEXDH_INIT				30
9918de8d7fSPeter Avalos #define SSH2_MSG_KEXDH_REPLY				31
10018de8d7fSPeter Avalos 
10118de8d7fSPeter Avalos /* dh-group-exchange */
10218de8d7fSPeter Avalos #define SSH2_MSG_KEX_DH_GEX_REQUEST_OLD			30
10318de8d7fSPeter Avalos #define SSH2_MSG_KEX_DH_GEX_GROUP			31
10418de8d7fSPeter Avalos #define SSH2_MSG_KEX_DH_GEX_INIT			32
10518de8d7fSPeter Avalos #define SSH2_MSG_KEX_DH_GEX_REPLY			33
10618de8d7fSPeter Avalos #define SSH2_MSG_KEX_DH_GEX_REQUEST			34
10718de8d7fSPeter Avalos 
1089f304aafSPeter Avalos /* ecdh */
1099f304aafSPeter Avalos #define SSH2_MSG_KEX_ECDH_INIT				30
1109f304aafSPeter Avalos #define SSH2_MSG_KEX_ECDH_REPLY				31
1119f304aafSPeter Avalos 
112*ba1276acSMatthew Dillon /* transport layer: OpenSSH extensions */
113*ba1276acSMatthew Dillon #define SSH2_MSG_PING					192
114*ba1276acSMatthew Dillon #define SSH2_MSG_PONG					193
115*ba1276acSMatthew Dillon 
11618de8d7fSPeter Avalos /* user authentication: generic */
11718de8d7fSPeter Avalos 
11818de8d7fSPeter Avalos #define SSH2_MSG_USERAUTH_REQUEST			50
11918de8d7fSPeter Avalos #define SSH2_MSG_USERAUTH_FAILURE			51
12018de8d7fSPeter Avalos #define SSH2_MSG_USERAUTH_SUCCESS			52
12118de8d7fSPeter Avalos #define SSH2_MSG_USERAUTH_BANNER			53
12218de8d7fSPeter Avalos 
12318de8d7fSPeter Avalos /* user authentication: method specific, can be reused */
12418de8d7fSPeter Avalos 
12518de8d7fSPeter Avalos #define SSH2_MSG_USERAUTH_PK_OK				60
12618de8d7fSPeter Avalos #define SSH2_MSG_USERAUTH_PASSWD_CHANGEREQ		60
12718de8d7fSPeter Avalos #define SSH2_MSG_USERAUTH_INFO_REQUEST			60
12818de8d7fSPeter Avalos #define SSH2_MSG_USERAUTH_INFO_RESPONSE			61
12918de8d7fSPeter Avalos 
13018de8d7fSPeter Avalos /* connection protocol: generic */
13118de8d7fSPeter Avalos 
13218de8d7fSPeter Avalos #define SSH2_MSG_GLOBAL_REQUEST				80
13318de8d7fSPeter Avalos #define SSH2_MSG_REQUEST_SUCCESS			81
13418de8d7fSPeter Avalos #define SSH2_MSG_REQUEST_FAILURE			82
13518de8d7fSPeter Avalos 
13618de8d7fSPeter Avalos /* channel related messages */
13718de8d7fSPeter Avalos 
13818de8d7fSPeter Avalos #define SSH2_MSG_CHANNEL_OPEN				90
13918de8d7fSPeter Avalos #define SSH2_MSG_CHANNEL_OPEN_CONFIRMATION		91
14018de8d7fSPeter Avalos #define SSH2_MSG_CHANNEL_OPEN_FAILURE			92
14118de8d7fSPeter Avalos #define SSH2_MSG_CHANNEL_WINDOW_ADJUST			93
14218de8d7fSPeter Avalos #define SSH2_MSG_CHANNEL_DATA				94
14318de8d7fSPeter Avalos #define SSH2_MSG_CHANNEL_EXTENDED_DATA			95
14418de8d7fSPeter Avalos #define SSH2_MSG_CHANNEL_EOF				96
14518de8d7fSPeter Avalos #define SSH2_MSG_CHANNEL_CLOSE				97
14618de8d7fSPeter Avalos #define SSH2_MSG_CHANNEL_REQUEST			98
14718de8d7fSPeter Avalos #define SSH2_MSG_CHANNEL_SUCCESS			99
14818de8d7fSPeter Avalos #define SSH2_MSG_CHANNEL_FAILURE			100
14918de8d7fSPeter Avalos 
15018de8d7fSPeter Avalos /* disconnect reason code */
15118de8d7fSPeter Avalos 
15218de8d7fSPeter Avalos #define SSH2_DISCONNECT_HOST_NOT_ALLOWED_TO_CONNECT	1
15318de8d7fSPeter Avalos #define SSH2_DISCONNECT_PROTOCOL_ERROR			2
15418de8d7fSPeter Avalos #define SSH2_DISCONNECT_KEY_EXCHANGE_FAILED		3
15518de8d7fSPeter Avalos #define SSH2_DISCONNECT_HOST_AUTHENTICATION_FAILED	4
15618de8d7fSPeter Avalos #define SSH2_DISCONNECT_RESERVED			4
15718de8d7fSPeter Avalos #define SSH2_DISCONNECT_MAC_ERROR			5
15818de8d7fSPeter Avalos #define SSH2_DISCONNECT_COMPRESSION_ERROR		6
15918de8d7fSPeter Avalos #define SSH2_DISCONNECT_SERVICE_NOT_AVAILABLE		7
16018de8d7fSPeter Avalos #define SSH2_DISCONNECT_PROTOCOL_VERSION_NOT_SUPPORTED	8
16118de8d7fSPeter Avalos #define SSH2_DISCONNECT_HOST_KEY_NOT_VERIFIABLE		9
16218de8d7fSPeter Avalos #define SSH2_DISCONNECT_CONNECTION_LOST			10
16318de8d7fSPeter Avalos #define SSH2_DISCONNECT_BY_APPLICATION			11
16418de8d7fSPeter Avalos #define SSH2_DISCONNECT_TOO_MANY_CONNECTIONS		12
16518de8d7fSPeter Avalos #define SSH2_DISCONNECT_AUTH_CANCELLED_BY_USER		13
16618de8d7fSPeter Avalos #define SSH2_DISCONNECT_NO_MORE_AUTH_METHODS_AVAILABLE	14
16718de8d7fSPeter Avalos #define SSH2_DISCONNECT_ILLEGAL_USER_NAME		15
16818de8d7fSPeter Avalos 
16918de8d7fSPeter Avalos /* misc */
17018de8d7fSPeter Avalos 
17118de8d7fSPeter Avalos #define SSH2_OPEN_ADMINISTRATIVELY_PROHIBITED		1
17218de8d7fSPeter Avalos #define SSH2_OPEN_CONNECT_FAILED			2
17318de8d7fSPeter Avalos #define SSH2_OPEN_UNKNOWN_CHANNEL_TYPE			3
17418de8d7fSPeter Avalos #define SSH2_OPEN_RESOURCE_SHORTAGE			4
17518de8d7fSPeter Avalos 
17618de8d7fSPeter Avalos #define SSH2_EXTENDED_DATA_STDERR			1
177cb5eb4f1SPeter Avalos 
178856ea928SPeter Avalos /* Certificate types for OpenSSH certificate keys extension */
179856ea928SPeter Avalos #define SSH2_CERT_TYPE_USER				1
180856ea928SPeter Avalos #define SSH2_CERT_TYPE_HOST				2
181