diff options
author | Aris Adamantiadis <aris@0xbadc0de.be> | 2014-04-16 18:05:14 +0200 |
---|---|---|
committer | Andreas Schneider <asn@cryptomilk.org> | 2014-08-06 09:33:32 +0200 |
commit | 673990f56854a489f9d10712a835f4fb3d81d1bc (patch) | |
tree | 9b966c8509379bdebb70072d8fc23e46bce9e5ea /src/curve25519.c | |
parent | 97638a1465e2b7fffe25caa0eab96c9d7099191a (diff) | |
download | libssh-673990f56854a489f9d10712a835f4fb3d81d1bc.tar.gz libssh-673990f56854a489f9d10712a835f4fb3d81d1bc.tar.xz libssh-673990f56854a489f9d10712a835f4fb3d81d1bc.zip |
buffers: adapt curve25519.c to ssh_buffer_(un)pack()
Reviewed-by: Andreas Schneider <asn@samba.org>
Diffstat (limited to 'src/curve25519.c')
-rw-r--r-- | src/curve25519.c | 23 |
1 files changed, 8 insertions, 15 deletions
diff --git a/src/curve25519.c b/src/curve25519.c index 784d4106..cbef5765 100644 --- a/src/curve25519.c +++ b/src/curve25519.c @@ -42,14 +42,8 @@ * @brief Starts curve25519-sha256@libssh.org key exchange */ int ssh_client_curve25519_init(ssh_session session){ - ssh_string client_pubkey; int rc; - rc = buffer_add_u8(session->out_buffer, SSH2_MSG_KEX_ECDH_INIT); - if (rc < 0) { - return SSH_ERROR; - } - rc = ssh_get_random(session->next_crypto->curve25519_privkey, CURVE25519_PRIVKEY_SIZE, 1); if (rc == 0){ ssh_set_error(session, SSH_FATAL, "PRNG error"); @@ -58,15 +52,14 @@ int ssh_client_curve25519_init(ssh_session session){ crypto_scalarmult_base(session->next_crypto->curve25519_client_pubkey, session->next_crypto->curve25519_privkey); - client_pubkey = ssh_string_new(CURVE25519_PUBKEY_SIZE); - if (client_pubkey == NULL) { - return SSH_ERROR; - } - ssh_string_fill(client_pubkey, session->next_crypto->curve25519_client_pubkey, - CURVE25519_PUBKEY_SIZE); - rc = buffer_add_ssh_string(session->out_buffer,client_pubkey); - ssh_string_free(client_pubkey); - if (rc < 0) { + + rc = ssh_buffer_pack(session->out_buffer, + "bdP", + SSH2_MSG_KEX_ECDH_INIT, + CURVE25519_PUBKEY_SIZE, + (size_t)CURVE25519_PUBKEY_SIZE, session->next_crypto->curve25519_client_pubkey); + if (rc != SSH_OK) { + ssh_set_error_oom(session); return SSH_ERROR; } |