diff options
Diffstat (limited to 'kex.c')
-rw-r--r-- | kex.c | 21 |
1 files changed, 20 insertions, 1 deletions
@@ -1,4 +1,4 @@ | |||
1 | /* $OpenBSD: kex.c,v 1.116 2016/01/14 16:17:39 markus Exp $ */ | 1 | /* $OpenBSD: kex.c,v 1.117 2016/02/08 10:57:07 djm Exp $ */ |
2 | /* | 2 | /* |
3 | * Copyright (c) 2000, 2001 Markus Friedl. All rights reserved. | 3 | * Copyright (c) 2000, 2001 Markus Friedl. All rights reserved. |
4 | * | 4 | * |
@@ -606,6 +606,25 @@ kex_setup(struct ssh *ssh, char *proposal[PROPOSAL_MAX]) | |||
606 | return 0; | 606 | return 0; |
607 | } | 607 | } |
608 | 608 | ||
609 | /* | ||
610 | * Request key re-exchange, returns 0 on success or a ssherr.h error | ||
611 | * code otherwise. Must not be called if KEX is incomplete or in-progress. | ||
612 | */ | ||
613 | int | ||
614 | kex_start_rekex(struct ssh *ssh) | ||
615 | { | ||
616 | if (ssh->kex == NULL) { | ||
617 | error("%s: no kex", __func__); | ||
618 | return SSH_ERR_INTERNAL_ERROR; | ||
619 | } | ||
620 | if (ssh->kex->done == 0) { | ||
621 | error("%s: requested twice", __func__); | ||
622 | return SSH_ERR_INTERNAL_ERROR; | ||
623 | } | ||
624 | ssh->kex->done = 0; | ||
625 | return kex_send_kexinit(ssh); | ||
626 | } | ||
627 | |||
609 | static int | 628 | static int |
610 | choose_enc(struct sshenc *enc, char *client, char *server) | 629 | choose_enc(struct sshenc *enc, char *client, char *server) |
611 | { | 630 | { |