From 7067cac3b6d62ae17d02c636f7c5b92f8f587641 Mon Sep 17 00:00:00 2001 From: alpine Date: Thu, 25 Jun 2020 15:27:55 +0200 Subject: Added 2 key xor encryption for streams. --- server/src/client/client.cpp | 21 +++++++++++++++------ 1 file changed, 15 insertions(+), 6 deletions(-) (limited to 'server/src/client/client.cpp') diff --git a/server/src/client/client.cpp b/server/src/client/client.cpp index 4313e85..452c234 100644 --- a/server/src/client/client.cpp +++ b/server/src/client/client.cpp @@ -38,28 +38,37 @@ void tcp::client::gen_session() { } } -int tcp::client::stream(std::vector& data) { +int tcp::client::stream(std::vector& data, float *dur/*= nullptr*/) { auto size = data.size(); auto networked_size = htonl(size); - write(&networked_size, sizeof(networked_size)); + int a = write(&networked_size, sizeof(networked_size)); - // with 4kb chunk size, speed peaks at 90mb/s + // with 4kb chunk size, speed peaks at 90mb/s without enc + // speed is at ~75mb/s with xor constexpr size_t chunk_size = 4096; size_t sent = 0; + auto start = std::chrono::steady_clock::now(); while (size > 0) { auto to_send = std::min(size, chunk_size); - int ret = write(&data[sent], to_send); + std::string chunk(&data[sent], to_send); + enc::encrypt_message(chunk); + int ret = write(chunk.data(), chunk.size()); if (ret <= 0) { break; } - sent += ret; - size -= ret; + sent += ret - 2; + size -= ret - 2; } + auto end = std::chrono::steady_clock::now(); + std::chrono::duration time = end - start; + if(dur) + *dur = time.count(); + return sent; } -- cgit v1.2.3