Passing in kdf_work value instead of obtaining it statically.

This commit is contained in:
clemahieu 2021-07-29 00:44:09 +01:00
commit cf80f891cd
No known key found for this signature in database
GPG key ID: 43708520C8DFB938
5 changed files with 28 additions and 23 deletions

View file

@ -17,7 +17,7 @@ TEST (wallet, no_special_keys_accounts)
nano::mdb_env env (init, nano::unique_path ());
ASSERT_FALSE (init);
auto transaction (env.tx_begin_write ());
nano::kdf kdf;
nano::kdf kdf{ nano::dev::network_params.kdf_work };
nano::wallet_store wallet (init, kdf, transaction, nano::dev::genesis->account (), 1, "0");
ASSERT_FALSE (init);
nano::keypair key1;
@ -38,7 +38,7 @@ TEST (wallet, no_key)
nano::mdb_env env (init, nano::unique_path ());
ASSERT_FALSE (init);
auto transaction (env.tx_begin_write ());
nano::kdf kdf;
nano::kdf kdf{ nano::dev::network_params.kdf_work };
nano::wallet_store wallet (init, kdf, transaction, nano::dev::genesis->account (), 1, "0");
ASSERT_FALSE (init);
nano::keypair key1;
@ -53,7 +53,7 @@ TEST (wallet, fetch_locked)
nano::mdb_env env (init, nano::unique_path ());
ASSERT_FALSE (init);
auto transaction (env.tx_begin_write ());
nano::kdf kdf;
nano::kdf kdf{ nano::dev::network_params.kdf_work };
nano::wallet_store wallet (init, kdf, transaction, nano::dev::genesis->account (), 1, "0");
ASSERT_TRUE (wallet.valid_password (transaction));
nano::keypair key1;
@ -75,7 +75,7 @@ TEST (wallet, retrieval)
nano::mdb_env env (init, nano::unique_path ());
ASSERT_FALSE (init);
auto transaction (env.tx_begin_write ());
nano::kdf kdf;
nano::kdf kdf{ nano::dev::network_params.kdf_work };
nano::wallet_store wallet (init, kdf, transaction, nano::dev::genesis->account (), 1, "0");
ASSERT_FALSE (init);
nano::keypair key1;
@ -97,7 +97,7 @@ TEST (wallet, empty_iteration)
nano::mdb_env env (init, nano::unique_path ());
ASSERT_FALSE (init);
auto transaction (env.tx_begin_write ());
nano::kdf kdf;
nano::kdf kdf{ nano::dev::network_params.kdf_work };
nano::wallet_store wallet (init, kdf, transaction, nano::dev::genesis->account (), 1, "0");
ASSERT_FALSE (init);
auto i (wallet.begin (transaction));
@ -111,7 +111,7 @@ TEST (wallet, one_item_iteration)
nano::mdb_env env (init, nano::unique_path ());
ASSERT_FALSE (init);
auto transaction (env.tx_begin_write ());
nano::kdf kdf;
nano::kdf kdf{ nano::dev::network_params.kdf_work };
nano::wallet_store wallet (init, kdf, transaction, nano::dev::genesis->account (), 1, "0");
ASSERT_FALSE (init);
nano::keypair key1;
@ -137,7 +137,7 @@ TEST (wallet, two_item_iteration)
ASSERT_NE (key1.pub, key2.pub);
std::unordered_set<nano::public_key> pubs;
std::unordered_set<nano::raw_key> prvs;
nano::kdf kdf;
nano::kdf kdf{ nano::dev::network_params.kdf_work };
{
auto transaction (env.tx_begin_write ());
nano::wallet_store wallet (init, kdf, transaction, nano::dev::genesis->account (), 1, "0");
@ -277,7 +277,7 @@ TEST (wallet, find_none)
nano::mdb_env env (init, nano::unique_path ());
ASSERT_FALSE (init);
auto transaction (env.tx_begin_write ());
nano::kdf kdf;
nano::kdf kdf{ nano::dev::network_params.kdf_work };
nano::wallet_store wallet (init, kdf, transaction, nano::dev::genesis->account (), 1, "0");
ASSERT_FALSE (init);
nano::account account (1000);
@ -290,7 +290,7 @@ TEST (wallet, find_existing)
nano::mdb_env env (init, nano::unique_path ());
ASSERT_FALSE (init);
auto transaction (env.tx_begin_write ());
nano::kdf kdf;
nano::kdf kdf{ nano::dev::network_params.kdf_work };
nano::wallet_store wallet (init, kdf, transaction, nano::dev::genesis->account (), 1, "0");
ASSERT_FALSE (init);
nano::keypair key1;
@ -309,7 +309,7 @@ TEST (wallet, rekey)
nano::mdb_env env (init, nano::unique_path ());
ASSERT_FALSE (init);
auto transaction (env.tx_begin_write ());
nano::kdf kdf;
nano::kdf kdf{ nano::dev::network_params.kdf_work };
nano::wallet_store wallet (init, kdf, transaction, nano::dev::genesis->account (), 1, "0");
ASSERT_FALSE (init);
nano::raw_key password;
@ -381,7 +381,7 @@ TEST (wallet, hash_password)
nano::mdb_env env (init, nano::unique_path ());
ASSERT_FALSE (init);
auto transaction (env.tx_begin_write ());
nano::kdf kdf;
nano::kdf kdf{ nano::dev::network_params.kdf_work };
nano::wallet_store wallet (init, kdf, transaction, nano::dev::genesis->account (), 1, "0");
ASSERT_FALSE (init);
nano::raw_key hash1;
@ -430,7 +430,7 @@ TEST (wallet, reopen_default_password)
nano::mdb_env env (init, nano::unique_path ());
auto transaction (env.tx_begin_write ());
ASSERT_FALSE (init);
nano::kdf kdf;
nano::kdf kdf{ nano::dev::network_params.kdf_work };
{
nano::wallet_store wallet (init, kdf, transaction, nano::dev::genesis->account (), 1, "0");
ASSERT_FALSE (init);
@ -466,7 +466,7 @@ TEST (wallet, representative)
nano::mdb_env env (error, nano::unique_path ());
ASSERT_FALSE (error);
auto transaction (env.tx_begin_write ());
nano::kdf kdf;
nano::kdf kdf{ nano::dev::network_params.kdf_work };
nano::wallet_store wallet (error, kdf, transaction, nano::dev::genesis->account (), 1, "0");
ASSERT_FALSE (error);
ASSERT_FALSE (wallet.is_representative (transaction));
@ -487,7 +487,7 @@ TEST (wallet, serialize_json_empty)
nano::mdb_env env (error, nano::unique_path ());
ASSERT_FALSE (error);
auto transaction (env.tx_begin_write ());
nano::kdf kdf;
nano::kdf kdf{ nano::dev::network_params.kdf_work };
nano::wallet_store wallet1 (error, kdf, transaction, nano::dev::genesis->account (), 1, "0");
ASSERT_FALSE (error);
std::string serialized;
@ -512,7 +512,7 @@ TEST (wallet, serialize_json_one)
nano::mdb_env env (error, nano::unique_path ());
ASSERT_FALSE (error);
auto transaction (env.tx_begin_write ());
nano::kdf kdf;
nano::kdf kdf{ nano::dev::network_params.kdf_work };
nano::wallet_store wallet1 (error, kdf, transaction, nano::dev::genesis->account (), 1, "0");
ASSERT_FALSE (error);
nano::keypair key;
@ -541,7 +541,7 @@ TEST (wallet, serialize_json_password)
nano::mdb_env env (error, nano::unique_path ());
ASSERT_FALSE (error);
auto transaction (env.tx_begin_write ());
nano::kdf kdf;
nano::kdf kdf{ nano::dev::network_params.kdf_work };
nano::wallet_store wallet1 (error, kdf, transaction, nano::dev::genesis->account (), 1, "0");
ASSERT_FALSE (error);
nano::keypair key;
@ -574,7 +574,7 @@ TEST (wallet_store, move)
nano::mdb_env env (error, nano::unique_path ());
ASSERT_FALSE (error);
auto transaction (env.tx_begin_write ());
nano::kdf kdf;
nano::kdf kdf{ nano::dev::network_params.kdf_work };
nano::wallet_store wallet1 (error, kdf, transaction, nano::dev::genesis->account (), 1, "0");
ASSERT_FALSE (error);
nano::keypair key1;
@ -732,7 +732,7 @@ TEST (wallet, deterministic_keys)
nano::mdb_env env (init, nano::unique_path ());
ASSERT_FALSE (init);
auto transaction (env.tx_begin_write ());
nano::kdf kdf;
nano::kdf kdf{ nano::dev::network_params.kdf_work };
nano::wallet_store wallet (init, kdf, transaction, nano::dev::genesis->account (), 1, "0");
auto key1 = wallet.deterministic_key (transaction, 0);
auto key2 = wallet.deterministic_key (transaction, 0);
@ -775,7 +775,7 @@ TEST (wallet, reseed)
nano::mdb_env env (init, nano::unique_path ());
ASSERT_FALSE (init);
auto transaction (env.tx_begin_write ());
nano::kdf kdf;
nano::kdf kdf{ nano::dev::network_params.kdf_work };
nano::wallet_store wallet (init, kdf, transaction, nano::dev::genesis->account (), 1, "0");
nano::raw_key seed1;
seed1 = 1;

View file

@ -702,7 +702,7 @@ std::error_code nano::handle_node_options (boost::program_options::variables_map
nano::raw_key junk1;
junk1.clear ();
nano::uint256_union junk2 (0);
nano::kdf kdf;
nano::kdf kdf{ inactive_node->node->config.network_params.kdf_work};
kdf.phs (junk1, "", junk2);
std::cout << "Testing time retrieval latency... " << std::flush;
nano::timer<std::chrono::nanoseconds> timer (nano::timer_state::started);

View file

@ -651,9 +651,8 @@ void nano::wallet_store::version_put (nano::transaction const & transaction_a, u
void nano::kdf::phs (nano::raw_key & result_a, std::string const & password_a, nano::uint256_union const & salt_a)
{
static nano::network_params network_params;
nano::lock_guard<nano::mutex> lock (mutex);
auto success (argon2_hash (1, network_params.kdf_work, 1, password_a.data (), password_a.size (), salt_a.bytes.data (), salt_a.bytes.size (), result_a.bytes.data (), result_a.bytes.size (), NULL, 0, Argon2_d, 0x10));
auto success (argon2_hash (1, kdf_work, 1, password_a.data (), password_a.size (), salt_a.bytes.data (), salt_a.bytes.size (), result_a.bytes.data (), result_a.bytes.size (), NULL, 0, Argon2_d, 0x10));
debug_assert (success == 0);
(void)success;
}
@ -1336,6 +1335,7 @@ void nano::wallets::do_wallet_actions ()
nano::wallets::wallets (bool error_a, nano::node & node_a) :
observer ([] (bool) {}),
kdf{ node_a.config.network_params.kdf_work },
node (node_a),
env (boost::polymorphic_downcast<nano::mdb_wallets_store *> (node_a.wallets_store_impl.get ())->environment),
stopped (false),

View file

@ -34,8 +34,13 @@ private:
class kdf final
{
public:
kdf (unsigned & kdf_work) :
kdf_work{ kdf_work }
{
}
void phs (nano::raw_key &, std::string const &, nano::uint256_union const &);
nano::mutex mutex;
unsigned & kdf_work;
};
enum class key_type
{

View file

@ -829,7 +829,7 @@ TEST (rpc, wallet_export)
bool error (false);
rpc_ctx->io_scope->reset ();
auto transaction (node->wallets.tx_begin_write ());
nano::kdf kdf;
nano::kdf kdf{ nano::dev::network_params.kdf_work };
nano::wallet_store store (error, kdf, transaction, nano::dev::genesis->account (), 1, "0", wallet_json);
ASSERT_FALSE (error);
ASSERT_TRUE (store.exists (transaction, nano::dev::genesis_key.pub));