mirror of
https://github.com/monero-project/monero.git
synced 2025-08-18 11:57:54 -04:00
wallet: ask-password can now ask without encrypting the secret spend key
This commit is contained in:
parent
3584a852a3
commit
44259e560e
4 changed files with 83 additions and 56 deletions
|
@ -1992,18 +1992,29 @@ bool simple_wallet::set_ask_password(const std::vector<std::string> &args/* = st
|
|||
const auto pwd_container = get_and_verify_password();
|
||||
if (pwd_container)
|
||||
{
|
||||
parse_bool_and_use(args[1], [&](bool r) {
|
||||
const bool cur_r = m_wallet->ask_password();
|
||||
if (!m_wallet->watch_only())
|
||||
{
|
||||
if (cur_r && !r)
|
||||
m_wallet->decrypt_keys(pwd_container->password());
|
||||
else if (!cur_r && r)
|
||||
m_wallet->encrypt_keys(pwd_container->password());
|
||||
}
|
||||
m_wallet->ask_password(r);
|
||||
m_wallet->rewrite(m_wallet_file, pwd_container->password());
|
||||
});
|
||||
tools::wallet2::AskPasswordType ask = tools::wallet2::AskPasswordToDecrypt;
|
||||
if (args[1] == "never" || args[1] == "0")
|
||||
ask = tools::wallet2::AskPasswordNever;
|
||||
else if (args[1] == "action" || args[1] == "1")
|
||||
ask = tools::wallet2::AskPasswordOnAction;
|
||||
else if (args[1] == "encrypt" || args[1] == "decrypt" || args[1] == "2")
|
||||
ask = tools::wallet2::AskPasswordToDecrypt;
|
||||
else
|
||||
{
|
||||
fail_msg_writer() << tr("invalid argument: must be either 0/never, 1/action, or 2/encrypt/decrypt");
|
||||
return true;
|
||||
}
|
||||
|
||||
const tools::wallet2::AskPasswordType cur_ask = m_wallet->ask_password();
|
||||
if (!m_wallet->watch_only())
|
||||
{
|
||||
if (cur_ask == tools::wallet2::AskPasswordToDecrypt && ask != tools::wallet2::AskPasswordToDecrypt)
|
||||
m_wallet->decrypt_keys(pwd_container->password());
|
||||
else if (cur_ask != tools::wallet2::AskPasswordToDecrypt && ask == tools::wallet2::AskPasswordToDecrypt)
|
||||
m_wallet->encrypt_keys(pwd_container->password());
|
||||
}
|
||||
m_wallet->ask_password(ask);
|
||||
m_wallet->rewrite(m_wallet_file, pwd_container->password());
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
@ -2394,7 +2405,7 @@ simple_wallet::simple_wallet()
|
|||
"priority [0|1|2|3|4]\n "
|
||||
" Set the fee to default/unimportant/normal/elevated/priority.\n "
|
||||
"confirm-missing-payment-id <1|0>\n "
|
||||
"ask-password <1|0>\n "
|
||||
"ask-password <0|1|2 (or never|action|decrypt)>\n "
|
||||
"unit <monero|millinero|micronero|nanonero|piconero>\n "
|
||||
" Set the default monero (sub-)unit.\n "
|
||||
"min-outputs-count [n]\n "
|
||||
|
@ -2607,6 +2618,13 @@ bool simple_wallet::set_variable(const std::vector<std::string> &args)
|
|||
uint32_t priority = m_wallet->get_default_priority();
|
||||
if (priority < allowed_priority_strings.size())
|
||||
priority_string = allowed_priority_strings[priority];
|
||||
std::string ask_password_string = "invalid";
|
||||
switch (m_wallet->ask_password())
|
||||
{
|
||||
case tools::wallet2::AskPasswordNever: ask_password_string = "never"; break;
|
||||
case tools::wallet2::AskPasswordOnAction: ask_password_string = "action"; break;
|
||||
case tools::wallet2::AskPasswordToDecrypt: ask_password_string = "decrypt"; break;
|
||||
}
|
||||
success_msg_writer() << "seed = " << seed_language;
|
||||
success_msg_writer() << "always-confirm-transfers = " << m_wallet->always_confirm_transfers();
|
||||
success_msg_writer() << "print-ring-members = " << m_wallet->print_ring_members();
|
||||
|
@ -2616,7 +2634,7 @@ bool simple_wallet::set_variable(const std::vector<std::string> &args)
|
|||
success_msg_writer() << "refresh-type = " << get_refresh_type_name(m_wallet->get_refresh_type());
|
||||
success_msg_writer() << "priority = " << priority<< " (" << priority_string << ")";
|
||||
success_msg_writer() << "confirm-missing-payment-id = " << m_wallet->confirm_missing_payment_id();
|
||||
success_msg_writer() << "ask-password = " << m_wallet->ask_password();
|
||||
success_msg_writer() << "ask-password = " << m_wallet->ask_password() << " (" << ask_password_string << ")";
|
||||
success_msg_writer() << "unit = " << cryptonote::get_unit(cryptonote::get_default_decimal_point());
|
||||
success_msg_writer() << "min-outputs-count = " << m_wallet->get_min_output_count();
|
||||
success_msg_writer() << "min-outputs-value = " << cryptonote::print_money(m_wallet->get_min_output_value());
|
||||
|
@ -2672,7 +2690,7 @@ bool simple_wallet::set_variable(const std::vector<std::string> &args)
|
|||
CHECK_SIMPLE_VARIABLE("refresh-type", set_refresh_type, tr("full (slowest, no assumptions); optimize-coinbase (fast, assumes the whole coinbase is paid to a single address); no-coinbase (fastest, assumes we receive no coinbase transaction), default (same as optimize-coinbase)"));
|
||||
CHECK_SIMPLE_VARIABLE("priority", set_default_priority, tr("0, 1, 2, 3, or 4, or one of ") << join_priority_strings(", "));
|
||||
CHECK_SIMPLE_VARIABLE("confirm-missing-payment-id", set_confirm_missing_payment_id, tr("0 or 1"));
|
||||
CHECK_SIMPLE_VARIABLE("ask-password", set_ask_password, tr("0 or 1"));
|
||||
CHECK_SIMPLE_VARIABLE("ask-password", set_ask_password, tr("0|1|2 (or never|action|decrypt)"));
|
||||
CHECK_SIMPLE_VARIABLE("unit", set_unit, tr("monero, millinero, micronero, nanonero, piconero"));
|
||||
CHECK_SIMPLE_VARIABLE("min-outputs-count", set_min_output_count, tr("unsigned integer"));
|
||||
CHECK_SIMPLE_VARIABLE("min-outputs-value", set_min_output_value, tr("amount"));
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue