aboutsummaryrefslogtreecommitdiff
path: root/node
diff options
context:
space:
mode:
authorDennis Brentjes <d.brentjes@gmail.com>2018-02-04 12:47:09 +0100
committerDennis Brentjes <d.brentjes@gmail.com>2018-02-04 12:47:09 +0100
commit21474893efe0ab38461c3d08727c7c778caa9323 (patch)
tree8d48ec3353c84155dcf7daf67d8ade1dd1fd480d /node
parent126021b3766e6fb33333b7939d78dadd1c632eb4 (diff)
downloadcmix-21474893efe0ab38461c3d08727c7c778caa9323.tar.gz
cmix-21474893efe0ab38461c3d08727c7c778caa9323.tar.bz2
cmix-21474893efe0ab38461c3d08727c7c778caa9323.zip
Both algorithms are now batchable.
Diffstat (limited to 'node')
-rw-r--r--node/main.cpp5
-rw-r--r--node/node.cpp10
-rw-r--r--node/node.hpp1
-rw-r--r--node/node_node.cpp18
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;
}