diff --git a/src/js/index.js b/src/js/index.js index d843ee1..92772f6 100644 --- a/src/js/index.js +++ b/src/js/index.js @@ -1128,9 +1128,9 @@ } // Ethereum values are different if (networkIsEthereum()) { - var privKeyBuffer = keyPair.d.toBuffer(32); - privkey = privKeyBuffer.toString('hex'); - var addressBuffer = libs.ethUtil.privateToAddress(privKeyBuffer); + var pubkeyBuffer = keyPair.getPublicKeyBuffer(); + var ethPubkey = libs.ethUtil.importPublic(pubkeyBuffer); + var addressBuffer = libs.ethUtil.publicToAddress(ethPubkey); var hexAddress = addressBuffer.toString('hex'); var checksumAddress = libs.ethUtil.toChecksumAddress(hexAddress); address = libs.ethUtil.addHexPrefix(checksumAddress); diff --git a/tests/spec/tests.js b/tests/spec/tests.js index 7710b7a..0e85ecc 100644 --- a/tests/spec/tests.js +++ b/tests/spec/tests.js @@ -595,7 +595,6 @@ it('Allows selection of ethereum', function(done) { firstAddress: "0xe5815d5902Ad612d49283DEdEc02100Bd44C2772", }; testNetwork(done, params); - // TODO test private key and public key }); it('Allows selection of slimcoin', function(done) { var params = { @@ -4341,4 +4340,20 @@ it('Generates addresses when seed is set', function(done) { }); }); +// https://github.com/iancoleman/bip39/issues/169 +it('Generates ethereum addresses from a public key', function(done) { + var pubkey = "xpub68UK3hrMEp2jLPxPASgXSiqiUsQsUWZHCeuu6NqcJLt259LMeWzwDyufXLN1QmjLeLRY5he4QfArDDLbsXiw3xN3kFcYtyDy74BY73RPhhW"; + driver.findElement(By.css('.root-key')) + .sendKeys(pubkey); + driver.findElement(By.css('#bip32-tab a')) + .click() + selectNetwork('ETH - Ethereum'); + driver.sleep(generateDelay).then(function() { + getFirstAddress(function(address) { + expect(address).toBe("0x1Bd54748903438C7E386b4a3fCbe16237A316a98"); + done(); + }); + }); +}); + });