]> andersk Git - openssh.git/blobdiff - kex.c
- djm@cvs.openbsd.org 2010/01/30 02:54:53
[openssh.git] / kex.c
diff --git a/kex.c b/kex.c
index ad2e93cc10c0bbb2b6b9b907bec65aa7529338fd..148cfee8046ad5af46be99c83f6b9affe0ec768a 100644 (file)
--- a/kex.c
+++ b/kex.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: kex.c,v 1.78 2007/05/30 05:58:13 djm Exp $ */
+/* $OpenBSD: kex.c,v 1.82 2009/10/24 11:13:54 andreas Exp $ */
 /*
  * Copyright (c) 2000, 2001 Markus Friedl.  All rights reserved.
  *
@@ -48,8 +48,7 @@
 #include "match.h"
 #include "dispatch.h"
 #include "monitor.h"
-
-#define KEX_COOKIE_LEN 16
+#include "roaming.h"
 
 #if OPENSSL_VERSION_NUMBER >= 0x00907000L
 # if defined(HAVE_EVP_SHA256)
@@ -279,7 +278,7 @@ choose_mac(Mac *mac, char *client, char *server)
        if (name == NULL)
                fatal("no matching mac found: client %s server %s",
                    client, server);
-       if (mac_init(mac, name) < 0)
+       if (mac_setup(mac, name) < 0)
                fatal("unsupported mac %s", name);
        /* truncate the key */
        if (datafellows & SSH_BUG_HMAC)
@@ -388,6 +387,16 @@ kex_choose_conf(Kex *kex)
                sprop=peer;
        }
 
+       /* Check whether server offers roaming */
+       if (!kex->server) {
+               char *roaming;
+               roaming = match_list(KEX_RESUME, peer[PROPOSAL_KEX_ALGS], NULL);
+               if (roaming) {
+                       kex->roaming = 1;
+                       xfree(roaming);
+               }
+       }
+
        /* Algorithm Negotiation */
        for (mode = 0; mode < MODE_MAX; mode++) {
                newkeys = xcalloc(1, sizeof(*newkeys));
This page took 0.050398 seconds and 4 git commands to generate.