From f8f0d9893d7969bdaa870fadb94ec5d0dfa8334d Mon Sep 17 00:00:00 2001 From: Vasil Dimov Date: Fri, 22 Nov 2019 17:17:29 +0100 Subject: Deduplicate the message signing code The logic of signing a message was duplicated in 3 places: src/qt/signverifymessagedialog.cpp SignVerifyMessageDialog::on_signMessageButton_SM_clicked() src/rpc/misc.cpp signmessagewithprivkey() src/wallet/rpcwallet.cpp signmessage() Move the logic into src/util/message.cpp MessageSign() and call it from all the 3 places. --- src/qt/signverifymessagedialog.cpp | 13 +++++-------- src/rpc/misc.cpp | 12 +++++------- src/test/util_tests.cpp | 40 +++++++++++++++++++++++++++++++++++++- src/util/message.cpp | 21 ++++++++++++++++++++ src/util/message.h | 12 ++++++++++++ src/wallet/rpcwallet.cpp | 12 +++++------- 6 files changed, 87 insertions(+), 23 deletions(-) (limited to 'src') diff --git a/src/qt/signverifymessagedialog.cpp b/src/qt/signverifymessagedialog.cpp index aa8e23f53b..883dcecf9a 100644 --- a/src/qt/signverifymessagedialog.cpp +++ b/src/qt/signverifymessagedialog.cpp @@ -11,7 +11,7 @@ #include #include -#include // For strMessageMagic, MessageVerify() +#include // For MessageSign(), MessageVerify() #include #include @@ -141,13 +141,10 @@ void SignVerifyMessageDialog::on_signMessageButton_SM_clicked() return; } - CHashWriter ss(SER_GETHASH, 0); - ss << strMessageMagic; - ss << ui->messageIn_SM->document()->toPlainText().toStdString(); + const std::string& message = ui->messageIn_SM->document()->toPlainText().toStdString(); + std::string signature; - std::vector vchSig; - if (!key.SignCompact(ss.GetHash(), vchSig)) - { + if (!MessageSign(key, message, signature)) { ui->statusLabel_SM->setStyleSheet("QLabel { color: red; }"); ui->statusLabel_SM->setText(QString("") + tr("Message signing failed.") + QString("")); return; @@ -156,7 +153,7 @@ void SignVerifyMessageDialog::on_signMessageButton_SM_clicked() ui->statusLabel_SM->setStyleSheet("QLabel { color: green; }"); ui->statusLabel_SM->setText(QString("") + tr("Message signed.") + QString("")); - ui->signatureOut_SM->setText(QString::fromStdString(EncodeBase64(vchSig.data(), vchSig.size()))); + ui->signatureOut_SM->setText(QString::fromStdString(signature)); } void SignVerifyMessageDialog::on_copySignatureButton_SM_clicked() diff --git a/src/rpc/misc.cpp b/src/rpc/misc.cpp index 9686a111ed..e77dad6bfa 100644 --- a/src/rpc/misc.cpp +++ b/src/rpc/misc.cpp @@ -11,7 +11,7 @@ #include #include