aboutsummaryrefslogtreecommitdiff
path: root/src/rpc/misc.cpp
diff options
context:
space:
mode:
authorVasil Dimov <vd@FreeBSD.org>2019-11-22 17:17:29 +0100
committerVasil Dimov <vd@FreeBSD.org>2020-02-14 10:45:40 +0100
commitf8f0d9893d7969bdaa870fadb94ec5d0dfa8334d (patch)
tree21484d5e11ebf6cf1f707805ce766b397637beba /src/rpc/misc.cpp
parent2ce3447eb1e25ec7aec4b300dabf6c1e394f1906 (diff)
downloadbitcoin-f8f0d9893d7969bdaa870fadb94ec5d0dfa8334d.tar.xz
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.
Diffstat (limited to 'src/rpc/misc.cpp')
-rw-r--r--src/rpc/misc.cpp12
1 files changed, 5 insertions, 7 deletions
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 <rpc/util.h>
#include <script/descriptor.h>
#include <util/check.h>
-#include <util/message.h> // For strMessageMagic, MessageVerify()
+#include <util/message.h> // For MessageSign(), MessageVerify()
#include <util/strencodings.h>
#include <util/system.h>
@@ -322,15 +322,13 @@ static UniValue signmessagewithprivkey(const JSONRPCRequest& request)
throw JSONRPCError(RPC_INVALID_ADDRESS_OR_KEY, "Invalid private key");
}
- CHashWriter ss(SER_GETHASH, 0);
- ss << strMessageMagic;
- ss << strMessage;
+ std::string signature;
- std::vector<unsigned char> vchSig;
- if (!key.SignCompact(ss.GetHash(), vchSig))
+ if (!MessageSign(key, strMessage, signature)) {
throw JSONRPCError(RPC_INVALID_ADDRESS_OR_KEY, "Sign failed");
+ }
- return EncodeBase64(vchSig.data(), vchSig.size());
+ return signature;
}
static UniValue setmocktime(const JSONRPCRequest& request)