aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorPieter Wuille <pieter.wuille@gmail.com>2011-09-20 15:42:36 +0200
committerPieter Wuille <pieter.wuille@gmail.com>2011-09-27 19:48:22 +0200
commitd9867551fc58ebb62eddef3dfbdb1dc711110577 (patch)
treef2c7b7afaf78952ee51a9ae0e33a58f1f3ebefc4 /src
parentb53d6284eb5b2833ed1bde46dbce5b5a4284804a (diff)
base64-based sign/verify
Diffstat (limited to 'src')
-rw-r--r--src/bitcoinrpc.cpp10
1 files changed, 8 insertions, 2 deletions
diff --git a/src/bitcoinrpc.cpp b/src/bitcoinrpc.cpp
index 3638adac38..c8a0076bfa 100644
--- a/src/bitcoinrpc.cpp
+++ b/src/bitcoinrpc.cpp
@@ -561,7 +561,8 @@ Value signmessage(const Array& params, bool fHelp)
sres << key.GetPubKey(); // public key
sres << vchSig; // signature;
- return HexStr(sres.begin(), sres.end());
+ vector<unsigned char> vchRet(sres.begin(), sres.end());
+ return EncodeBase64(&vchRet[0], vchRet.size());
}
Value verifymessage(const Array& params, bool fHelp)
@@ -579,7 +580,12 @@ Value verifymessage(const Array& params, bool fHelp)
if (!addr.IsValid())
throw JSONRPCError(-3, "Invalid address");
- vector<unsigned char> vchResult = ParseHex(strSign);
+ bool fInvalid = false;
+ vector<unsigned char> vchResult = DecodeBase64(strSign.c_str(), &fInvalid);
+
+ if (fInvalid)
+ throw JSONRPCError(-5, "Malformed base64 encoding");
+
CDataStream sres(vchResult);
std::vector<unsigned char> vchPubKey;