]> git.immae.eu Git - perso/Immae/Projets/Cryptomonnaies/BIP39.git/commitdiff
Merge pull request #390 from matthewleon/bugfix/eth-xpub-derivation
authoriancoleman <1281387+iancoleman@users.noreply.github.com>
Fri, 20 Dec 2019 04:58:26 +0000 (15:58 +1100)
committerGitHub <noreply@github.com>
Fri, 20 Dec 2019 04:58:26 +0000 (15:58 +1100)
Bugfix/eth xpub derivation

src/js/index.js
tests/spec/tests.js

index d843ee1cd828c387ad0bbbad1b51ea23621e8bf0..92772f6840013a41e1f08ef6ae34b6c5de4163c8 100644 (file)
                 }
                 // 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);
index 7710b7a6ac3dcf71ff330909e66e68eb1ee689f3..0e85eccf8ac96736e9fb7bcc558dcfaa56d3cc6e 100644 (file)
@@ -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();
+        });
+    });
+});
+
 });