1
0
mirror of https://github.com/codership/wsrep-lib.git synced 2025-08-05 04:01:12 +03:00

Added encryption simulation in dbsim

Option --encryption=1 enables encryption simulation in dbsim. The
`do_crypt()` callback flips bits of input buffer and writes to output.
This commit is contained in:
Teemu Ollakka
2019-01-28 12:58:59 +02:00
parent 532ba4c452
commit 0c75d68bed
5 changed files with 14 additions and 5 deletions

View File

@@ -69,6 +69,8 @@ db::params db::parse_args(int argc, char** argv)
"number of rows per table") "number of rows per table")
("alg-freq", po::value<size_t>(&params.alg_freq), ("alg-freq", po::value<size_t>(&params.alg_freq),
"ALG frequency") "ALG frequency")
("encryption", po::value<bool>(&params.encryption),
"Enable encryption callback")
("debug-log-level", po::value<int>(&params.debug_log_level), ("debug-log-level", po::value<int>(&params.debug_log_level),
"debug logging level: 0 - none, 1 - verbose") "debug logging level: 0 - none, 1 - verbose")
("fast-exit", po::value<int>(&params.fast_exit), ("fast-exit", po::value<int>(&params.fast_exit),

View File

@@ -32,6 +32,7 @@ namespace db
size_t n_transactions; size_t n_transactions;
size_t n_rows; size_t n_rows;
size_t alg_freq; size_t alg_freq;
bool encryption;
std::string topology; std::string topology;
std::string wsrep_provider; std::string wsrep_provider;
std::string wsrep_provider_options; std::string wsrep_provider_options;
@@ -43,6 +44,7 @@ namespace db
, n_transactions(0) , n_transactions(0)
, n_rows(1000) , n_rows(1000)
, alg_freq(0) , alg_freq(0)
, encryption(false)
, topology() , topology()
, wsrep_provider() , wsrep_provider()
, wsrep_provider_options() , wsrep_provider_options()

View File

@@ -165,10 +165,16 @@ void db::server_service::debug_sync(const char*)
int db::server_service::do_crypt(void** ctx WSREP_UNUSED, int db::server_service::do_crypt(void** ctx WSREP_UNUSED,
wsrep::const_buffer& key WSREP_UNUSED, wsrep::const_buffer& key WSREP_UNUSED,
const char (*iv)[32] WSREP_UNUSED, const char (*iv)[32] WSREP_UNUSED,
wsrep::const_buffer& input WSREP_UNUSED, wsrep::const_buffer& input,
void* output WSREP_UNUSED, void* output,
bool encrypt WSREP_UNUSED, bool encrypt WSREP_UNUSED,
bool last WSREP_UNUSED) bool last WSREP_UNUSED)
{ {
return -1;
for (size_t i(0); i < input.size(); ++i)
{
static_cast<unsigned char*>(output)[i] =
~static_cast<const unsigned char*>(input.data())[i];
}
return input.size();
} }

View File

@@ -65,7 +65,6 @@ namespace db
void* output, void* output,
bool encrypt, bool encrypt,
bool last) override; bool last) override;
private: private:
db::server& server_; db::server& server_;
}; };

View File

@@ -140,7 +140,7 @@ void db::simulator::start()
std::string server_options(params_.wsrep_provider_options); std::string server_options(params_.wsrep_provider_options);
if (server.server_state().load_provider( if (server.server_state().load_provider(
params_.wsrep_provider, server_options, false)) params_.wsrep_provider, server_options, params_.encryption))
{ {
throw wsrep::runtime_error("Failed to load provider"); throw wsrep::runtime_error("Failed to load provider");
} }