diff options
| author | Pieter Wuille <[email protected]> | 2012-05-14 23:44:52 +0200 |
|---|---|---|
| committer | Pieter Wuille <[email protected]> | 2012-05-24 20:26:19 +0200 |
| commit | 1025440184ef100a22d07c7bb543ee45cf169d64 (patch) | |
| tree | cd85ae7d981820189e506167e518adaf820aa638 /src/qt/messagepage.cpp | |
| parent | Encapsulate public keys in CPubKey (diff) | |
| download | discoin-1025440184ef100a22d07c7bb543ee45cf169d64.tar.xz discoin-1025440184ef100a22d07c7bb543ee45cf169d64.zip | |
Refactor: split CKeyID/CScriptID/CTxDestination from CBitcoinAddress
This introduces internal types:
* CKeyID: reference (hash160) of a key
* CScriptID: reference (hash160) of a script
* CTxDestination: a boost::variant of the former two
CBitcoinAddress is retrofitted to be a Base58 encoding of a
CTxDestination. This allows all internal code to only use the
internal types, and only have RPC and GUI depend on the base58 code.
Furthermore, the header dependencies are a lot saner now. base58.h is
at the top (right below rpc and gui) instead of at the bottom. For the
rest: wallet -> script -> keystore -> key. Only keystore still requires
a forward declaration of CScript. Solving that would require splitting
script into two layers.
Diffstat (limited to 'src/qt/messagepage.cpp')
| -rw-r--r-- | src/qt/messagepage.cpp | 10 |
1 files changed, 9 insertions, 1 deletions
diff --git a/src/qt/messagepage.cpp b/src/qt/messagepage.cpp index 1f895e28f..ab3ea5a0c 100644 --- a/src/qt/messagepage.cpp +++ b/src/qt/messagepage.cpp @@ -10,6 +10,7 @@ #include "main.h" #include "wallet.h" #include "init.h" +#include "base58.h" #include "messagepage.h" #include "ui_messagepage.h" @@ -83,6 +84,13 @@ void MessagePage::on_signMessage_clicked() QMessageBox::Abort, QMessageBox::Abort); return; } + CKeyID keyID; + if (!addr.GetKeyID(keyID)) + { + QMessageBox::critical(this, tr("Error signing"), tr("%1 does not refer to a key.").arg(address), + QMessageBox::Abort, QMessageBox::Abort); + return; + } WalletModel::UnlockContext ctx(model->requestUnlock()); if(!ctx.isValid()) @@ -92,7 +100,7 @@ void MessagePage::on_signMessage_clicked() } CKey key; - if (!pwalletMain->GetKey(addr, key)) + if (!pwalletMain->GetKey(keyID, key)) { QMessageBox::critical(this, tr("Error signing"), tr("Private key for %1 is not available.").arg(address), QMessageBox::Abort, QMessageBox::Abort); |