From 158bf81343054982800d44d507e8e50f2eeb6dd4 Mon Sep 17 00:00:00 2001 From: Dennis Brentjes Date: Thu, 27 Oct 2016 13:14:28 +0200 Subject: Added proper keyexchange for elgamal-gcrypt. --- node/node.cpp | 16 ++++++++++++++-- 1 file changed, 14 insertions(+), 2 deletions(-) (limited to 'node/node.cpp') diff --git a/node/node.cpp b/node/node.cpp index 857d5af..e8303eb 100644 --- a/node/node.cpp +++ b/node/node.cpp @@ -140,17 +140,29 @@ void Node::handle_node_message(cmix_proto::CMixMessage message) } void Node::handle_client_keyexchange(ClientConnections::key_type handle, cmix_proto::KeyExchange ke) { - data[handle].shared_value = api.derive_shared_key(keypair, reinterpret_cast(ke.public_key().c_str()), true); + void* priv_el = api.get_group_element(true); + + data[handle].shared_value = api.derive_shared_key(keypair, reinterpret_cast(ke.public_key().c_str()), ke.public_key().size(), reinterpret_cast(ke.value().c_str()), ke.value().size(), priv_el, true); + + void* ex_val = api.get_key_exchange_value(priv_el); + + api.free_group_element(priv_el); cmix_proto::KeyExchange exchange; char* buffer; size_t len; - api.get_key_array(&buffer, &len, keypair.pub); + api.get_key_array(&buffer, &len, keypair.pub); exchange.set_public_key(buffer, len); free(buffer); + api.get_key_array(&buffer, &len, ex_val); + exchange.set_value(buffer, len); + free(buffer); + + api.free_group_element(ex_val); + clients.at(handle).async_send(exchange); } -- cgit v1.2.3-70-g09d2