]> Nutra Git (v2) - gamesguru/feather.git/commitdiff
wizard: allow restoring legacy seeds without checksum word
authortobtoht <tob@featherwallet.org>
Wed, 13 Mar 2024 13:28:16 +0000 (14:28 +0100)
committertobtoht <tob@featherwallet.org>
Wed, 13 Mar 2024 13:28:16 +0000 (14:28 +0100)
src/utils/Seed.cpp
src/wizard/PageWalletRestoreSeed.cpp
src/wizard/PageWalletRestoreSeed.h

index 4ed326e6805ac68532dad574b24f5ff50e8fdb63..852a8dc3954cba27b8cbecc44b4e4971fa0664cd 100644 (file)
@@ -64,8 +64,13 @@ Seed::Seed(Type type, QStringList mnemonic, NetworkType::Type networkType)
     : type(type), mnemonic(std::move(mnemonic)), networkType(networkType)
 {
     if (m_seedLength[this->type] != this->mnemonic.length()) {
-        this->errorString = "Invalid seed length";
-        return;
+        if (this->type == Seed::Type::MONERO && this->mnemonic.length() == 24) {
+            qDebug() << "Loaded legacy seed without checksum";
+        }
+        else {
+            this->errorString = "Invalid seed length";
+            return;
+        }
     }
 
     if (this->type == Type::POLYSEED) {
index 7080b7411452d13d708333241b8286eb9b4f6be5..e8a2c0fcc9a8148f3bc727eb4a2bcff07841a579 100644 (file)
@@ -43,6 +43,7 @@ PageWalletRestoreSeed::PageWalletRestoreSeed(WizardFields *fields, QWidget *pare
     for (int i = 0; i != 2048; i++)
         bip39English << QString::fromStdString(wordlist::english.get_word(i));
 
+    m_polyseed.type = Seed::Type::POLYSEED;
     m_polyseed.length = 16;
     m_polyseed.setWords(bip39English);
 
@@ -50,9 +51,11 @@ PageWalletRestoreSeed::PageWalletRestoreSeed(WizardFields *fields, QWidget *pare
     // (illegible word with a known location). This can be tested by replacing a word with xxxx
     bip39English << "xxxx";
 
+    m_tevador.type = Seed::Type::TEVADOR;
     m_tevador.length = 14;
     m_tevador.setWords(bip39English);
 
+    m_legacy.type = Seed::Type::MONERO;
     m_legacy.length = 25;
     m_legacy.setWords(m_wordlists["English"]);
     ui->combo_seedLanguage->setCurrentText("English");
@@ -163,10 +166,12 @@ bool PageWalletRestoreSeed::validatePage() {
     QStringList seedSplit = seed.split(" ", Qt::SkipEmptyParts);
 
     if (seedSplit.length() != m_mode->length) {
-        ui->label_errorString->show();
-        ui->label_errorString->setText(QString("The mnemonic seed should be %1 words.").arg(m_mode->length));
-        ui->seedEdit->setStyleSheet(errStyle);
-        return false;
+        if (!(m_mode->type == Seed::Type::MONERO && seedSplit.length() == 24)) {
+            ui->label_errorString->show();
+            ui->label_errorString->setText(QString("The mnemonic seed should be %1 words.").arg(m_mode->length));
+            ui->seedEdit->setStyleSheet(errStyle);
+            return false;
+        }
     }
 
     // libwallet will accept e.g. "brötchen" or "BRÖTCHEN" instead of "Brötchen"
index 6561a243edb0f8760647009dfd39075d05fa787b..e2fdee03bcacd675780eb4dc2cc289ff087e5a39 100644 (file)
@@ -46,6 +46,7 @@ private:
         QStringList words;
         QStringListModel completerModel;
         QCompleter completer;
+        Seed::Type type;
     };
 
     void onSeedTypeToggled();