Use CHashWriter also in SignatureHash(), and for message signing
This commit is contained in:
@@ -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)
|
||||
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);
|
||||
|
||||
Reference in New Issue
Block a user