aboutsummaryrefslogtreecommitdiff
path: root/client
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 /client
parent126021b3766e6fb33333b7939d78dadd1c632eb4 (diff)
downloadcmix-21474893efe0ab38461c3d08727c7c778caa9323.tar.gz
cmix-21474893efe0ab38461c3d08727c7c778caa9323.tar.bz2
cmix-21474893efe0ab38461c3d08727c7c778caa9323.zip
Both algorithms are now batchable.
Diffstat (limited to 'client')
-rw-r--r--client/cmixclient.cpp29
-rw-r--r--client/cmixclient.hpp3
-rw-r--r--client/main.cpp5
3 files changed, 30 insertions, 7 deletions
diff --git a/client/cmixclient.cpp b/client/cmixclient.cpp
index fca653b..17f6e76 100644
--- a/client/cmixclient.cpp
+++ b/client/cmixclient.cpp
@@ -76,22 +76,41 @@ void CMixClient::handle_key_exchange(size_t node_id, cmix_proto::KeyExchange con
);
if(std::all_of(shared_values.begin(), shared_values.end(), [](GroupElement const& value){return value != nullptr;})) {
- size_t len = get_message_size(&cmix_ctx);
-
+ size_t len = cmix_ctx.nr_mixes * get_message_size(&cmix_ctx);
std::vector<char> vec(len, '\0');
char* id;
size_t id_len;
get_pub_key_hash(&cmix_ctx, &id, &id_len);
- std::string s = "abcdefghijklmnopqrstuvwxyz";
+ std::string s = "abcdefghijklmnopqrstuvwxyz"
+ "abcdefghijklmnopqrstuvwxyz"
+ "abcdefghijklmnopqrstuvwxyz"
+ "abcdefghijklmnopqrstuvwxyz"
+ "abcdefghijklmnopqrstuvwxyz"
+ "abcdefghijklmnopqrstuvwxyz"
+ "abcdefghijklmnopqrstuvwxyz"
+ "abcdefghijklmnopqrstuvwxyz"
+ "abcdefghijklmnopqrstuvwxyz"
+ "abcdefghijklmnopqrstuvwxyz"
+ "abcdefghijklmnopqrstuvwxyz"
+ "abcdefghijklmnopqrstuvwxyz"
+ "abcdefghijklmnopqrstuvwxyz"
+ "abcdefghijklmnopqrstuvwxyz"
+ "abcdefghijklmnopqrstuvwxyz"
+ "abcdefghijklmnopqrstuvwxyz"
+ "abcdefghijklmnopqrstuvwxyz"
+ "abcdefghijklmnopqrstuvwxyz"
+ "abcdefghijklmnopqrstuvwxyz"
+ "abcdefghijklmnopqrstuvwxyz"
+ "abcdefghijklmnopqrstuvwxyz";
create_message(&cmix_ctx, vec.data(), id, id_len, s.data(), s.size());
free(id);
cmix_proto::UserMessage message;
- message.mutable_m()->resize(get_group_element_array_size(&cmix_ctx));
+ message.mutable_m()->resize(get_group_element_array_size(&cmix_ctx) * cmix_ctx.nr_mixes);
blind_message(&cmix_ctx, &(*message.mutable_m())[0], vec.data(), shared_values.data(), shared_values.size());
@@ -145,7 +164,7 @@ void CMixClient::handle_message(size_t node_id, cmix_proto::CMixMessage message)
CMixClient::CMixClient(NetworkDetails details)
: io_service()
, ssl_ctx(std::make_shared<boost::asio::ssl::context>(boost::asio::ssl::context::sslv23))
-, cmix_ctx(initialize_cmix_context(get_implementation()))
+, cmix_ctx(initialize_cmix_context(get_implementation(), details.nr_mixes))
, network_details(details)
, network_connections()
, secret_values()
diff --git a/client/cmixclient.hpp b/client/cmixclient.hpp
index 6291bd1..d684c88 100644
--- a/client/cmixclient.hpp
+++ b/client/cmixclient.hpp
@@ -36,6 +36,7 @@ struct NodeDetails {
struct NetworkDetails {
std::vector<NodeDetails> node_details; ///< Vector with all the node hosts and ports in network order.
std::string certdir; ///< The directory with trusted certificates.
+ unsigned int nr_mixes; ///< The number of simultaneous mixes the nodes are set to do.
};
/*!
@@ -78,4 +79,4 @@ public:
* \brief run Runs the underlying io_service.
*/
void run();
-}; \ No newline at end of file
+};
diff --git a/client/main.cpp b/client/main.cpp
index 63d1ebf..efea166 100644
--- a/client/main.cpp
+++ b/client/main.cpp
@@ -33,6 +33,7 @@ int main(int argc, char* argv[]) {
("help,h", "produce help message.")
("network,n", po::value<std::vector<std::string>>()->multitoken(), "The addresses of the network nodes in order")
("certdir", po::value<std::string>(), "Directory containing trusted certificates.")
+ ("nr_mixes,x", po::value<unsigned int>()->default_value(1), "The number of simultanous mixes the network will perform.")
;
po::variables_map vm;
@@ -69,8 +70,10 @@ int main(int argc, char* argv[]) {
return -1;
}
}
+
+ unsigned int nr_mixes = vm["nr_mixes"].as<unsigned int>();
- NetworkDetails details{node_details, certdir};
+ NetworkDetails details{node_details, certdir, nr_mixes};
CMixClient cmix_client(details);
cmix_client.run();