From 49b21f122a232330f7efc499095d8d80f7895a20 Mon Sep 17 00:00:00 2001 From: Ian Coleman Date: Wed, 15 Feb 2017 19:45:03 +1100 Subject: [PATCH] Ethereum addresses include checksum --- bip39-standalone.html | 4 +++- src/js/index.js | 4 +++- tests.js | 4 ++-- 3 files changed, 8 insertions(+), 4 deletions(-) diff --git a/bip39-standalone.html b/bip39-standalone.html index 0d1d244..de74d80 100644 --- a/bip39-standalone.html +++ b/bip39-standalone.html @@ -41770,7 +41770,9 @@ window.Entropy = new (function() { var privKeyBuffer = key.privKey.d.toBuffer(); privkey = privKeyBuffer.toString('hex'); var addressBuffer = ethUtil.privateToAddress(privKeyBuffer); - address = "0x" + addressBuffer.toString('hex'); + var hexAddress = addressBuffer.toString('hex'); + var checksumAddress = ethUtil.toChecksumAddress(hexAddress); + address = ethUtil.addHexPrefix(checksumAddress); } addAddressToList(indexText, address, pubkey, privkey); }, 50) diff --git a/src/js/index.js b/src/js/index.js index 41f8260..4c947a4 100644 --- a/src/js/index.js +++ b/src/js/index.js @@ -569,7 +569,9 @@ var privKeyBuffer = key.privKey.d.toBuffer(); privkey = privKeyBuffer.toString('hex'); var addressBuffer = ethUtil.privateToAddress(privKeyBuffer); - address = "0x" + addressBuffer.toString('hex'); + var hexAddress = addressBuffer.toString('hex'); + var checksumAddress = ethUtil.toChecksumAddress(hexAddress); + address = ethUtil.addHexPrefix(checksumAddress); } addAddressToList(indexText, address, pubkey, privkey); }, 50) diff --git a/tests.js b/tests.js index 677f3e2..89f4ce3 100644 --- a/tests.js +++ b/tests.js @@ -624,12 +624,12 @@ page.open(url, function(status) { // check the address is generated correctly // this value comes from // https://www.myetherwallet.com/#view-wallet-info - // I do not understand the capitalization scheme for this hex encoding + // Unusual capitalization is due to checksum var expected = "0xe5815d5902Ad612d49283DEdEc02100Bd44C2772"; var actual = page.evaluate(function() { return $(".address:first").text(); }); - if (actual != expected.toLowerCase()) { + if (actual != expected) { console.log("Ethereum address is incorrect"); console.log("Expected: " + expected); console.log("Actual: " + actual); -- 2.41.0