diff options
| author | Aris Adamantiadis <aris@0xbadc0de.be> | 2013-09-21 23:34:50 +0200 |
|---|---|---|
| committer | Aris Adamantiadis <aris@0xbadc0de.be> | 2013-09-27 16:06:09 +0200 |
| commit | 666db37e210c4d880cb1d9cfbfca9c11ed374ba7 (patch) | |
| tree | 579a9cfddd85ab6d33e4c5f697e3925d8e2abc4d /src/dh.c | |
| parent | 391bd8835572831e02b88f6bdb0dcb8785d9bbdb (diff) | |
kex: implement curve25519-sha256@libssh.org
Diffstat (limited to 'src/dh.c')
| -rw-r--r-- | src/dh.c | 13 |
1 files changed, 13 insertions, 0 deletions
@@ -771,6 +771,18 @@ int make_sessionid(ssh_session session) { goto error; } #endif +#ifdef HAVE_CURVE25519 + } else if(session->next_crypto->kex_type == SSH_KEX_CURVE25519_SHA256_LIBSSH_ORG){ + rc = buffer_add_u32(buf, htonl(CURVE25519_PUBKEY_SIZE)); + rc += buffer_add_data(buf, session->next_crypto->curve25519_client_pubkey, + CURVE25519_PUBKEY_SIZE); + rc += buffer_add_u32(buf, htonl(CURVE25519_PUBKEY_SIZE)); + rc += buffer_add_data(buf, session->next_crypto->curve25519_server_pubkey, + CURVE25519_PUBKEY_SIZE); + if (rc != SSH_OK) { + goto error; + } +#endif } num = make_bignum_string(session->next_crypto->k); if (num == NULL) { @@ -800,6 +812,7 @@ int make_sessionid(ssh_session session) { session->next_crypto->secret_hash); break; case SSH_KEX_ECDH_SHA2_NISTP256: + case SSH_KEX_CURVE25519_SHA256_LIBSSH_ORG: session->next_crypto->digest_len = SHA256_DIGEST_LENGTH; session->next_crypto->mac_type = SSH_MAC_SHA256; session->next_crypto->secret_hash = malloc(session->next_crypto->digest_len); |
