diff options
author | djm@openbsd.org <djm@openbsd.org> | 2024-01-09 22:39:14 +0100 |
---|---|---|
committer | Damien Miller <djm@mindrot.org> | 2024-01-09 23:24:06 +0100 |
commit | 602f4beeeda5bb0eca181f8753d923a2997d0a51 (patch) | |
tree | e4a08bf83cc528e9732ec83a83a90248abb0daa6 /ssh_api.c | |
parent | nite that recent OSX tun/tap is unsupported (diff) | |
download | openssh-602f4beeeda5bb0eca181f8753d923a2997d0a51.tar.xz openssh-602f4beeeda5bb0eca181f8753d923a2997d0a51.zip |
upstream: adapt ssh_api.c code for kex-strict
from markus@ ok me
OpenBSD-Commit-ID: 4d9f256852af2a5b882b12cae9447f8f00f933ac
Diffstat (limited to 'ssh_api.c')
-rw-r--r-- | ssh_api.c | 14 |
1 files changed, 12 insertions, 2 deletions
@@ -1,4 +1,4 @@ -/* $OpenBSD: ssh_api.c,v 1.27 2021/04/03 06:18:41 djm Exp $ */ +/* $OpenBSD: ssh_api.c,v 1.28 2024/01/09 21:39:14 djm Exp $ */ /* * Copyright (c) 2012 Markus Friedl. All rights reserved. * @@ -82,6 +82,7 @@ int ssh_init(struct ssh **sshp, int is_server, struct kex_params *kex_params) { char *myproposal[PROPOSAL_MAX] = { KEX_CLIENT }; + char *populated[PROPOSAL_MAX]; struct ssh *ssh; char **proposal; static int called; @@ -99,10 +100,19 @@ ssh_init(struct ssh **sshp, int is_server, struct kex_params *kex_params) /* Initialize key exchange */ proposal = kex_params ? kex_params->proposal : myproposal; - if ((r = kex_ready(ssh, proposal)) != 0) { + kex_proposal_populate_entries(ssh, populated, + proposal[PROPOSAL_KEX_ALGS], + proposal[PROPOSAL_ENC_ALGS_CTOS], + proposal[PROPOSAL_MAC_ALGS_CTOS], + proposal[PROPOSAL_COMP_ALGS_CTOS], + proposal[PROPOSAL_SERVER_HOST_KEY_ALGS]); + r = kex_ready(ssh, populated); + kex_proposal_free_entries(populated); + if (r != 0) { ssh_free(ssh); return r; } + ssh->kex->server = is_server; if (is_server) { #ifdef WITH_OPENSSL |