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. --- client/cmixclient.cpp | 16 +++++++++++++--- client/cmixclient.hpp | 1 + 2 files changed, 14 insertions(+), 3 deletions(-) (limited to 'client') diff --git a/client/cmixclient.cpp b/client/cmixclient.cpp index 9ee1d81..cc743db 100644 --- a/client/cmixclient.cpp +++ b/client/cmixclient.cpp @@ -18,7 +18,16 @@ void CMixClient::key_exchange(int i) { ke.set_public_key(buffer, len); free(buffer); - + + data.at(i).secret_value = api.get_group_element(true); + void* shared_value = api.get_key_exchange_value(data.at(i).secret_value); + + api.get_key_array(&buffer, &len, shared_value); + + ke.set_value(buffer, len); + + free(buffer); + network_connections.at(i).async_send(ke); network_connections.at(i).async_receive([i, this](cmix_proto::CMixMessage message) { handle_message(i, message); @@ -48,7 +57,7 @@ void CMixClient::initialize_connections() { void CMixClient::handle_key_exchange(int node_id, cmix_proto::KeyExchange const& ke) { - data.at(node_id).shared_value = api.derive_shared_key(keypair, reinterpret_cast(ke.public_key().c_str()), false); + data.at(node_id).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(), data.at(node_id).secret_value, false); cmix_proto::Bye bye; network_connections.at(node_id).async_send(bye); @@ -104,8 +113,9 @@ CMixClient::~CMixClient() api.free_key_pair(&keypair); for(auto&& d : data) { api.free_shared_key(&d.shared_value); + api.free_group_element(d.secret_value); } - + api.deinitialize(); } void CMixClient::run() { diff --git a/client/cmixclient.hpp b/client/cmixclient.hpp index db5e690..8922f41 100644 --- a/client/cmixclient.hpp +++ b/client/cmixclient.hpp @@ -37,6 +37,7 @@ struct NetworkDetails { class CMixClient { struct NodeData { + void* secret_value; SharedKey shared_value; }; -- cgit v1.2.3-70-g09d2