aboutsummaryrefslogtreecommitdiff
path: root/src/server.c
diff options
context:
space:
mode:
authorAris Adamantiadis <aris@0xbadc0de.be>2014-09-03 09:32:32 +0200
committerAndreas Schneider <asn@cryptomilk.org>2015-02-02 14:45:52 +0100
commitc02b260e7ef8548d61d6491d76d0150da66c19c7 (patch)
tree21a8ac17e9a2953210135ba38eef37da0d5f151d /src/server.c
parent01a6004171c6a899192c87dfe5a8ff27c30b1eaf (diff)
downloadlibssh-c02b260e7ef8548d61d6491d76d0150da66c19c7.tar.gz
libssh-c02b260e7ef8548d61d6491d76d0150da66c19c7.tar.xz
libssh-c02b260e7ef8548d61d6491d76d0150da66c19c7.zip
server: Add support for ed25519 keys in the server.
Signed-off-by: Aris Adamantiadis <aris@0xbadc0de.be> Reviewed-by: Andreas Schneider <asn@cryptomilk.org>
Diffstat (limited to 'src/server.c')
-rw-r--r--src/server.c14
1 files changed, 12 insertions, 2 deletions
diff --git a/src/server.c b/src/server.c
index 3a38fc7b..61641a6e 100644
--- a/src/server.c
+++ b/src/server.c
@@ -94,10 +94,17 @@ static int server_set_kex(ssh_session session) {
ZERO_STRUCTP(server);
ssh_get_random(server->cookie, 16, 0);
+ if (session->srv.ed25519_key != NULL) {
+ snprintf(hostkeys,
+ sizeof(hostkeys),
+ "%s",
+ ssh_key_type_to_char(ssh_key_type(session->srv.ed25519_key)));
+ }
#ifdef HAVE_ECC
if (session->srv.ecdsa_key != NULL) {
- snprintf(hostkeys, sizeof(hostkeys),
- "%s", session->srv.ecdsa_key->type_c);
+ len = strlen(hostkeys);
+ snprintf(hostkeys + len, sizeof(hostkeys) - len,
+ ",%s", session->srv.ecdsa_key->type_c);
}
#endif
if (session->srv.dsa_key != NULL) {
@@ -225,6 +232,9 @@ int ssh_get_key_params(ssh_session session, ssh_key *privkey){
case SSH_KEYTYPE_ECDSA:
*privkey = session->srv.ecdsa_key;
break;
+ case SSH_KEYTYPE_ED25519:
+ *privkey = session->srv.ed25519_key;
+ break;
case SSH_KEYTYPE_UNKNOWN:
default:
*privkey = NULL;