diff options
author | warptangent <warptangent@inbox.com> | 2014-12-06 01:59:13 -0800 |
---|---|---|
committer | warptangent <warptangent@inbox.com> | 2014-12-06 02:05:50 -0800 |
commit | 1beedb9dd4633f7e365f470f9dbddc8596b1ee75 (patch) | |
tree | 8f1b2a6ee6d364ae396ecbb2b1a825bcce780d64 | |
parent | indentation (diff) | |
download | monero-1beedb9dd4633f7e365f470f9dbddc8596b1ee75.tar.xz |
Extract check for deterministic keys to wallet2::is_deterministic()
It's cleaner for wallet2.cpp and it also allows deterministic check by
simplewallet.cpp.
-rw-r--r-- | src/wallet/wallet2.cpp | 22 | ||||
-rw-r--r-- | src/wallet/wallet2.h | 4 |
2 files changed, 20 insertions, 6 deletions
diff --git a/src/wallet/wallet2.cpp b/src/wallet/wallet2.cpp index 066b006b4..58b715f20 100644 --- a/src/wallet/wallet2.cpp +++ b/src/wallet/wallet2.cpp @@ -89,8 +89,23 @@ void wallet2::init(const std::string& daemon_address, uint64_t upper_transaction m_daemon_address = daemon_address; } //---------------------------------------------------------------------------------------------------- +bool wallet2::is_deterministic() +{ + crypto::secret_key second; + keccak((uint8_t *)&get_account().get_keys().m_spend_secret_key, sizeof(crypto::secret_key), (uint8_t *)&second, sizeof(crypto::secret_key)); + sc_reduce32((uint8_t *)&second); + bool keys_deterministic = memcmp(second.data,get_account().get_keys().m_view_secret_key.data, sizeof(crypto::secret_key)) == 0; + return keys_deterministic; +} +//---------------------------------------------------------------------------------------------------- bool wallet2::get_seed(std::string& electrum_words) { + bool keys_deterministic = is_deterministic(); + if (!keys_deterministic) + { + std::cout << "This is not a deterministic wallet" << std::endl; + return false; + } if (seed_language.empty()) { std::cout << "seed_language not set" << std::endl; @@ -99,12 +114,7 @@ bool wallet2::get_seed(std::string& electrum_words) crypto::ElectrumWords::bytes_to_words(get_account().get_keys().m_spend_secret_key, electrum_words, seed_language); - crypto::secret_key second; - keccak((uint8_t *)&get_account().get_keys().m_spend_secret_key, sizeof(crypto::secret_key), (uint8_t *)&second, sizeof(crypto::secret_key)); - - sc_reduce32((uint8_t *)&second); - - return memcmp(second.data,get_account().get_keys().m_view_secret_key.data, sizeof(crypto::secret_key)) == 0; + return true; } /*! * \brief Gets the seed language diff --git a/src/wallet/wallet2.h b/src/wallet/wallet2.h index bcd7ce6f7..f22c5d79d 100644 --- a/src/wallet/wallet2.h +++ b/src/wallet/wallet2.h @@ -168,6 +168,10 @@ namespace tools i_wallet2_callback* callback() const { return m_callback; } void callback(i_wallet2_callback* callback) { m_callback = callback; } + /*! + * \brief Checks if deterministic wallet + */ + bool is_deterministic(); bool get_seed(std::string& electrum_words); /*! * \brief Gets the seed language |