diff options
| author | Dennis Brentjes <d.brentjes@gmail.com> | 2016-11-07 16:45:34 +0100 |
|---|---|---|
| committer | Dennis Brentjes <d.brentjes@gmail.com> | 2016-11-07 16:45:34 +0100 |
| commit | 8ff9babe2da4a2efc8529e800a6093fbd0327286 (patch) | |
| tree | 83f2d15f8dae8c7a5e216f9ec0a8001bd40673a3 /client/cmixclient.cpp | |
| parent | 46f22621759d388f7cef4bf0d2ac03667a5d611e (diff) | |
| download | cmix-8ff9babe2da4a2efc8529e800a6093fbd0327286.tar.gz cmix-8ff9babe2da4a2efc8529e800a6093fbd0327286.tar.bz2 cmix-8ff9babe2da4a2efc8529e800a6093fbd0327286.zip | |
The client sends his first message.
Changed some of the boilerplate so it's more conveniant to add types.
Diffstat (limited to 'client/cmixclient.cpp')
| -rw-r--r-- | client/cmixclient.cpp | 29 |
1 files changed, 20 insertions, 9 deletions
diff --git a/client/cmixclient.cpp b/client/cmixclient.cpp index ba2f1da..f8ecf7d 100644 --- a/client/cmixclient.cpp +++ b/client/cmixclient.cpp @@ -22,7 +22,7 @@ void CMixClient::key_exchange(size_t node_id) { ke.mutable_public_key()->resize(get_group_element_array_size(&cmix_ctx)); ke.mutable_value()->resize(get_group_element_array_size(&cmix_ctx)); - key_exchange_init(&cmix_ctx, &(*ke.mutable_public_key())[0], &(*ke.mutable_value())[0], &data.at(node_id).secret_value); + key_exchange_init(&cmix_ctx, &(*ke.mutable_public_key())[0], &(*ke.mutable_value())[0], &secret_values.at(node_id)); network_connections.at(node_id).async_send(ke); network_connections.at(node_id).async_receive([node_id, this](cmix_proto::CMixMessage message) { @@ -33,7 +33,9 @@ void CMixClient::key_exchange(size_t node_id) { void CMixClient::initialize_connections() { size_t nr_nodes = network_details.node_details.size(); network_connections.reserve(nr_nodes); - data.resize(nr_nodes); + + secret_values.resize(nr_nodes, nullptr); + shared_values.resize(nr_nodes, nullptr); for(size_t i = 0; i < nr_nodes; ++i) { auto handler = [this, i]() { @@ -55,20 +57,28 @@ void CMixClient::handle_key_exchange(size_t node_id, cmix_proto::KeyExchange con { key_exchange_initiator( &cmix_ctx, - &data.at(node_id).shared_value, + &shared_values.at(node_id), ke.public_key().data(), ke.value().data(), - data.at(node_id).secret_value + &secret_values.at(node_id) ); size_t len = get_group_element_array_size(&cmix_ctx); + std::vector<char> vec(len, '\0'); std::string s = "abcdefghijklmnopqrstuvwxyz"; - s.resize(len, '0'); - + std::copy_n(s.begin(), s.size(), vec.begin() + 1); + if(std::all_of(shared_values.begin(), shared_values.end(), [](auto const& value){return value != nullptr;})) { + cmix_proto::UserMessage message; + message.mutable_m()->resize(len); - cmix_proto::Bye bye; - network_connections.at(node_id).async_send(bye); + blind_message(&cmix_ctx, &(*message.mutable_m())[0], vec.data(), shared_values.data(), shared_values.size()); + + network_connections.at(0).async_send(message); + + cmix_proto::Bye bye; + network_connections.at(node_id).async_send(bye); + } } void CMixClient::handle_message(size_t node_id, cmix_proto::CMixMessage message) @@ -107,7 +117,8 @@ CMixClient::CMixClient(NetworkDetails details) , cmix_ctx(initialize_cmix_context(get_implementation())) , network_details(details) , network_connections() -, data() +, secret_values() +, shared_values() { initialize_keypair(&cmix_ctx); |
