|
|
|
@ -329,12 +329,12 @@ Value signmessage(const Array& params, bool fHelp)
@@ -329,12 +329,12 @@ Value signmessage(const Array& params, bool fHelp)
|
|
|
|
|
if (!pwalletMain->GetKey(keyID, key)) |
|
|
|
|
throw JSONRPCError(RPC_WALLET_ERROR, "Private key not available"); |
|
|
|
|
|
|
|
|
|
CDataStream ss(SER_GETHASH, 0); |
|
|
|
|
CHashWriter ss(SER_GETHASH, 0); |
|
|
|
|
ss << strMessageMagic; |
|
|
|
|
ss << strMessage; |
|
|
|
|
|
|
|
|
|
vector<unsigned char> vchSig; |
|
|
|
|
if (!key.SignCompact(Hash(ss.begin(), ss.end()), vchSig)) |
|
|
|
|
if (!key.SignCompact(ss.GetHash(), vchSig)) |
|
|
|
|
throw JSONRPCError(RPC_INVALID_ADDRESS_OR_KEY, "Sign failed"); |
|
|
|
|
|
|
|
|
|
return EncodeBase64(&vchSig[0], vchSig.size()); |
|
|
|
@ -365,12 +365,12 @@ Value verifymessage(const Array& params, bool fHelp)
@@ -365,12 +365,12 @@ Value verifymessage(const Array& params, bool fHelp)
|
|
|
|
|
if (fInvalid) |
|
|
|
|
throw JSONRPCError(RPC_INVALID_ADDRESS_OR_KEY, "Malformed base64 encoding"); |
|
|
|
|
|
|
|
|
|
CDataStream ss(SER_GETHASH, 0); |
|
|
|
|
CHashWriter ss(SER_GETHASH, 0); |
|
|
|
|
ss << strMessageMagic; |
|
|
|
|
ss << strMessage; |
|
|
|
|
|
|
|
|
|
CKey key; |
|
|
|
|
if (!key.SetCompactSignature(Hash(ss.begin(), ss.end()), vchSig)) |
|
|
|
|
if (!key.SetCompactSignature(ss.GetHash(), vchSig)) |
|
|
|
|
return false; |
|
|
|
|
|
|
|
|
|
return (key.GetPubKey().GetID() == keyID); |
|
|
|
|