version 1.27, 2021/04/03 06:18:41 |
version 1.28, 2024/01/09 21:39:14 |
|
|
ssh_init(struct ssh **sshp, int is_server, struct kex_params *kex_params) |
ssh_init(struct ssh **sshp, int is_server, struct kex_params *kex_params) |
{ |
{ |
char *myproposal[PROPOSAL_MAX] = { KEX_CLIENT }; |
char *myproposal[PROPOSAL_MAX] = { KEX_CLIENT }; |
|
char *populated[PROPOSAL_MAX]; |
struct ssh *ssh; |
struct ssh *ssh; |
char **proposal; |
char **proposal; |
static int called; |
static int called; |
|
|
|
|
/* Initialize key exchange */ |
/* Initialize key exchange */ |
proposal = kex_params ? kex_params->proposal : myproposal; |
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); |
ssh_free(ssh); |
return r; |
return r; |
} |
} |
|
|
ssh->kex->server = is_server; |
ssh->kex->server = is_server; |
if (is_server) { |
if (is_server) { |
#ifdef WITH_OPENSSL |
#ifdef WITH_OPENSSL |