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:
@@ -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>(¶ms.alg_freq),
|
("alg-freq", po::value<size_t>(¶ms.alg_freq),
|
||||||
"ALG frequency")
|
"ALG frequency")
|
||||||
|
("encryption", po::value<bool>(¶ms.encryption),
|
||||||
|
"Enable encryption callback")
|
||||||
("debug-log-level", po::value<int>(¶ms.debug_log_level),
|
("debug-log-level", po::value<int>(¶ms.debug_log_level),
|
||||||
"debug logging level: 0 - none, 1 - verbose")
|
"debug logging level: 0 - none, 1 - verbose")
|
||||||
("fast-exit", po::value<int>(¶ms.fast_exit),
|
("fast-exit", po::value<int>(¶ms.fast_exit),
|
||||||
|
@@ -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()
|
||||||
|
@@ -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();
|
||||||
}
|
}
|
||||||
|
@@ -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_;
|
||||||
};
|
};
|
||||||
|
@@ -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");
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user