diff options
author | Pieter Wuille <pieter.wuille@gmail.com> | 2011-09-20 15:42:36 +0200 |
---|---|---|
committer | Pieter Wuille <pieter.wuille@gmail.com> | 2011-09-27 19:48:22 +0200 |
commit | d9867551fc58ebb62eddef3dfbdb1dc711110577 (patch) | |
tree | f2c7b7afaf78952ee51a9ae0e33a58f1f3ebefc4 /src/bitcoinrpc.cpp | |
parent | b53d6284eb5b2833ed1bde46dbce5b5a4284804a (diff) |
base64-based sign/verify
Diffstat (limited to 'src/bitcoinrpc.cpp')
-rw-r--r-- | src/bitcoinrpc.cpp | 10 |
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; |