mirror of
https://github.com/bitcoin/bitcoin.git
synced 2025-01-25 10:43:19 -03:00
Optionally allow AskPassphraseDialog to output the passphrase
This commit is contained in:
parent
bc6d8a3662
commit
60adb21c7a
2 changed files with 33 additions and 20 deletions
|
@ -18,12 +18,13 @@
|
|||
#include <QMessageBox>
|
||||
#include <QPushButton>
|
||||
|
||||
AskPassphraseDialog::AskPassphraseDialog(Mode _mode, QWidget *parent) :
|
||||
AskPassphraseDialog::AskPassphraseDialog(Mode _mode, QWidget *parent, SecureString* passphrase_out) :
|
||||
QDialog(parent),
|
||||
ui(new Ui::AskPassphraseDialog),
|
||||
mode(_mode),
|
||||
model(nullptr),
|
||||
fCapsLock(false)
|
||||
fCapsLock(false),
|
||||
m_passphrase_out(passphrase_out)
|
||||
{
|
||||
ui->setupUi(this);
|
||||
|
||||
|
@ -90,7 +91,7 @@ void AskPassphraseDialog::setModel(WalletModel *_model)
|
|||
void AskPassphraseDialog::accept()
|
||||
{
|
||||
SecureString oldpass, newpass1, newpass2;
|
||||
if(!model)
|
||||
if (!model && mode != Encrypt)
|
||||
return;
|
||||
oldpass.reserve(MAX_PASSPHRASE_SIZE);
|
||||
newpass1.reserve(MAX_PASSPHRASE_SIZE);
|
||||
|
@ -119,24 +120,33 @@ void AskPassphraseDialog::accept()
|
|||
{
|
||||
if(newpass1 == newpass2)
|
||||
{
|
||||
if(model->setWalletEncrypted(true, newpass1))
|
||||
{
|
||||
QMessageBox::warning(this, tr("Wallet encrypted"),
|
||||
QString encryption_reminder = tr("Remember that encrypting your wallet cannot fully protect "
|
||||
"your bitcoins from being stolen by malware infecting your computer.");
|
||||
if (m_passphrase_out) {
|
||||
m_passphrase_out->assign(newpass1);
|
||||
QMessageBox::warning(this, tr("Wallet to be encrypted"),
|
||||
"<qt>" +
|
||||
tr("Your wallet is now encrypted. "
|
||||
"Remember that encrypting your wallet cannot fully protect "
|
||||
"your bitcoins from being stolen by malware infecting your computer.") +
|
||||
"<br><br><b>" +
|
||||
tr("IMPORTANT: Any previous backups you have made of your wallet file "
|
||||
"should be replaced with the newly generated, encrypted wallet file. "
|
||||
"For security reasons, previous backups of the unencrypted wallet file "
|
||||
"will become useless as soon as you start using the new, encrypted wallet.") +
|
||||
tr("Your wallet is about to be encrypted. ") + encryption_reminder +
|
||||
"</b></qt>");
|
||||
}
|
||||
else
|
||||
{
|
||||
QMessageBox::critical(this, tr("Wallet encryption failed"),
|
||||
tr("Wallet encryption failed due to an internal error. Your wallet was not encrypted."));
|
||||
} else {
|
||||
assert(model != nullptr);
|
||||
if(model->setWalletEncrypted(true, newpass1))
|
||||
{
|
||||
QMessageBox::warning(this, tr("Wallet encrypted"),
|
||||
"<qt>" +
|
||||
tr("Your wallet is now encrypted. ") + encryption_reminder +
|
||||
"<br><br><b>" +
|
||||
tr("IMPORTANT: Any previous backups you have made of your wallet file "
|
||||
"should be replaced with the newly generated, encrypted wallet file. "
|
||||
"For security reasons, previous backups of the unencrypted wallet file "
|
||||
"will become useless as soon as you start using the new, encrypted wallet.") +
|
||||
"</b></qt>");
|
||||
}
|
||||
else
|
||||
{
|
||||
QMessageBox::critical(this, tr("Wallet encryption failed"),
|
||||
tr("Wallet encryption failed due to an internal error. Your wallet was not encrypted."));
|
||||
}
|
||||
}
|
||||
QDialog::accept(); // Success
|
||||
}
|
||||
|
|
|
@ -7,6 +7,8 @@
|
|||
|
||||
#include <QDialog>
|
||||
|
||||
#include <support/allocators/secure.h>
|
||||
|
||||
class WalletModel;
|
||||
|
||||
namespace Ui {
|
||||
|
@ -27,7 +29,7 @@ public:
|
|||
Decrypt /**< Ask passphrase and decrypt wallet */
|
||||
};
|
||||
|
||||
explicit AskPassphraseDialog(Mode mode, QWidget *parent);
|
||||
explicit AskPassphraseDialog(Mode mode, QWidget *parent, SecureString* passphrase_out = nullptr);
|
||||
~AskPassphraseDialog();
|
||||
|
||||
void accept();
|
||||
|
@ -39,6 +41,7 @@ private:
|
|||
Mode mode;
|
||||
WalletModel *model;
|
||||
bool fCapsLock;
|
||||
SecureString* m_passphrase_out;
|
||||
|
||||
private Q_SLOTS:
|
||||
void textChanged();
|
||||
|
|
Loading…
Add table
Reference in a new issue