From 6f6e73284aaa2127b01ccb5ebf0cde81204c1093 Mon Sep 17 00:00:00 2001 From: woodser Date: Wed, 4 Dec 2019 10:24:41 -0500 Subject: [PATCH] validating mnemonioc in keys wallet --- src/wallet/monero_wallet_keys.cpp | 20 ++++++++++---------- src/wallet/monero_wallet_keys.h | 13 +++++++++---- src/wallet/monero_wallet_w2.cpp | 2 +- 3 files changed, 20 insertions(+), 15 deletions(-) diff --git a/src/wallet/monero_wallet_keys.cpp b/src/wallet/monero_wallet_keys.cpp index 89a7c4b..64c14b6 100644 --- a/src/wallet/monero_wallet_keys.cpp +++ b/src/wallet/monero_wallet_keys.cpp @@ -71,11 +71,6 @@ namespace monero { // ---------------------------- WALLET MANAGEMENT --------------------------- - monero_wallet_keys* monero_wallet_keys::create_wallet_random() { - cout << "monero_wallet_keys::create_wallet_random()" << endl; - throw runtime_error("create_wallet_random() not implemented"); - } - monero_wallet_keys* monero_wallet_keys::create_wallet_random(const monero_network_type network_type, const string& language) { cout << "monero_wallet_keys::create_wallet_random(...)" << endl; throw runtime_error("create_wallet_random(...) not implemented"); @@ -83,12 +78,17 @@ namespace monero { monero_wallet_keys* monero_wallet_keys::create_wallet_from_mnemonic(const monero_network_type network_type, const string& mnemonic) { cout << "monero_wallet_keys::create_wallet_from_mnemonic()" << endl; - throw runtime_error("create_wallet_from_mnemonic() not implemented"); - } - monero_wallet_keys* monero_wallet_keys::create_wallet_from_keys(const monero_network_type network_type, const string& address, const string& view_key, const string& spend_key) { - cout << "monero_wallet_keys::create_wallet_from_keys()" << endl; - throw runtime_error("create_wallet_from_keys() not implemented"); + // validate mnemonic and get recovery key and language + crypto::secret_key recoveryKey; + string language; + bool is_valid = crypto::ElectrumWords::words_to_bytes(mnemonic, recoveryKey, language); + if (!is_valid) throw runtime_error("Invalid mnemonic"); + if (language == crypto::ElectrumWords::old_language_name) language = Language::English().get_language_name(); + + cout << "MNEMONIC VALIDATED" << endl; + + throw runtime_error("create_wallet_from_mnemonic() not implemented"); } monero_wallet_keys* monero_wallet_keys::create_wallet_from_keys(const monero_network_type network_type, const string& address, const string& view_key, const string& spend_key, const string& language) { diff --git a/src/wallet/monero_wallet_keys.h b/src/wallet/monero_wallet_keys.h index 7ccdebb..7b4b980 100644 --- a/src/wallet/monero_wallet_keys.h +++ b/src/wallet/monero_wallet_keys.h @@ -75,7 +75,6 @@ namespace monero { * @param network_type is the wallet's network type (default = monero_network_type.MAINNET) * @param language is the wallet and mnemonic's language (default = "English") */ - static monero_wallet_keys* create_wallet_random(); static monero_wallet_keys* create_wallet_random(const monero_network_type network_type, const string& language); /** @@ -95,8 +94,7 @@ namespace monero { * @param spend_key is the spend key of the wallet to construct * @param language is the wallet and mnemonic's language (default = "English") */ - static monero_wallet_keys* create_wallet_from_keys(const monero_network_type network_type, const string& address, const string& view_key, const string& spend_key); - static monero_wallet_keys* create_wallet_from_keys(const monero_network_type network_type, const string& address, const string& view_key, const string& spend_key, const string& language); + static monero_wallet_keys* create_wallet_from_keys(const monero_network_type network_type, const string& address, const string& view_key, const string& spend_key, const string& language = "English"); /** * Destruct the wallet. @@ -132,6 +130,13 @@ namespace monero { // --------------------------------- PRIVATE -------------------------------- private: - + string seed; + string mnemonic; + string language; + string pub_view_key; + string prv_view_key; + string pub_spend_key; + string prv_spend_key; + string primary_address; }; } diff --git a/src/wallet/monero_wallet_w2.cpp b/src/wallet/monero_wallet_w2.cpp index 4ebddf2..a7dc279 100644 --- a/src/wallet/monero_wallet_w2.cpp +++ b/src/wallet/monero_wallet_w2.cpp @@ -838,7 +838,7 @@ namespace monero { // validate mnemonic and get recovery key and language crypto::secret_key recoveryKey; - std::string language; + string language; bool is_valid = crypto::ElectrumWords::words_to_bytes(mnemonic, recoveryKey, language); if (!is_valid) throw runtime_error("Invalid mnemonic"); if (language == crypto::ElectrumWords::old_language_name) language = Language::English().get_language_name();