From 3dd19c4cd426c06a1dfb5d631174cb3b038f1f4c Mon Sep 17 00:00:00 2001 From: warptangent Date: Thu, 6 Nov 2014 14:36:36 -0800 Subject: [PATCH] prompt for seed language and error handling - "seed" simplewallet command was only displaying seed if wallet was newly generated --- src/simplewallet/simplewallet.cpp | 7 +++++++ src/wallet/wallet2.cpp | 13 +++++++++++++ src/wallet/wallet2.h | 4 ++++ 3 files changed, 24 insertions(+) diff --git a/src/simplewallet/simplewallet.cpp b/src/simplewallet/simplewallet.cpp index 84e134fed..be3c82001 100644 --- a/src/simplewallet/simplewallet.cpp +++ b/src/simplewallet/simplewallet.cpp @@ -207,6 +207,13 @@ bool simple_wallet::viewkey(const std::vector &args/* = std::vector bool simple_wallet::seed(const std::vector &args/* = std::vector()*/) { std::string electrum_words; + + if (m_wallet->get_seed_language().empty()) + { + std::string mnemonic_language = get_mnemonic_language(); + m_wallet->set_seed_language(mnemonic_language); + } + bool success = m_wallet->get_seed(electrum_words); if (success) diff --git a/src/wallet/wallet2.cpp b/src/wallet/wallet2.cpp index 6c271f037..066b006b4 100644 --- a/src/wallet/wallet2.cpp +++ b/src/wallet/wallet2.cpp @@ -91,6 +91,12 @@ void wallet2::init(const std::string& daemon_address, uint64_t upper_transaction //---------------------------------------------------------------------------------------------------- bool wallet2::get_seed(std::string& electrum_words) { + if (seed_language.empty()) + { + std::cout << "seed_language not set" << std::endl; + return false; + } + crypto::ElectrumWords::bytes_to_words(get_account().get_keys().m_spend_secret_key, electrum_words, seed_language); crypto::secret_key second; @@ -100,6 +106,13 @@ bool wallet2::get_seed(std::string& electrum_words) return memcmp(second.data,get_account().get_keys().m_view_secret_key.data, sizeof(crypto::secret_key)) == 0; } +/*! + * \brief Gets the seed language + */ +const std::string wallet2::get_seed_language() +{ + return seed_language; +} /*! * \brief Sets the seed language * \param language Seed language to set to diff --git a/src/wallet/wallet2.h b/src/wallet/wallet2.h index d7693e10d..bcd7ce6f7 100644 --- a/src/wallet/wallet2.h +++ b/src/wallet/wallet2.h @@ -169,6 +169,10 @@ namespace tools void callback(i_wallet2_callback* callback) { m_callback = callback; } bool get_seed(std::string& electrum_words); + /*! + * \brief Gets the seed language + */ + const std::string get_seed_language(); /*! * \brief Sets the seed language */