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