mirror of
https://github.com/monero-project/monero.git
synced 2026-07-28 14:47:15 -07:00
wallet_api: set m_password in the recovery creation paths
libwallet_api_tests: cover password retention on wallet recovery
This commit is contained in:
@@ -681,6 +681,7 @@ bool WalletImpl::recoverFromKeysWithPassword(const std::string &path,
|
|||||||
setStatusError(string(tr("failed to generate new wallet: ")) + e.what());
|
setStatusError(string(tr("failed to generate new wallet: ")) + e.what());
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
m_password = password;
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -698,6 +699,7 @@ bool WalletImpl::recoverFromDevice(const std::string &path, const std::string &p
|
|||||||
setStatusError(string(tr("failed to generate new wallet: ")) + e.what());
|
setStatusError(string(tr("failed to generate new wallet: ")) + e.what());
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
m_password = password;
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -766,6 +768,7 @@ bool WalletImpl::recover(const std::string &path, const std::string &password, c
|
|||||||
try {
|
try {
|
||||||
m_wallet->set_seed_language(old_language);
|
m_wallet->set_seed_language(old_language);
|
||||||
m_wallet->generate(path, password, recovery_key, true, false);
|
m_wallet->generate(path, password, recovery_key, true, false);
|
||||||
|
m_password = password;
|
||||||
|
|
||||||
} catch (const std::exception &e) {
|
} catch (const std::exception &e) {
|
||||||
setStatusCritical(e.what());
|
setStatusCritical(e.what());
|
||||||
|
|||||||
@@ -382,6 +382,43 @@ TEST_F(WalletManagerTest, WalletManagerRecoversWallet)
|
|||||||
ASSERT_TRUE(wmgr->closeWallet(wallet2));
|
ASSERT_TRUE(wmgr->closeWallet(wallet2));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
TEST_F(WalletManagerTest, WalletManagerStoresPasswordOfWalletRecoveredFromSeed)
|
||||||
|
{
|
||||||
|
Monero::Wallet * wallet1 = wmgr->createWallet(WALLET_NAME, WALLET_PASS, WALLET_LANG, Monero::NetworkType::MAINNET);
|
||||||
|
std::string seed1 = wallet1->seed();
|
||||||
|
std::string address1 = wallet1->mainAddress();
|
||||||
|
ASSERT_TRUE(wmgr->closeWallet(wallet1));
|
||||||
|
Utils::deleteWallet(WALLET_NAME);
|
||||||
|
Monero::Wallet * wallet2 = wmgr->recoveryWallet(WALLET_NAME, WALLET_PASS, seed1, Monero::NetworkType::MAINNET, 0);
|
||||||
|
ASSERT_TRUE(wallet2->status() == Monero::Wallet::Status_Ok);
|
||||||
|
ASSERT_TRUE(wallet2->mainAddress() == address1);
|
||||||
|
ASSERT_TRUE(wallet2->store(WALLET_NAME_COPY));
|
||||||
|
ASSERT_TRUE(wmgr->closeWallet(wallet2));
|
||||||
|
Monero::Wallet * wallet3 = wmgr->openWallet(WALLET_NAME_COPY, WALLET_PASS, Monero::NetworkType::MAINNET);
|
||||||
|
ASSERT_TRUE(wallet3->status() == Monero::Wallet::Status_Ok);
|
||||||
|
ASSERT_TRUE(wallet3->mainAddress() == address1);
|
||||||
|
ASSERT_TRUE(wmgr->closeWallet(wallet3));
|
||||||
|
}
|
||||||
|
|
||||||
|
TEST_F(WalletManagerTest, WalletManagerStoresPasswordOfWalletRecoveredFromKeys)
|
||||||
|
{
|
||||||
|
Monero::Wallet * wallet1 = wmgr->createWallet(WALLET_NAME, WALLET_PASS, WALLET_LANG, Monero::NetworkType::MAINNET);
|
||||||
|
std::string address1 = wallet1->mainAddress();
|
||||||
|
std::string viewkey1 = wallet1->secretViewKey();
|
||||||
|
std::string spendkey1 = wallet1->secretSpendKey();
|
||||||
|
ASSERT_TRUE(wmgr->closeWallet(wallet1));
|
||||||
|
Utils::deleteWallet(WALLET_NAME);
|
||||||
|
Monero::Wallet * wallet2 = wmgr->createWalletFromKeys(WALLET_NAME, WALLET_PASS, WALLET_LANG, Monero::NetworkType::MAINNET, 0, address1, viewkey1, spendkey1);
|
||||||
|
ASSERT_TRUE(wallet2->status() == Monero::Wallet::Status_Ok);
|
||||||
|
ASSERT_TRUE(wallet2->mainAddress() == address1);
|
||||||
|
ASSERT_TRUE(wallet2->store(WALLET_NAME_COPY));
|
||||||
|
ASSERT_TRUE(wmgr->closeWallet(wallet2));
|
||||||
|
Monero::Wallet * wallet3 = wmgr->openWallet(WALLET_NAME_COPY, WALLET_PASS, Monero::NetworkType::MAINNET);
|
||||||
|
ASSERT_TRUE(wallet3->status() == Monero::Wallet::Status_Ok);
|
||||||
|
ASSERT_TRUE(wallet3->mainAddress() == address1);
|
||||||
|
ASSERT_TRUE(wmgr->closeWallet(wallet3));
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
TEST_F(WalletManagerTest, WalletManagerStoresWallet1)
|
TEST_F(WalletManagerTest, WalletManagerStoresWallet1)
|
||||||
{
|
{
|
||||||
|
|||||||
Reference in New Issue
Block a user