mirror of
https://github.com/monero-project/monero.git
synced 2025-05-28 22:52:18 -04:00
simplewallet: allow creating a wallet from a public address and view secret key
The needed information is supplied via a triple: --generate-from-view-key address:viewkey:filename
This commit is contained in:
parent
6a0f61d800
commit
dc4dbc1ceb
4 changed files with 124 additions and 8 deletions
|
@ -675,6 +675,40 @@ crypto::secret_key wallet2::generate(const std::string& wallet_, const std::stri
|
|||
return retval;
|
||||
}
|
||||
|
||||
/*!
|
||||
* \brief Creates a watch only wallet from a public address and a view secret key.
|
||||
* \param wallet_ Name of wallet file
|
||||
* \param password Password of wallet file
|
||||
* \param viewkey view secret key
|
||||
*/
|
||||
void wallet2::generate(const std::string& wallet_, const std::string& password,
|
||||
const cryptonote::account_public_address &account_public_address,
|
||||
const crypto::secret_key& viewkey)
|
||||
{
|
||||
clear();
|
||||
prepare_file_names(wallet_);
|
||||
|
||||
boost::system::error_code ignored_ec;
|
||||
THROW_WALLET_EXCEPTION_IF(boost::filesystem::exists(m_wallet_file, ignored_ec), error::file_exists, m_wallet_file);
|
||||
THROW_WALLET_EXCEPTION_IF(boost::filesystem::exists(m_keys_file, ignored_ec), error::file_exists, m_keys_file);
|
||||
|
||||
m_account.create_from_viewkey(account_public_address, viewkey);
|
||||
m_account_public_address = account_public_address;
|
||||
m_watch_only = true;
|
||||
|
||||
bool r = store_keys(m_keys_file, password, true);
|
||||
THROW_WALLET_EXCEPTION_IF(!r, error::file_save_error, m_keys_file);
|
||||
|
||||
r = file_io_utils::save_string_to_file(m_wallet_file + ".address.txt", m_account.get_public_address_str(m_testnet));
|
||||
if(!r) LOG_PRINT_RED_L0("String with address text not saved");
|
||||
|
||||
cryptonote::block b;
|
||||
generate_genesis(b);
|
||||
m_blockchain.push_back(get_block_hash(b));
|
||||
|
||||
store();
|
||||
}
|
||||
|
||||
/*!
|
||||
* \brief Rewrites to the wallet file for wallet upgrade (doesn't generate key, assumes it's already there)
|
||||
* \param wallet_name Name of wallet file (should exist)
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue