Add address normalization to isValidECSignature method
This commit is contained in:
@@ -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",
|
||||||
|
|||||||
@@ -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;
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user