merge key exchange patch without rekeying support
[openssh.git] / kex.c
diff --git a/kex.c b/kex.c
index c65e28f..58349fc 100644 (file)
--- a/kex.c
+++ b/kex.c
 #include "monitor.h"
 #include "roaming.h"
 
+#ifdef GSSAPI
+#include "ssh-gss.h"
+#endif
+
 #if OPENSSL_VERSION_NUMBER >= 0x00907000L
 # if defined(HAVE_EVP_SHA256)
 # define evp_ssh_sha256 EVP_sha256
@@ -358,6 +362,20 @@ choose_kex(Kex *k, char *client, char *server)
                k->kex_type = KEX_ECDH_SHA2;
                k->evp_md = kex_ecdh_name_to_evpmd(k->name);
 #endif
+#ifdef GSSAPI
+       } else if (strncmp(k->name, KEX_GSS_GEX_SHA1_ID,
+           sizeof(KEX_GSS_GEX_SHA1_ID) - 1) == 0) {
+               k->kex_type = KEX_GSS_GEX_SHA1;
+               k->evp_md = EVP_sha1();
+       } else if (strncmp(k->name, KEX_GSS_GRP1_SHA1_ID,
+           sizeof(KEX_GSS_GRP1_SHA1_ID) - 1) == 0) {
+               k->kex_type = KEX_GSS_GRP1_SHA1;
+               k->evp_md = EVP_sha1();
+       } else if (strncmp(k->name, KEX_GSS_GRP14_SHA1_ID,
+           sizeof(KEX_GSS_GRP14_SHA1_ID) - 1) == 0) {
+               k->kex_type = KEX_GSS_GRP14_SHA1;
+               k->evp_md = EVP_sha1();
+#endif
        } else
                fatal("bad kex alg %s", k->name);
 }