diff options
| author | Dennis Brentjes <d.brentjes@gmail.com> | 2016-11-18 12:47:35 +0100 |
|---|---|---|
| committer | Dennis Brentjes <d.brentjes@gmail.com> | 2016-11-18 12:47:35 +0100 |
| commit | 6d55dcba54ceaccc9d90ea7c2f1746524a6e81e3 (patch) | |
| tree | 264bcf206535d41cdfec7c0a659c861ea0bd5f31 /node/node_node.cpp | |
| parent | d9e011488b9d7af4683e6640216e78871a06a5ec (diff) | |
| download | cmix-6d55dcba54ceaccc9d90ea7c2f1746524a6e81e3.tar.gz cmix-6d55dcba54ceaccc9d90ea7c2f1746524a6e81e3.tar.bz2 cmix-6d55dcba54ceaccc9d90ea7c2f1746524a6e81e3.zip | |
Made permutation a responsibility of cmix in the precomputation phase.
Diffstat (limited to 'node/node_node.cpp')
| -rw-r--r-- | node/node_node.cpp | 56 |
1 files changed, 29 insertions, 27 deletions
diff --git a/node/node_node.cpp b/node/node_node.cpp index 7b745ed..1742035 100644 --- a/node/node_node.cpp +++ b/node/node_node.cpp @@ -11,6 +11,13 @@ cmix_proto::PrePre fill_precomputation_pre_message(CMixContext& ctx, T const& rs exit(-1); } + std::stringstream ss; + ss << "permutation:"; + for(auto i = 0; i < ctx.nr_participants; ++i) { + ss << " " << ctx.permutation[i]; + } + BOOST_LOG_TRIVIAL(trace) << ss.str(); + cmix_proto::PrePre prepre; for(size_t i = 0; i < ms.size(); ++i) { @@ -50,36 +57,32 @@ template <typename T> cmix_proto::PreMix fill_precomputation_mix_message(CMixContext const& ctx, T const& rs, T const& ms) { cmix_proto::PreMix premix; + size_t el_len = 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); + std::vector<char const*> msv(ms.size(), nullptr); for(size_t i = 0; i < ms.size(); ++i) { - premix.add_r_epirs(); - premix.add_m_epirs(); - } - for(size_t i = 0; i < ms.size(); ++i) { - auto new_pos = ctx.permutation[i]; - size_t el_len = get_group_element_array_size(&ctx); - - premix.mutable_r_epirs(new_pos)->resize(el_len); - premix.mutable_m_epirs(new_pos)->resize(el_len); + std::string* r = premix.add_r_epirs(); + r->resize(el_len); + r_epirs[i] = &(*r)[0]; - { - std::stringstream ss; - ss << "s: "; - std::string s = to_string(ctx.s[i], ctx); - for(auto&& c : s) { - ss << "\\" << std::setw(3) << std::setfill('0') << std::oct << (unsigned int) c; - } - BOOST_LOG_TRIVIAL(trace) << ss.str(); - } + std::string* m = premix.add_m_epirs(); + m->resize(el_len); + m_epirs[i] = &(*m)[0]; - multiply_encrypted_s( - &ctx, - &(*premix.mutable_r_epirs(new_pos))[0], - &(*premix.mutable_m_epirs(new_pos))[0], - rs.Get(i).data(), - ms.Get(i).data(), - i - ); + rsv[i] = rs.Get(i).data(); + msv[i] = ms.Get(i).data(); } + + permute_and_multiply_encrypted_s( + &ctx, + r_epirs.data(), + m_epirs.data(), + rsv.data(), + msv.data(), + ms.size() + ); return premix; } @@ -114,7 +117,6 @@ cmix_proto::PrePost fill_precomputation_post_message(CMixContext& ctx, T const& } BOOST_LOG_TRIVIAL(trace) << ss.str(); } - } return prepost; |
