#include "ui_askpassphrasedialog.h"
#include "guiconstants.h"
+#include "dialogwindowflags.h"
#include "walletmodel.h"
#include <QMessageBox>
extern bool fWalletUnlockMintOnly;
AskPassphraseDialog::AskPassphraseDialog(Mode mode, QWidget *parent) :
- QDialog(parent),
+ QDialog(parent, DIALOGWINDOWHINTS),
ui(new Ui::AskPassphraseDialog),
mode(mode),
model(0),
ui->passEdit1->setMaxLength(MAX_PASSPHRASE_SIZE);
ui->passEdit2->setMaxLength(MAX_PASSPHRASE_SIZE);
ui->passEdit3->setMaxLength(MAX_PASSPHRASE_SIZE);
-
+
// Setup Caps Lock detection.
ui->passEdit1->installEventFilter(this);
ui->passEdit2->installEventFilter(this);
AskPassphraseDialog::~AskPassphraseDialog()
{
- // Attempt to overwrite text so that they do not linger around in memory
- ui->passEdit1->setText(QString(" ").repeated(ui->passEdit1->text().size()));
- ui->passEdit2->setText(QString(" ").repeated(ui->passEdit2->text().size()));
- ui->passEdit3->setText(QString(" ").repeated(ui->passEdit3->text().size()));
+ secureClearPassFields();
delete ui;
}
oldpass.assign(ui->passEdit1->text().toStdString().c_str());
newpass1.assign(ui->passEdit2->text().toStdString().c_str());
newpass2.assign(ui->passEdit3->text().toStdString().c_str());
+
+ secureClearPassFields();
switch(mode)
{
}
else
{
- QDialog::accept(); // Success
+ QMessageBox::warning(this, tr("Wallet decrypted"),
+ "<qt>" +
+ tr("NovaCoin will close now to finish the decryption process. ") +
+ "</b></qt>");
+ QApplication::quit();
}
break;
case ChangePass:
}
return QDialog::eventFilter(object, event);
}
+
+static void SecureClearQLineEdit(QLineEdit* edit)
+{
+ // Attempt to overwrite text so that they do not linger around in memory
+ edit->setText(QString(" ").repeated(edit->text().size()));
+ edit->clear();
+}
+
+void AskPassphraseDialog::secureClearPassFields()
+{
+ SecureClearQLineEdit(ui->passEdit1);
+ SecureClearQLineEdit(ui->passEdit2);
+ SecureClearQLineEdit(ui->passEdit3);
+}
\ No newline at end of file