blob: a22649a2e76cd64b2fd1bf57854f8f5b2adbb813 [file] [log] [blame]
djm@openbsd.org45f17a12019-11-01 02:32:05 +00001/* $OpenBSD: myproposal.h,v 1.60 2019/11/01 02:32:05 djm Exp $ */
Ben Lindstrom36579d32001-01-29 07:39:26 +00002
Damien Millere4340be2000-09-16 13:29:08 +11003/*
4 * Copyright (c) 2000 Markus Friedl. All rights reserved.
5 *
6 * Redistribution and use in source and binary forms, with or without
7 * modification, are permitted provided that the following conditions
8 * are met:
9 * 1. Redistributions of source code must retain the above copyright
10 * notice, this list of conditions and the following disclaimer.
11 * 2. Redistributions in binary form must reproduce the above copyright
12 * notice, this list of conditions and the following disclaimer in the
13 * documentation and/or other materials provided with the distribution.
14 *
15 * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
16 * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
17 * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
18 * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
19 * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
20 * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
21 * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
22 * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
23 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
24 * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
25 */
Tim Rice425a6882006-03-15 20:17:05 -080026
Darren Tucker850ec172019-10-28 15:57:22 +110027#ifdef WITH_OPENSSL
Tim Rice425a6882006-03-15 20:17:05 -080028#include <openssl/opensslv.h>
Darren Tucker850ec172019-10-28 15:57:22 +110029#endif
Tim Rice425a6882006-03-15 20:17:05 -080030
Darren Tuckerb8ae92d2013-06-11 12:10:02 +100031/* conditional algorithm support */
32
Damien Miller6af914a2010-09-10 11:39:26 +100033#ifdef OPENSSL_HAS_ECC
Darren Tucker37bcef52013-11-09 18:39:25 +110034#ifdef OPENSSL_HAS_NISTP521
Damien Miller6af914a2010-09-10 11:39:26 +100035# define KEX_ECDH_METHODS \
Damien Millereb8b60e2010-08-31 22:41:14 +100036 "ecdh-sha2-nistp256," \
37 "ecdh-sha2-nistp384," \
Damien Miller6af914a2010-09-10 11:39:26 +100038 "ecdh-sha2-nistp521,"
39# define HOSTKEY_ECDSA_CERT_METHODS \
40 "ecdsa-sha2-nistp256-cert-v01@openssh.com," \
41 "ecdsa-sha2-nistp384-cert-v01@openssh.com," \
42 "ecdsa-sha2-nistp521-cert-v01@openssh.com,"
43# define HOSTKEY_ECDSA_METHODS \
44 "ecdsa-sha2-nistp256," \
45 "ecdsa-sha2-nistp384," \
46 "ecdsa-sha2-nistp521,"
47#else
Darren Tucker37bcef52013-11-09 18:39:25 +110048# define KEX_ECDH_METHODS \
49 "ecdh-sha2-nistp256," \
50 "ecdh-sha2-nistp384,"
51# define HOSTKEY_ECDSA_CERT_METHODS \
52 "ecdsa-sha2-nistp256-cert-v01@openssh.com," \
53 "ecdsa-sha2-nistp384-cert-v01@openssh.com,"
54# define HOSTKEY_ECDSA_METHODS \
55 "ecdsa-sha2-nistp256," \
56 "ecdsa-sha2-nistp384,"
57#endif
58#else
Damien Miller6af914a2010-09-10 11:39:26 +100059# define KEX_ECDH_METHODS
60# define HOSTKEY_ECDSA_CERT_METHODS
61# define HOSTKEY_ECDSA_METHODS
62#endif
63
Darren Tucker97b62f42013-06-11 11:47:24 +100064#ifdef OPENSSL_HAVE_EVPGCM
65# define AESGCM_CIPHER_MODES \
djm@openbsd.orga22b9ef2015-03-24 09:17:21 +000066 ",aes128-gcm@openssh.com,aes256-gcm@openssh.com"
Darren Tucker97b62f42013-06-11 11:47:24 +100067#else
68# define AESGCM_CIPHER_MODES
69#endif
70
Darren Tucker2ea9eb72013-06-05 15:04:00 +100071#ifdef HAVE_EVP_SHA256
djm@openbsd.org0e8eeec2016-05-02 10:26:04 +000072# define KEX_SHA2_METHODS \
73 "diffie-hellman-group-exchange-sha256," \
74 "diffie-hellman-group16-sha512," \
75 "diffie-hellman-group18-sha512,"
76# define KEX_SHA2_GROUP14 \
77 "diffie-hellman-group14-sha256,"
Darren Tuckerb8ae92d2013-06-11 12:10:02 +100078#define SHA2_HMAC_MODES \
79 "hmac-sha2-256," \
80 "hmac-sha2-512,"
Damien Miller6af914a2010-09-10 11:39:26 +100081#else
djm@openbsd.org0e8eeec2016-05-02 10:26:04 +000082# define KEX_SHA2_METHODS
83# define KEX_SHA2_GROUP14
Darren Tuckerb8ae92d2013-06-11 12:10:02 +100084# define SHA2_HMAC_MODES
Damien Miller6af914a2010-09-10 11:39:26 +100085#endif
86
Damien Miller1f0311c2014-05-15 14:24:09 +100087#ifdef WITH_OPENSSL
Damien Miller2f3d1e72014-08-19 11:14:36 +100088# ifdef HAVE_EVP_SHA256
djm@openbsd.org04937662016-09-22 17:52:53 +000089# define KEX_CURVE25519_METHODS \
90 "curve25519-sha256," \
91 "curve25519-sha256@libssh.org,"
Darren Tuckerd7af0cc2014-06-11 07:37:25 +100092# else
93# define KEX_CURVE25519_METHODS ""
94# endif
djm@openbsd.org9b611302019-02-23 08:20:43 +000095#define KEX_SERVER_KEX \
Darren Tuckerd7af0cc2014-06-11 07:37:25 +100096 KEX_CURVE25519_METHODS \
Damien Miller6af914a2010-09-10 11:39:26 +100097 KEX_ECDH_METHODS \
djm@openbsd.org9b611302019-02-23 08:20:43 +000098 KEX_SHA2_METHODS \
djm@openbsd.org0e8eeec2016-05-02 10:26:04 +000099 KEX_SHA2_GROUP14 \
djm@openbsd.orgbdfd29f2015-07-03 03:47:00 +0000100 "diffie-hellman-group14-sha1"
Tim Rice425a6882006-03-15 20:17:05 -0800101
djm@openbsd.org9b611302019-02-23 08:20:43 +0000102#define KEX_CLIENT_KEX KEX_SERVER_KEX
103
Damien Miller4e270b02010-04-16 15:56:21 +1000104#define KEX_DEFAULT_PK_ALG \
Damien Miller6af914a2010-09-10 11:39:26 +1000105 HOSTKEY_ECDSA_CERT_METHODS \
Damien Miller5be9d9e2013-12-07 11:24:01 +1100106 "ssh-ed25519-cert-v01@openssh.com," \
djm@openbsd.org4ba0d542018-07-03 11:39:54 +0000107 "rsa-sha2-512-cert-v01@openssh.com," \
108 "rsa-sha2-256-cert-v01@openssh.com," \
Damien Millereb8b60e2010-08-31 22:41:14 +1000109 "ssh-rsa-cert-v01@openssh.com," \
Damien Miller6af914a2010-09-10 11:39:26 +1000110 HOSTKEY_ECDSA_METHODS \
Damien Miller5be9d9e2013-12-07 11:24:01 +1100111 "ssh-ed25519," \
markus@openbsd.org76c9fbb2015-12-04 16:41:28 +0000112 "rsa-sha2-512," \
markus@openbsd.org3da893f2015-12-05 20:53:21 +0000113 "rsa-sha2-256," \
markus@openbsd.org76c9fbb2015-12-04 16:41:28 +0000114 "ssh-rsa"
Damien Miller67081b52009-01-28 16:33:31 +1100115
Darren Tuckerb8ae92d2013-06-11 12:10:02 +1000116/* the actual algorithms */
117
Damien Miller9235a032014-04-20 13:17:20 +1000118#define KEX_SERVER_ENCRYPT \
djm@openbsd.orga22b9ef2015-03-24 09:17:21 +0000119 "chacha20-poly1305@openssh.com," \
120 "aes128-ctr,aes192-ctr,aes256-ctr" \
121 AESGCM_CIPHER_MODES
Damien Miller9235a032014-04-20 13:17:20 +1000122
djm@openbsd.org70c12182017-05-07 23:13:42 +0000123#define KEX_CLIENT_ENCRYPT KEX_SERVER_ENCRYPT
Darren Tuckerb8ae92d2013-06-11 12:10:02 +1000124
Damien Miller9235a032014-04-20 13:17:20 +1000125#define KEX_SERVER_MAC \
Damien Milleraf43a7a2012-12-12 10:46:31 +1100126 "umac-64-etm@openssh.com," \
127 "umac-128-etm@openssh.com," \
128 "hmac-sha2-256-etm@openssh.com," \
129 "hmac-sha2-512-etm@openssh.com," \
Damien Miller6262d762014-07-17 09:52:07 +1000130 "hmac-sha1-etm@openssh.com," \
Damien Miller9235a032014-04-20 13:17:20 +1000131 "umac-64@openssh.com," \
132 "umac-128@openssh.com," \
133 "hmac-sha2-256," \
Damien Miller6262d762014-07-17 09:52:07 +1000134 "hmac-sha2-512," \
135 "hmac-sha1"
Damien Miller9235a032014-04-20 13:17:20 +1000136
djm@openbsd.org714e3672016-02-09 05:30:04 +0000137#define KEX_CLIENT_MAC KEX_SERVER_MAC
Damien Miller20bd4532011-08-06 06:17:30 +1000138
djm@openbsd.org4cc259b2018-09-12 01:34:02 +0000139/* Not a KEX value, but here so all the algorithm defaults are together */
140#define SSH_ALLOWED_CA_SIGALGS \
Darren Tucker1ac98be2019-05-17 12:42:17 +1000141 HOSTKEY_ECDSA_METHODS \
djm@openbsd.org4cc259b2018-09-12 01:34:02 +0000142 "ssh-ed25519," \
143 "rsa-sha2-512," \
144 "rsa-sha2-256," \
145 "ssh-rsa"
146
djm@openbsd.org01a06702019-10-31 21:17:49 +0000147#define PUBKEY_DEFAULT_PK_ALG \
148 "sk-ecdsa-sha2-nistp256-cert-v01@openssh.com," \
149 "ecdsa-sha2-nistp256-cert-v01@openssh.com," \
150 "ecdsa-sha2-nistp384-cert-v01@openssh.com," \
151 "ecdsa-sha2-nistp521-cert-v01@openssh.com," \
152 "ssh-ed25519-cert-v01@openssh.com," \
153 "rsa-sha2-512-cert-v01@openssh.com," \
154 "rsa-sha2-256-cert-v01@openssh.com," \
155 "ssh-rsa-cert-v01@openssh.com," \
156 "sk-ecdsa-sha2-nistp256@openssh.com," \
157 "ecdsa-sha2-nistp256," \
158 "ecdsa-sha2-nistp384," \
159 "ecdsa-sha2-nistp521," \
160 "ssh-ed25519," \
161 "rsa-sha2-512," \
162 "rsa-sha2-256," \
163 "ssh-rsa"
164
djm@openbsd.org714e3672016-02-09 05:30:04 +0000165#else /* WITH_OPENSSL */
Damien Miller1f0311c2014-05-15 14:24:09 +1000166
167#define KEX_SERVER_KEX \
djm@openbsd.org04937662016-09-22 17:52:53 +0000168 "curve25519-sha256," \
Damien Miller1f0311c2014-05-15 14:24:09 +1000169 "curve25519-sha256@libssh.org"
170#define KEX_DEFAULT_PK_ALG \
171 "ssh-ed25519-cert-v01@openssh.com," \
172 "ssh-ed25519"
djm@openbsd.org01a06702019-10-31 21:17:49 +0000173#define PUBKEY_DEFAULT_PK_ALG KEX_DEFAULT_PK_ALG
Damien Miller1f0311c2014-05-15 14:24:09 +1000174#define KEX_SERVER_ENCRYPT \
jsg@openbsd.org39bfbf72015-04-21 07:01:00 +0000175 "chacha20-poly1305@openssh.com," \
djm@openbsd.orga22b9ef2015-03-24 09:17:21 +0000176 "aes128-ctr,aes192-ctr,aes256-ctr"
Damien Miller1f0311c2014-05-15 14:24:09 +1000177#define KEX_SERVER_MAC \
Damien Miller294c58a2014-05-15 14:35:03 +1000178 "umac-64-etm@openssh.com," \
179 "umac-128-etm@openssh.com," \
Damien Miller1f0311c2014-05-15 14:24:09 +1000180 "hmac-sha2-256-etm@openssh.com," \
181 "hmac-sha2-512-etm@openssh.com," \
Damien Miller6262d762014-07-17 09:52:07 +1000182 "hmac-sha1-etm@openssh.com," \
Damien Miller294c58a2014-05-15 14:35:03 +1000183 "umac-64@openssh.com," \
184 "umac-128@openssh.com," \
Damien Miller1f0311c2014-05-15 14:24:09 +1000185 "hmac-sha2-256," \
Damien Miller6262d762014-07-17 09:52:07 +1000186 "hmac-sha2-512," \
187 "hmac-sha1"
Damien Miller1f0311c2014-05-15 14:24:09 +1000188
189#define KEX_CLIENT_KEX KEX_SERVER_KEX
190#define KEX_CLIENT_ENCRYPT KEX_SERVER_ENCRYPT
Damien Miller6262d762014-07-17 09:52:07 +1000191#define KEX_CLIENT_MAC KEX_SERVER_MAC
Damien Miller1f0311c2014-05-15 14:24:09 +1000192
djm@openbsd.org4cc259b2018-09-12 01:34:02 +0000193#define SSH_ALLOWED_CA_SIGALGS "ssh-ed25519"
194
Damien Miller1f0311c2014-05-15 14:24:09 +1000195#endif /* WITH_OPENSSL */
196
djm@openbsd.org0082fba2016-09-28 16:33:06 +0000197#define KEX_DEFAULT_COMP "none,zlib@openssh.com"
Damien Miller1383bd82000-04-06 12:32:37 +1000198#define KEX_DEFAULT_LANG ""
199
Damien Miller9235a032014-04-20 13:17:20 +1000200#define KEX_CLIENT \
201 KEX_CLIENT_KEX, \
202 KEX_DEFAULT_PK_ALG, \
203 KEX_CLIENT_ENCRYPT, \
204 KEX_CLIENT_ENCRYPT, \
205 KEX_CLIENT_MAC, \
206 KEX_CLIENT_MAC, \
207 KEX_DEFAULT_COMP, \
208 KEX_DEFAULT_COMP, \
209 KEX_DEFAULT_LANG, \
Damien Miller1383bd82000-04-06 12:32:37 +1000210 KEX_DEFAULT_LANG
Damien Miller9235a032014-04-20 13:17:20 +1000211
212#define KEX_SERVER \
213 KEX_SERVER_KEX, \
214 KEX_DEFAULT_PK_ALG, \
215 KEX_SERVER_ENCRYPT, \
216 KEX_SERVER_ENCRYPT, \
217 KEX_SERVER_MAC, \
218 KEX_SERVER_MAC, \
219 KEX_DEFAULT_COMP, \
220 KEX_DEFAULT_COMP, \
221 KEX_DEFAULT_LANG, \
222 KEX_DEFAULT_LANG
223