aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorluigi1111 <luigi1111w@gmail.com>2020-04-13 15:36:44 -0500
committerluigi1111 <luigi1111w@gmail.com>2020-04-13 15:36:44 -0500
commiteed51e3ffa4a6a20dd6392e07a3d7afde99b088e (patch)
treef6379babcea1ead55ae2db686f30a99824f9c710
parent6a889bdaa19bd6ef66165d18d10f82c2c5ed6fa0 (diff)
parent48aab5c6e57f9e66ffec7cae0c1398ac767381f7 (diff)
downloadmonzero-gui-eed51e3ffa4a6a20dd6392e07a3d7afde99b088e.tar.gz
monzero-gui-eed51e3ffa4a6a20dd6392e07a3d7afde99b088e.tar.xz
monzero-gui-eed51e3ffa4a6a20dd6392e07a3d7afde99b088e.zip
Merge pull request #2772
48aab5c WalletManager: wallet recovery - seed offset passphrase support (xiphon)
-rw-r--r--src/libwalletqt/WalletManager.cpp4
-rw-r--r--src/libwalletqt/WalletManager.h2
-rw-r--r--wizard/WizardController.qml4
-rw-r--r--wizard/WizardRestoreWallet1.qml19
4 files changed, 24 insertions, 5 deletions
diff --git a/src/libwalletqt/WalletManager.cpp b/src/libwalletqt/WalletManager.cpp
index e089a285..01faf905 100644
--- a/src/libwalletqt/WalletManager.cpp
+++ b/src/libwalletqt/WalletManager.cpp
@@ -151,14 +151,14 @@ void WalletManager::openWalletAsync(const QString &path, const QString &password
}
-Wallet *WalletManager::recoveryWallet(const QString &path, const QString &memo, NetworkType::Type nettype, quint64 restoreHeight, quint64 kdfRounds)
+Wallet *WalletManager::recoveryWallet(const QString &path, const QString &seed, const QString &seed_offset, NetworkType::Type nettype, quint64 restoreHeight, quint64 kdfRounds)
{
QMutexLocker locker(&m_mutex);
if (m_currentWallet) {
qDebug() << "Closing open m_currentWallet" << m_currentWallet;
delete m_currentWallet;
}
- Monero::Wallet * w = m_pimpl->recoveryWallet(path.toStdString(), "", memo.toStdString(), static_cast<Monero::NetworkType>(nettype), restoreHeight, kdfRounds);
+ Monero::Wallet * w = m_pimpl->recoveryWallet(path.toStdString(), "", seed.toStdString(), static_cast<Monero::NetworkType>(nettype), restoreHeight, kdfRounds, seed_offset.toStdString());
m_currentWallet = new Wallet(w);
return m_currentWallet;
}
diff --git a/src/libwalletqt/WalletManager.h b/src/libwalletqt/WalletManager.h
index e5243caf..d03e4e13 100644
--- a/src/libwalletqt/WalletManager.h
+++ b/src/libwalletqt/WalletManager.h
@@ -83,7 +83,7 @@ public:
Q_INVOKABLE void openWalletAsync(const QString &path, const QString &password, NetworkType::Type nettype = NetworkType::MAINNET, quint64 kdfRounds = 1);
// wizard: recoveryWallet path; hint: internally it recorvers wallet and set password = ""
- Q_INVOKABLE Wallet * recoveryWallet(const QString &path, const QString &memo,
+ Q_INVOKABLE Wallet * recoveryWallet(const QString &path, const QString &seed, const QString &seed_offset,
NetworkType::Type nettype = NetworkType::MAINNET, quint64 restoreHeight = 0, quint64 kdfRounds = 1);
Q_INVOKABLE Wallet * createWalletFromKeys(const QString &path,
diff --git a/wizard/WizardController.qml b/wizard/WizardController.qml
index 6ee5f38e..992ae2fb 100644
--- a/wizard/WizardController.qml
+++ b/wizard/WizardController.qml
@@ -59,6 +59,7 @@ Rectangle {
wizardController.walletOptionsLocation = '';
wizardController.walletOptionsPassword = '';
wizardController.walletOptionsSeed = '';
+ wizardController.walletOptionsSeedOffset = '';
wizardController.walletOptionsRecoverAddress = ''
wizardController.walletOptionsRecoverViewkey = ''
wizardController.walletOptionsRecoverSpendkey = ''
@@ -92,6 +93,7 @@ Rectangle {
property string walletOptionsLocation: ''
property string walletOptionsPassword: ''
property string walletOptionsSeed: ''
+ property string walletOptionsSeedOffset: ''
property string walletOptionsRecoverAddress: ''
property string walletOptionsRecoverViewkey: ''
property string walletOptionsRecoverSpendkey: ''
@@ -394,7 +396,7 @@ Rectangle {
var wallet = ''
// From seed or keys
if(wizardController.walletRestoreMode === 'seed')
- wallet = walletManager.recoveryWallet(tmp_wallet_filename, wizardController.walletOptionsSeed, nettype, restoreHeight, kdfRounds)
+ wallet = walletManager.recoveryWallet(tmp_wallet_filename, wizardController.walletOptionsSeed, wizardController.walletOptionsSeedOffset, nettype, restoreHeight, kdfRounds);
else
wallet = walletManager.createWalletFromKeys(tmp_wallet_filename, wizardController.language_wallet, nettype,
wizardController.walletOptionsRecoverAddress, wizardController.walletOptionsRecoverViewkey,
diff --git a/wizard/WizardRestoreWallet1.qml b/wizard/WizardRestoreWallet1.qml
index b9fd5612..cc903bb8 100644
--- a/wizard/WizardRestoreWallet1.qml
+++ b/wizard/WizardRestoreWallet1.qml
@@ -164,8 +164,8 @@ Rectangle {
ColumnLayout {
// seed textarea
visible: wizardController.walletRestoreMode === 'seed'
- Layout.preferredHeight: 100
Layout.fillWidth: true
+ spacing: 10
Rectangle {
color: "transparent"
@@ -217,6 +217,20 @@ Rectangle {
}
}
}
+
+ MoneroComponents.CheckBox2 {
+ id: seedOffsetCheckbox
+ text: qsTr("Seed offset passphrase (optional)") + translationManager.emptyString
+ }
+
+ MoneroComponents.LineEdit {
+ id: seedOffset
+ echoMode: TextInput.Password
+ Layout.fillWidth: true
+ placeholderFontSize: 16
+ placeholderText: qsTr("Passphrase") + translationManager.emptyString
+ visible: seedOffsetCheckbox.checked
+ }
}
MoneroComponents.LineEdit {
@@ -294,6 +308,7 @@ Rectangle {
switch (wizardController.walletRestoreMode) {
case 'seed':
wizardController.walletOptionsSeed = seedInput.text;
+ wizardController.walletOptionsSeedOffset = seedOffsetCheckbox.checked ? seedOffset.text : "";
break;
default: // walletRestoreMode = keys or qr
wizardController.walletOptionsRecoverAddress = addressLine.text;
@@ -325,6 +340,8 @@ Rectangle {
// cleanup
wizardWalletInput.reset();
seedInput.text = "";
+ seedOffsetCheckbox.checked = false;
+ seedOffset.text = "";
addressLine.text = "";
spendKeyLine.text = "";
viewKeyLine.text = "";