diff options
| author | Dennis Brentjes <d.brentjes@gmail.com> | 2018-02-04 12:47:09 +0100 |
|---|---|---|
| committer | Dennis Brentjes <d.brentjes@gmail.com> | 2018-02-04 12:47:09 +0100 |
| commit | 21474893efe0ab38461c3d08727c7c778caa9323 (patch) | |
| tree | 8d48ec3353c84155dcf7daf67d8ade1dd1fd480d /node | |
| parent | 126021b3766e6fb33333b7939d78dadd1c632eb4 (diff) | |
| download | cmix-21474893efe0ab38461c3d08727c7c778caa9323.tar.gz cmix-21474893efe0ab38461c3d08727c7c778caa9323.tar.bz2 cmix-21474893efe0ab38461c3d08727c7c778caa9323.zip | |
Both algorithms are now batchable.
Diffstat (limited to 'node')
| -rw-r--r-- | node/main.cpp | 5 | ||||
| -rw-r--r-- | node/node.cpp | 10 | ||||
| -rw-r--r-- | node/node.hpp | 1 | ||||
| -rw-r--r-- | node/node_node.cpp | 18 |
4 files changed, 18 insertions, 16 deletions
diff --git a/node/main.cpp b/node/main.cpp index 1e76a1f..e50e997 100644 --- a/node/main.cpp +++ b/node/main.cpp @@ -29,6 +29,7 @@ int main(int argc, char* argv[]) { ("certdir", po::value<std::string>(), "Directory containing trusted certificates.") ("statsd,s", po::value<std::string>(), "The address of the statistics daemon.") ("name,a", po::value<std::string>(), "The name to use in the stats daemon file") + ("nr_mixes,x", po::value<unsigned int>()->default_value(1), "The number of simultanous mixes the network will perform.") ; po::variables_map vm; @@ -126,7 +127,9 @@ int main(int argc, char* argv[]) { Uri uri = parse_uri(next_node); - NodeNetworkSettings nsettings{is_first, is_last, uri.host, uri.port, certdir, minimum_nr_messages}; + unsigned int nr_mixes = vm["nr_mixes"].as<unsigned int>(); + + NodeNetworkSettings nsettings{is_first, is_last, uri.host, uri.port, certdir, minimum_nr_messages, nr_mixes}; bool run_stats = vm.count("statsd"); diff --git a/node/node.cpp b/node/node.cpp index 0249b77..b9006e9 100644 --- a/node/node.cpp +++ b/node/node.cpp @@ -23,7 +23,7 @@ Node::Node(ListenSettings const& listen_settings, NodeNetworkSettings network_se , network_settings(network_settings) , prev_node(SSLReceiver(std::unique_ptr<boost::asio::ssl::stream<tcp::socket>>(new boost::asio::ssl::stream<boost::asio::ip::tcp::socket>(io_service, *ssl_ctx)))) , next_node(SSLSender(std::unique_ptr<boost::asio::ssl::stream<tcp::socket>>(new boost::asio::ssl::stream<boost::asio::ip::tcp::socket>(io_service, *ssl_ctx)))) -, cmix_ctx(initialize_cmix_context(get_implementation())) +, cmix_ctx(initialize_cmix_context(get_implementation(), network_settings.nr_mixes)) , shutting_down(false) { if(performance_settings.run) { @@ -31,8 +31,6 @@ Node::Node(ListenSettings const& listen_settings, NodeNetworkSettings network_se } initialize_keypair(&cmix_ctx); - - cmix_ctx.nr_mixes = 1; GOOGLE_PROTOBUF_VERIFY_VERSION; @@ -179,7 +177,7 @@ void Node::start_precomputation() { ArenaMessage<cmix_proto::PrePre> arena; cmix_proto::PrePre& prepre = arena.get(); - size_t len = get_group_element_array_size(&cmix_ctx); + size_t len = cmix_ctx.nr_mixes * get_group_element_array_size(&cmix_ctx); std::vector<char*> r_er(cmix_ctx.nr_participants, nullptr); std::vector<char*> m_er(cmix_ctx.nr_participants, nullptr); @@ -187,7 +185,7 @@ void Node::start_precomputation() { std::string* r = prepre.add_r_er(); r->resize(len); r_er[i] = &(*r)[0]; - + std::string* m = prepre.add_m_er(); m->resize(len); m_er[i] = &(*m)[0]; @@ -227,7 +225,7 @@ void Node::start_realtime_phase() { ArenaMessage<cmix_proto::RealPre> arena; cmix_proto::RealPre& realpre = arena.get(); - size_t len = get_group_element_array_size(&cmix_ctx); + size_t len = cmix_ctx.nr_mixes * get_group_element_array_size(&cmix_ctx); std::vector<char*> ms(participants.size(), nullptr); std::vector<char const*> msv(participants.size(), nullptr); diff --git a/node/node.hpp b/node/node.hpp index 335a264..c99af17 100644 --- a/node/node.hpp +++ b/node/node.hpp @@ -50,6 +50,7 @@ struct NodeNetworkSettings { std::string next_port; ///< Next nodes port. std::string certdir; ///< Directory containing trusted certificate authorities. unsigned int minimum_nr_messages; ///< The minimum number of available messages before starting to run a mix; + unsigned int nr_mixes; ///< The number of simultaneous mixes the network will perform. }; /*! diff --git a/node/node_node.cpp b/node/node_node.cpp index 0086bf7..f44a895 100644 --- a/node/node_node.cpp +++ b/node/node_node.cpp @@ -19,7 +19,7 @@ void fill_precomputation_pre_message(CMixContext& ctx, cmix_proto::PrePre& prepr } BOOST_LOG_TRIVIAL(trace) << ss.str(); - size_t len = get_group_element_array_size(&ctx); + size_t len = ctx.nr_mixes * get_group_element_array_size(&ctx); std::vector<char*> r_ers(ms.size(), nullptr); std::vector<char*> m_ers(ms.size(), nullptr); std::vector<char const*> rsv(ms.size(), nullptr); @@ -51,7 +51,7 @@ void fill_precomputation_pre_message(CMixContext& ctx, cmix_proto::PrePre& prepr template <typename T> void fill_precomputation_mix_message(CMixContext const& ctx, cmix_proto::PreMix& premix, T const& rs, T const& ms) { - size_t el_len = get_group_element_array_size(&ctx); + size_t el_len = ctx.nr_mixes * get_group_element_array_size(&ctx); std::vector<char*> r_epirs(ms.size(), nullptr); std::vector<char*> m_epirs(ms.size(), nullptr); std::vector<char const*> rsv(ms.size(), nullptr); @@ -127,7 +127,7 @@ void fill_commitments_message(CMixContext& ctx, cmix_proto::Commitments& commits template <typename T, typename U> void fill_realtime_pre_message(CMixContext& ctx, cmix_proto::RealPre& realpre, T const& hs, T const& ms, U const& data) { - size_t len = get_group_element_array_size(&ctx); + size_t len = ctx.nr_mixes * get_group_element_array_size(&ctx); std::vector<char*> msv1(ms.size(), nullptr); std::vector<char const*> msv2(ms.size(), nullptr); @@ -155,7 +155,7 @@ void fill_realtime_pre_message(CMixContext& ctx, cmix_proto::RealPre& realpre, T template <typename T> void fill_realtime_mix_message(CMixContext& ctx, cmix_proto::RealMix& realmix, T const& ms) { - size_t len = get_group_element_array_size(&ctx); + size_t len = ctx.nr_mixes * get_group_element_array_size(&ctx); std::vector<char*> mv(ms.size(), nullptr); std::vector<char const*> msv(ms.size(), nullptr); for(int i = 0; i < ms.size(); ++i) { @@ -175,11 +175,11 @@ void fill_realtime_mix_message(CMixContext& ctx, cmix_proto::RealMix& realmix, T void fill_realtime_post_message(CMixContext& ctx, cmix_proto::RealPost& realpost, cmix_proto::RealMix const& realmix) { - size_t len = get_group_element_array_size(&ctx); + size_t len = ctx.nr_mixes * get_group_element_array_size(&ctx); std::vector<char*> mv(ctx.nr_participants, nullptr); for(size_t i = 0; i < ctx.nr_participants; ++i) { std::string* m = realpost.add_m_epirs(); - m->resize(len * ctx.nr_mixes); + m->resize(len); mv[i] = &(*m)[0]; } @@ -204,7 +204,7 @@ void fill_realtime_post_message(CMixContext& ctx, cmix_proto::RealPost& realpost } void fill_realtime_post_message(CMixContext& ctx, cmix_proto::RealPost& n_realpost, cmix_proto::RealPost const& realpost) { - size_t len = get_group_element_array_size(&ctx); + size_t len = ctx.nr_mixes * get_group_element_array_size(&ctx); std::vector<char*> mv(ctx.nr_participants, nullptr); std::vector<char const*> mvs(ctx.nr_participants, nullptr); for(size_t i = 0; i < ctx.nr_participants; ++i) { @@ -431,7 +431,7 @@ void Node::handle_node_realpost(cmix_proto::RealPost const& realpost) { auto& n_realpost = arena.get(); fill_realtime_post_message(cmix_ctx, n_realpost, realpost); - size_t len = get_group_element_array_size(&cmix_ctx); + size_t len = cmix_ctx.nr_mixes * get_group_element_array_size(&cmix_ctx); std::vector<std::string> message_strings(cmix_ctx.nr_participants); std::vector<const char*> pirs(cmix_ctx.nr_participants, nullptr); std::vector<char*> msgs(cmix_ctx.nr_participants, nullptr); @@ -534,7 +534,7 @@ void Node::handle_node_message(cmix_proto::CMixMessage message) break; } case cmix_proto::CMixMessage::ContentsCase::kCommitments: { - BOOST_LOG_TRIVIAL(trace) << "Handling PrePost"; + BOOST_LOG_TRIVIAL(trace) << "Handling Commitments"; handle_node_commitments(message.commitments()); break; } |
