simplewallet: disable long payment ids by default
unless --long-payment-id-support is used
This commit is contained in:
parent
6285c43ffc
commit
1ef79b430f
|
@ -113,6 +113,14 @@ typedef cryptonote::simple_wallet sw;
|
||||||
|
|
||||||
#define PRINT_USAGE(usage_help) fail_msg_writer() << boost::format(tr("usage: %s")) % usage_help;
|
#define PRINT_USAGE(usage_help) fail_msg_writer() << boost::format(tr("usage: %s")) % usage_help;
|
||||||
|
|
||||||
|
#define LONG_PAYMENT_ID_SUPPORT_CHECK() \
|
||||||
|
do { \
|
||||||
|
if (!m_long_payment_id_support) { \
|
||||||
|
fail_msg_writer() << tr("Long payment IDs are obsolete. Use --long-payment-id-support if you really must use one."); \
|
||||||
|
return true; \
|
||||||
|
} \
|
||||||
|
} while(0)
|
||||||
|
|
||||||
enum TransferType {
|
enum TransferType {
|
||||||
Transfer,
|
Transfer,
|
||||||
TransferLocked,
|
TransferLocked,
|
||||||
|
@ -141,6 +149,7 @@ namespace
|
||||||
const command_line::arg_descriptor<bool> arg_create_address_file = {"create-address-file", sw::tr("Create an address file for new wallets"), false};
|
const command_line::arg_descriptor<bool> arg_create_address_file = {"create-address-file", sw::tr("Create an address file for new wallets"), false};
|
||||||
const command_line::arg_descriptor<std::string> arg_subaddress_lookahead = {"subaddress-lookahead", tools::wallet2::tr("Set subaddress lookahead sizes to <major>:<minor>"), ""};
|
const command_line::arg_descriptor<std::string> arg_subaddress_lookahead = {"subaddress-lookahead", tools::wallet2::tr("Set subaddress lookahead sizes to <major>:<minor>"), ""};
|
||||||
const command_line::arg_descriptor<bool> arg_use_english_language_names = {"use-english-language-names", sw::tr("Display English language names"), false};
|
const command_line::arg_descriptor<bool> arg_use_english_language_names = {"use-english-language-names", sw::tr("Display English language names"), false};
|
||||||
|
const command_line::arg_descriptor<bool> arg_long_payment_id_support = {"long-payment-id-support", sw::tr("Support obsolete long (unencrypted) payment ids"), false};
|
||||||
|
|
||||||
const command_line::arg_descriptor< std::vector<std::string> > arg_command = {"command", ""};
|
const command_line::arg_descriptor< std::vector<std::string> > arg_command = {"command", ""};
|
||||||
|
|
||||||
|
@ -151,12 +160,12 @@ namespace
|
||||||
const char* USAGE_PAYMENTS("payments <PID_1> [<PID_2> ... <PID_N>]");
|
const char* USAGE_PAYMENTS("payments <PID_1> [<PID_2> ... <PID_N>]");
|
||||||
const char* USAGE_PAYMENT_ID("payment_id");
|
const char* USAGE_PAYMENT_ID("payment_id");
|
||||||
const char* USAGE_TRANSFER("transfer [index=<N1>[,<N2>,...]] [<priority>] [<ring_size>] (<URI> | <address> <amount>) [<payment_id>]");
|
const char* USAGE_TRANSFER("transfer [index=<N1>[,<N2>,...]] [<priority>] [<ring_size>] (<URI> | <address> <amount>) [<payment_id>]");
|
||||||
const char* USAGE_LOCKED_TRANSFER("locked_transfer [index=<N1>[,<N2>,...]] [<priority>] [<ring_size>] (<URI> | <addr> <amount>) <lockblocks> [<payment_id>]");
|
const char* USAGE_LOCKED_TRANSFER("locked_transfer [index=<N1>[,<N2>,...]] [<priority>] [<ring_size>] (<URI> | <addr> <amount>) <lockblocks> [<payment_id (obsolete)>]");
|
||||||
const char* USAGE_LOCKED_SWEEP_ALL("locked_sweep_all [index=<N1>[,<N2>,...]] [<priority>] [<ring_size>] <address> <lockblocks> [<payment_id>]");
|
const char* USAGE_LOCKED_SWEEP_ALL("locked_sweep_all [index=<N1>[,<N2>,...]] [<priority>] [<ring_size>] <address> <lockblocks> [<payment_id (obsolete)>]");
|
||||||
const char* USAGE_SWEEP_ALL("sweep_all [index=<N1>[,<N2>,...]] [<priority>] [<ring_size>] [outputs=<N>] <address> [<payment_id>]");
|
const char* USAGE_SWEEP_ALL("sweep_all [index=<N1>[,<N2>,...]] [<priority>] [<ring_size>] [outputs=<N>] <address> [<payment_id (obsolete)>]");
|
||||||
const char* USAGE_SWEEP_BELOW("sweep_below <amount_threshold> [index=<N1>[,<N2>,...]] [<priority>] [<ring_size>] <address> [<payment_id>]");
|
const char* USAGE_SWEEP_BELOW("sweep_below <amount_threshold> [index=<N1>[,<N2>,...]] [<priority>] [<ring_size>] <address> [<payment_id (obsolete)>]");
|
||||||
const char* USAGE_SWEEP_SINGLE("sweep_single [<priority>] [<ring_size>] [outputs=<N>] <key_image> <address> [<payment_id>]");
|
const char* USAGE_SWEEP_SINGLE("sweep_single [<priority>] [<ring_size>] [outputs=<N>] <key_image> <address> [<payment_id (obsolete)>]");
|
||||||
const char* USAGE_DONATE("donate [index=<N1>[,<N2>,...]] [<priority>] [<ring_size>] <amount> [<payment_id>]");
|
const char* USAGE_DONATE("donate [index=<N1>[,<N2>,...]] [<priority>] [<ring_size>] <amount> [<payment_id (obsolete)>]");
|
||||||
const char* USAGE_SIGN_TRANSFER("sign_transfer [export_raw]");
|
const char* USAGE_SIGN_TRANSFER("sign_transfer [export_raw]");
|
||||||
const char* USAGE_SET_LOG("set_log <level>|{+,-,}<categories>");
|
const char* USAGE_SET_LOG("set_log <level>|{+,-,}<categories>");
|
||||||
const char* USAGE_ACCOUNT("account\n"
|
const char* USAGE_ACCOUNT("account\n"
|
||||||
|
@ -861,6 +870,8 @@ bool simple_wallet::change_password(const std::vector<std::string> &args)
|
||||||
|
|
||||||
bool simple_wallet::payment_id(const std::vector<std::string> &args/* = std::vector<std::string>()*/)
|
bool simple_wallet::payment_id(const std::vector<std::string> &args/* = std::vector<std::string>()*/)
|
||||||
{
|
{
|
||||||
|
LONG_PAYMENT_ID_SUPPORT_CHECK();
|
||||||
|
|
||||||
crypto::hash payment_id;
|
crypto::hash payment_id;
|
||||||
if (args.size() > 0)
|
if (args.size() > 0)
|
||||||
{
|
{
|
||||||
|
@ -2223,6 +2234,8 @@ bool simple_wallet::set_refresh_type(const std::vector<std::string> &args/* = st
|
||||||
|
|
||||||
bool simple_wallet::set_confirm_missing_payment_id(const std::vector<std::string> &args/* = std::vector<std::string>()*/)
|
bool simple_wallet::set_confirm_missing_payment_id(const std::vector<std::string> &args/* = std::vector<std::string>()*/)
|
||||||
{
|
{
|
||||||
|
LONG_PAYMENT_ID_SUPPORT_CHECK();
|
||||||
|
|
||||||
const auto pwd_container = get_and_verify_password();
|
const auto pwd_container = get_and_verify_password();
|
||||||
if (pwd_container)
|
if (pwd_container)
|
||||||
{
|
{
|
||||||
|
@ -2848,7 +2861,7 @@ simple_wallet::simple_wallet()
|
||||||
m_cmd_binder.set_handler("payment_id",
|
m_cmd_binder.set_handler("payment_id",
|
||||||
boost::bind(&simple_wallet::payment_id, this, _1),
|
boost::bind(&simple_wallet::payment_id, this, _1),
|
||||||
tr(USAGE_PAYMENT_ID),
|
tr(USAGE_PAYMENT_ID),
|
||||||
tr("Generate a new random full size payment id. These will be unencrypted on the blockchain, see integrated_address for encrypted short payment ids."));
|
tr("Generate a new random full size payment id (obsolete). These will be unencrypted on the blockchain, see integrated_address for encrypted short payment ids."));
|
||||||
m_cmd_binder.set_handler("fee",
|
m_cmd_binder.set_handler("fee",
|
||||||
boost::bind(&simple_wallet::print_fee_info, this, _1),
|
boost::bind(&simple_wallet::print_fee_info, this, _1),
|
||||||
tr("Print the information about the current fee and transaction backlog."));
|
tr("Print the information about the current fee and transaction backlog."));
|
||||||
|
@ -3901,6 +3914,7 @@ bool simple_wallet::handle_command_line(const boost::program_options::variables_
|
||||||
m_do_not_relay = command_line::get_arg(vm, arg_do_not_relay);
|
m_do_not_relay = command_line::get_arg(vm, arg_do_not_relay);
|
||||||
m_subaddress_lookahead = command_line::get_arg(vm, arg_subaddress_lookahead);
|
m_subaddress_lookahead = command_line::get_arg(vm, arg_subaddress_lookahead);
|
||||||
m_use_english_language_names = command_line::get_arg(vm, arg_use_english_language_names);
|
m_use_english_language_names = command_line::get_arg(vm, arg_use_english_language_names);
|
||||||
|
m_long_payment_id_support = command_line::get_arg(vm, arg_long_payment_id_support);
|
||||||
m_restoring = !m_generate_from_view_key.empty() ||
|
m_restoring = !m_generate_from_view_key.empty() ||
|
||||||
!m_generate_from_spend_key.empty() ||
|
!m_generate_from_spend_key.empty() ||
|
||||||
!m_generate_from_keys.empty() ||
|
!m_generate_from_keys.empty() ||
|
||||||
|
@ -4614,7 +4628,7 @@ void simple_wallet::on_money_received(uint64_t height, const crypto::hash &txid,
|
||||||
tr("NOTE: this transaction uses an encrypted payment ID: consider using subaddresses instead");
|
tr("NOTE: this transaction uses an encrypted payment ID: consider using subaddresses instead");
|
||||||
else if (get_payment_id_from_tx_extra_nonce(extra_nonce.nonce, payment_id))
|
else if (get_payment_id_from_tx_extra_nonce(extra_nonce.nonce, payment_id))
|
||||||
message_writer(console_color_red, false) <<
|
message_writer(console_color_red, false) <<
|
||||||
tr("WARNING: this transaction uses an unencrypted payment ID: consider using subaddresses instead");
|
(m_long_payment_id_support ? tr("WARNING: this transaction uses an unencrypted payment ID: consider using subaddresses instead.") : tr("WARNING: this transaction uses an unencrypted payment ID: these are obsolete. Support will be withdrawn in the future. Use subaddresses instead."));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (m_auto_refresh_refreshing)
|
if (m_auto_refresh_refreshing)
|
||||||
|
@ -5313,6 +5327,8 @@ bool simple_wallet::transfer_main(int transfer_type, const std::vector<std::stri
|
||||||
bool r = true;
|
bool r = true;
|
||||||
if (tools::wallet2::parse_long_payment_id(payment_id_str, payment_id))
|
if (tools::wallet2::parse_long_payment_id(payment_id_str, payment_id))
|
||||||
{
|
{
|
||||||
|
LONG_PAYMENT_ID_SUPPORT_CHECK();
|
||||||
|
|
||||||
std::string extra_nonce;
|
std::string extra_nonce;
|
||||||
set_payment_id_to_tx_extra_nonce(extra_nonce, payment_id);
|
set_payment_id_to_tx_extra_nonce(extra_nonce, payment_id);
|
||||||
r = add_extra_nonce_to_tx_extra(extra, extra_nonce);
|
r = add_extra_nonce_to_tx_extra(extra, extra_nonce);
|
||||||
|
@ -5423,6 +5439,7 @@ bool simple_wallet::transfer_main(int transfer_type, const std::vector<std::stri
|
||||||
}
|
}
|
||||||
else if (tools::wallet2::parse_payment_id(payment_id_uri, payment_id))
|
else if (tools::wallet2::parse_payment_id(payment_id_uri, payment_id))
|
||||||
{
|
{
|
||||||
|
LONG_PAYMENT_ID_SUPPORT_CHECK();
|
||||||
set_payment_id_to_tx_extra_nonce(extra_nonce, payment_id);
|
set_payment_id_to_tx_extra_nonce(extra_nonce, payment_id);
|
||||||
message_writer() << tr("Unencrypted payment IDs are bad for privacy: ask the recipient to use subaddresses instead");
|
message_writer() << tr("Unencrypted payment IDs are bad for privacy: ask the recipient to use subaddresses instead");
|
||||||
}
|
}
|
||||||
|
@ -5444,7 +5461,7 @@ bool simple_wallet::transfer_main(int transfer_type, const std::vector<std::stri
|
||||||
}
|
}
|
||||||
|
|
||||||
// prompt is there is no payment id and confirmation is required
|
// prompt is there is no payment id and confirmation is required
|
||||||
if (!payment_id_seen && m_wallet->confirm_missing_payment_id() && dsts.size() > num_subaddresses)
|
if (m_long_payment_id_support && !payment_id_seen && m_wallet->confirm_missing_payment_id() && dsts.size() > num_subaddresses)
|
||||||
{
|
{
|
||||||
std::string accepted = input_line(tr("No payment id is included with this transaction. Is this okay? (Y/Yes/N/No): "));
|
std::string accepted = input_line(tr("No payment id is included with this transaction. Is this okay? (Y/Yes/N/No): "));
|
||||||
if (std::cin.eof())
|
if (std::cin.eof())
|
||||||
|
@ -5967,6 +5984,8 @@ bool simple_wallet::sweep_main(uint64_t below, bool locked, const std::vector<st
|
||||||
bool r = tools::wallet2::parse_long_payment_id(payment_id_str, payment_id);
|
bool r = tools::wallet2::parse_long_payment_id(payment_id_str, payment_id);
|
||||||
if(r)
|
if(r)
|
||||||
{
|
{
|
||||||
|
LONG_PAYMENT_ID_SUPPORT_CHECK();
|
||||||
|
|
||||||
std::string extra_nonce;
|
std::string extra_nonce;
|
||||||
set_payment_id_to_tx_extra_nonce(extra_nonce, payment_id);
|
set_payment_id_to_tx_extra_nonce(extra_nonce, payment_id);
|
||||||
r = add_extra_nonce_to_tx_extra(extra, extra_nonce);
|
r = add_extra_nonce_to_tx_extra(extra, extra_nonce);
|
||||||
|
@ -6011,7 +6030,7 @@ bool simple_wallet::sweep_main(uint64_t below, bool locked, const std::vector<st
|
||||||
}
|
}
|
||||||
|
|
||||||
// prompt is there is no payment id and confirmation is required
|
// prompt is there is no payment id and confirmation is required
|
||||||
if (!payment_id_seen && m_wallet->confirm_missing_payment_id() && !info.is_subaddress)
|
if (m_long_payment_id_support && !payment_id_seen && m_wallet->confirm_missing_payment_id() && !info.is_subaddress)
|
||||||
{
|
{
|
||||||
std::string accepted = input_line(tr("No payment id is included with this transaction. Is this okay? (Y/Yes/N/No): "));
|
std::string accepted = input_line(tr("No payment id is included with this transaction. Is this okay? (Y/Yes/N/No): "));
|
||||||
if (std::cin.eof())
|
if (std::cin.eof())
|
||||||
|
@ -6222,6 +6241,7 @@ bool simple_wallet::sweep_single(const std::vector<std::string> &args_)
|
||||||
std::string extra_nonce;
|
std::string extra_nonce;
|
||||||
if (tools::wallet2::parse_long_payment_id(local_args.back(), payment_id))
|
if (tools::wallet2::parse_long_payment_id(local_args.back(), payment_id))
|
||||||
{
|
{
|
||||||
|
LONG_PAYMENT_ID_SUPPORT_CHECK();
|
||||||
set_payment_id_to_tx_extra_nonce(extra_nonce, payment_id);
|
set_payment_id_to_tx_extra_nonce(extra_nonce, payment_id);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
|
@ -6279,7 +6299,7 @@ bool simple_wallet::sweep_single(const std::vector<std::string> &args_)
|
||||||
}
|
}
|
||||||
|
|
||||||
// prompt if there is no payment id and confirmation is required
|
// prompt if there is no payment id and confirmation is required
|
||||||
if (!payment_id_seen && m_wallet->confirm_missing_payment_id() && !info.is_subaddress)
|
if (m_long_payment_id_support && !payment_id_seen && m_wallet->confirm_missing_payment_id() && !info.is_subaddress)
|
||||||
{
|
{
|
||||||
std::string accepted = input_line(tr("No payment id is included with this transaction. Is this okay? (Y/Yes/N/No): "));
|
std::string accepted = input_line(tr("No payment id is included with this transaction. Is this okay? (Y/Yes/N/No): "));
|
||||||
if (std::cin.eof())
|
if (std::cin.eof())
|
||||||
|
@ -6495,6 +6515,7 @@ bool simple_wallet::accept_loaded_tx(const std::function<size_t()> get_num_txes,
|
||||||
if (!payment_id_string.empty())
|
if (!payment_id_string.empty())
|
||||||
payment_id_string += ", ";
|
payment_id_string += ", ";
|
||||||
payment_id_string = std::string("unencrypted payment ID ") + epee::string_tools::pod_to_hex(payment_id);
|
payment_id_string = std::string("unencrypted payment ID ") + epee::string_tools::pod_to_hex(payment_id);
|
||||||
|
payment_id_string += " (OBSOLETE)";
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -8223,6 +8244,7 @@ bool simple_wallet::address_book(const std::vector<std::string> &args/* = std::v
|
||||||
{
|
{
|
||||||
if (tools::wallet2::parse_long_payment_id(args[3], payment_id))
|
if (tools::wallet2::parse_long_payment_id(args[3], payment_id))
|
||||||
{
|
{
|
||||||
|
LONG_PAYMENT_ID_SUPPORT_CHECK();
|
||||||
description_start += 2;
|
description_start += 2;
|
||||||
}
|
}
|
||||||
else if (tools::wallet2::parse_short_payment_id(args[3], info.payment_id))
|
else if (tools::wallet2::parse_short_payment_id(args[3], info.payment_id))
|
||||||
|
@ -8266,7 +8288,7 @@ bool simple_wallet::address_book(const std::vector<std::string> &args/* = std::v
|
||||||
auto& row = address_book[i];
|
auto& row = address_book[i];
|
||||||
success_msg_writer() << tr("Index: ") << i;
|
success_msg_writer() << tr("Index: ") << i;
|
||||||
success_msg_writer() << tr("Address: ") << get_account_address_as_str(m_wallet->nettype(), row.m_is_subaddress, row.m_address);
|
success_msg_writer() << tr("Address: ") << get_account_address_as_str(m_wallet->nettype(), row.m_is_subaddress, row.m_address);
|
||||||
success_msg_writer() << tr("Payment ID: ") << row.m_payment_id;
|
success_msg_writer() << tr("Payment ID: ") << row.m_payment_id << " (OBSOLETE)";
|
||||||
success_msg_writer() << tr("Description: ") << row.m_description << "\n";
|
success_msg_writer() << tr("Description: ") << row.m_description << "\n";
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -8949,6 +8971,7 @@ int main(int argc, char* argv[])
|
||||||
command_line::add_arg(desc_params, arg_create_address_file);
|
command_line::add_arg(desc_params, arg_create_address_file);
|
||||||
command_line::add_arg(desc_params, arg_subaddress_lookahead);
|
command_line::add_arg(desc_params, arg_subaddress_lookahead);
|
||||||
command_line::add_arg(desc_params, arg_use_english_language_names);
|
command_line::add_arg(desc_params, arg_use_english_language_names);
|
||||||
|
command_line::add_arg(desc_params, arg_long_payment_id_support);
|
||||||
|
|
||||||
po::positional_options_description positional_options;
|
po::positional_options_description positional_options;
|
||||||
positional_options.add(arg_command.name, -1);
|
positional_options.add(arg_command.name, -1);
|
||||||
|
|
|
@ -399,6 +399,8 @@ namespace cryptonote
|
||||||
std::atomic<bool> m_in_manual_refresh;
|
std::atomic<bool> m_in_manual_refresh;
|
||||||
uint32_t m_current_subaddress_account;
|
uint32_t m_current_subaddress_account;
|
||||||
|
|
||||||
|
bool m_long_payment_id_support;
|
||||||
|
|
||||||
// MMS
|
// MMS
|
||||||
mms::message_store& get_message_store() const { return m_wallet->get_message_store(); };
|
mms::message_store& get_message_store() const { return m_wallet->get_message_store(); };
|
||||||
mms::multisig_wallet_state get_multisig_wallet_state() const { return m_wallet->get_multisig_wallet_state(); };
|
mms::multisig_wallet_state get_multisig_wallet_state() const { return m_wallet->get_multisig_wallet_state(); };
|
||||||
|
|
Loading…
Reference in New Issue