diff options
Diffstat (limited to 'compat.c')
-rw-r--r-- | compat.c | 17 |
1 files changed, 16 insertions, 1 deletions
@@ -95,6 +95,9 @@ compat_datafellows(const char *version) | |||
95 | { "Sun_SSH_1.0*", SSH_BUG_NOREKEY|SSH_BUG_EXTEOF}, | 95 | { "Sun_SSH_1.0*", SSH_BUG_NOREKEY|SSH_BUG_EXTEOF}, |
96 | { "OpenSSH_4*", 0 }, | 96 | { "OpenSSH_4*", 0 }, |
97 | { "OpenSSH_5*", SSH_NEW_OPENSSH|SSH_BUG_DYNAMIC_RPORT}, | 97 | { "OpenSSH_5*", SSH_NEW_OPENSSH|SSH_BUG_DYNAMIC_RPORT}, |
98 | { "OpenSSH_6.6.1*", SSH_NEW_OPENSSH}, | ||
99 | { "OpenSSH_6.5*," | ||
100 | "OpenSSH_6.6*", SSH_NEW_OPENSSH|SSH_BUG_CURVE25519PAD}, | ||
98 | { "OpenSSH*", SSH_NEW_OPENSSH }, | 101 | { "OpenSSH*", SSH_NEW_OPENSSH }, |
99 | { "*MindTerm*", 0 }, | 102 | { "*MindTerm*", 0 }, |
100 | { "2.1.0*", SSH_BUG_SIGBLOB|SSH_BUG_HMAC| | 103 | { "2.1.0*", SSH_BUG_SIGBLOB|SSH_BUG_HMAC| |
@@ -251,7 +254,6 @@ compat_cipher_proposal(char *cipher_prop) | |||
251 | return cipher_prop; | 254 | return cipher_prop; |
252 | } | 255 | } |
253 | 256 | ||
254 | |||
255 | char * | 257 | char * |
256 | compat_pkalg_proposal(char *pkalg_prop) | 258 | compat_pkalg_proposal(char *pkalg_prop) |
257 | { | 259 | { |
@@ -265,3 +267,16 @@ compat_pkalg_proposal(char *pkalg_prop) | |||
265 | return pkalg_prop; | 267 | return pkalg_prop; |
266 | } | 268 | } |
267 | 269 | ||
270 | char * | ||
271 | compat_kex_proposal(char *kex_prop) | ||
272 | { | ||
273 | if (!(datafellows & SSH_BUG_CURVE25519PAD)) | ||
274 | return kex_prop; | ||
275 | debug2("%s: original KEX proposal: %s", __func__, kex_prop); | ||
276 | kex_prop = filter_proposal(kex_prop, "curve25519-sha256@libssh.org"); | ||
277 | debug2("%s: compat KEX proposal: %s", __func__, kex_prop); | ||
278 | if (*kex_prop == '\0') | ||
279 | fatal("No supported key exchange algorithms found"); | ||
280 | return kex_prop; | ||
281 | } | ||
282 | |||