Verify message supports normalized and non-normalized recovery parameter.

This commit is contained in:
Richard Moore 2017-12-29 20:44:32 -05:00
parent a4e768e2b3
commit 43061c691b
No known key found for this signature in database
GPG Key ID: 525F70A6FCABC295
2 changed files with 6 additions and 3 deletions

View File

@ -1,6 +1,6 @@
{ {
"name": "ethers-wallet", "name": "ethers-wallet",
"version": "2.1.6", "version": "2.1.7",
"description": "Wallet and signing library for Ethereum.", "description": "Wallet and signing library for Ethereum.",
"bugs": { "bugs": {
"url": "http://github.com/ethers-io/ethers.js/issues", "url": "http://github.com/ethers-io/ethers.js/issues",

View File

@ -306,13 +306,16 @@ utils.defineProperty(Wallet, 'verifyMessage', function(message, signature) {
signature = utils.hexlify(signature); signature = utils.hexlify(signature);
if (signature.length != 132) { throw new Error('invalid signature'); } if (signature.length != 132) { throw new Error('invalid signature'); }
var digest = getHash(message); var digest = getHash(message);
var recoveryParam = parseInt(signature.substring(130), 16) - 27;
var recoveryParam = parseInt(signature.substring(130), 16);
if (recoveryParam >= 27) { recoveryParam -= 27; }
if (recoveryParam < 0) { throw new Error('invalid signature'); } if (recoveryParam < 0) { throw new Error('invalid signature'); }
return SigningKey.recover( return SigningKey.recover(
digest, digest,
signature.substring(0, 66), signature.substring(0, 66),
'0x' + signature.substring(66, 130), '0x' + signature.substring(66, 130),
parseInt(signature.substring(130), 16) - 27 recoveryParam
); );
}); });