Browse Source

[QT] Don't ask for a passphrase to getnewaddress.

With an encrypted wallet the GUI was prompting for a passphrase every time
 the user requested a new address.  This is unnecessary, increases the
 exposure to keyboard sniffers, and discourages using fresh addresses for
 every transaction.

Instead only prompt for a passphrase when the keypool runs out, also call
 the new address function with the flag that prevents reuse.

Thanks to AlexNagy on IRC for pointing this out and who wouldn't take any
 lip from a curmudgeonly developer and insisted on what he knew to be true.
pull/1/head
Gregory Maxwell 9 years ago
parent
commit
20469d83dd
  1. 23
      src/qt/addresstablemodel.cpp

23
src/qt/addresstablemodel.cpp

@ -355,18 +355,21 @@ QString AddressTableModel::addRow(const QString &type, const QString &label, con @@ -355,18 +355,21 @@ QString AddressTableModel::addRow(const QString &type, const QString &label, con
else if(type == Receive)
{
// Generate a new address to associate with given label
WalletModel::UnlockContext ctx(walletModel->requestUnlock());
if(!ctx.isValid())
{
// Unlock wallet failed or was cancelled
editStatus = WALLET_UNLOCK_FAILURE;
return QString();
}
CPubKey newKey;
if(!wallet->GetKeyFromPool(newKey, true))
if(!wallet->GetKeyFromPool(newKey, false))
{
editStatus = KEY_GENERATION_FAILURE;
return QString();
WalletModel::UnlockContext ctx(walletModel->requestUnlock());
if(!ctx.isValid())
{
// Unlock wallet failed or was cancelled
editStatus = WALLET_UNLOCK_FAILURE;
return QString();
}
if(!wallet->GetKeyFromPool(newKey, false))
{
editStatus = KEY_GENERATION_FAILURE;
return QString();
}
}
strAddress = CBitcoinAddress(newKey.GetID()).ToString();
}

Loading…
Cancel
Save