Add address normalization to isValidECSignature method

This commit is contained in:
Fabio Berger
2018-09-27 10:03:54 +01:00
parent 1402119c84
commit 0591f1d32a
2 changed files with 13 additions and 1 deletions

View File

@@ -1,4 +1,14 @@
[ [
{
"version": "1.0.6",
"changes": [
{
"note":
"Add signerAddress normalization to `isValidECSignature` to avoid `invalid address recovery` error if caller supplies a checksummed address",
"pr": 1094
}
]
},
{ {
"timestamp": 1537907159, "timestamp": 1537907159,
"version": "1.0.5", "version": "1.0.5",

View File

@@ -174,6 +174,7 @@ export const signatureUtils = {
assert.isHexString('data', data); assert.isHexString('data', data);
assert.doesConformToSchema('signature', signature, schemas.ecSignatureSchema); assert.doesConformToSchema('signature', signature, schemas.ecSignatureSchema);
assert.isETHAddressHex('signerAddress', signerAddress); assert.isETHAddressHex('signerAddress', signerAddress);
const normalizedSignerAddress = signerAddress.toLowerCase();
const msgHashBuff = ethUtil.toBuffer(data); const msgHashBuff = ethUtil.toBuffer(data);
try { try {
@@ -184,7 +185,8 @@ export const signatureUtils = {
ethUtil.toBuffer(signature.s), ethUtil.toBuffer(signature.s),
); );
const retrievedAddress = ethUtil.bufferToHex(ethUtil.pubToAddress(pubKey)); const retrievedAddress = ethUtil.bufferToHex(ethUtil.pubToAddress(pubKey));
return retrievedAddress === signerAddress; const normalizedRetrievedAddress = retrievedAddress.toLowerCase();
return normalizedRetrievedAddress === normalizedSignerAddress;
} catch (err) { } catch (err) {
return false; return false;
} }