diff options
author | Aris Adamantiadis <aris@0xbadc0de.be> | 2015-12-23 12:50:00 +0100 |
---|---|---|
committer | Andreas Schneider <asn@cryptomilk.org> | 2019-01-24 09:19:59 +0100 |
commit | e42a423a247c8c9f0bd58d32a8b80c522f7b43f6 (patch) | |
tree | 379e03c22a6db299ba298601fb1769d8ae18af57 /src/wrapper.c | |
parent | 602a1defea06f0f63d8c6bdd5b164b86dbfdb971 (diff) | |
download | libssh-e42a423a247c8c9f0bd58d32a8b80c522f7b43f6.tar.gz libssh-e42a423a247c8c9f0bd58d32a8b80c522f7b43f6.tar.xz libssh-e42a423a247c8c9f0bd58d32a8b80c522f7b43f6.zip |
kex: use runtime callbacks (server)
Signed-off-by: Aris Adamantiadis <aris@0xbadc0de.be>
Reviewed-by: Jakub Jelen <jjelen@redhat.com>
Reviewed-by: Andreas Schneider <asn@cryptomilk.org>
Diffstat (limited to 'src/wrapper.c')
-rw-r--r-- | src/wrapper.c | 32 |
1 files changed, 32 insertions, 0 deletions
diff --git a/src/wrapper.c b/src/wrapper.c index 7724dcf6..b4429e47 100644 --- a/src/wrapper.c +++ b/src/wrapper.c @@ -48,6 +48,9 @@ #include "libssh/wrapper.h" #include "libssh/pki.h" #include "libssh/poly1305.h" +#include "libssh/dh.h" +#include "libssh/ecdh.h" +#include "libssh/curve25519.h" static struct ssh_hmac_struct ssh_hmac_tab[] = { { "hmac-sha1", SSH_HMAC_SHA1 }, @@ -530,6 +533,35 @@ int crypt_set_algorithms_server(ssh_session session){ method = session->next_crypto->kex_methods[SSH_HOSTKEYS]; session->srv.hostkey = ssh_key_type_from_signature_name(method); + /* setup DH key exchange type */ + switch (session->next_crypto->kex_type) { + case SSH_KEX_DH_GROUP1_SHA1: + case SSH_KEX_DH_GROUP14_SHA1: + case SSH_KEX_DH_GROUP16_SHA512: + case SSH_KEX_DH_GROUP18_SHA512: + ssh_server_dh_init(session); + break; +#ifdef HAVE_ECDH + case SSH_KEX_ECDH_SHA2_NISTP256: + case SSH_KEX_ECDH_SHA2_NISTP384: + case SSH_KEX_ECDH_SHA2_NISTP521: + ssh_server_ecdh_init(session); + break; +#endif +#ifdef HAVE_CURVE25519 + case SSH_KEX_CURVE25519_SHA256: + case SSH_KEX_CURVE25519_SHA256_LIBSSH_ORG: + ssh_server_curve25519_init(session); + break; +#endif + default: + ssh_set_error(session, + SSH_FATAL, + "crypt_set_algorithms_server: could not find init " + "handler for kex type %d", + session->next_crypto->kex_type); + return SSH_ERROR; + } return SSH_OK; } |