From e5bee7e5a34ba9cfddae8e3c43de10a8060f911a Mon Sep 17 00:00:00 2001 From: Richard Moore Date: Thu, 17 Jan 2019 16:32:51 -0500 Subject: [PATCH] Fixed path for x-ethers metadata and wallet (#). --- src.ts/utils/hdnode.ts | 2 +- src.ts/utils/secret-storage.ts | 1 + src.ts/wallet.ts | 2 +- tests/test-wallet.js | 6 +++++- 4 files changed, 8 insertions(+), 3 deletions(-) diff --git a/src.ts/utils/hdnode.ts b/src.ts/utils/hdnode.ts index 8e6ea197..6984c306 100644 --- a/src.ts/utils/hdnode.ts +++ b/src.ts/utils/hdnode.ts @@ -109,7 +109,7 @@ export class HDNode { // Base path var mnemonic = this.mnemonic; var path = this.path; - if (path) { path += '/' + index; } + if (path) { path += '/' + (index & ~HardenedBit); } if (index & HardenedBit) { // Data = 0x00 || ser_256(k_par) diff --git a/src.ts/utils/secret-storage.ts b/src.ts/utils/secret-storage.ts index a26ce80b..afd38944 100644 --- a/src.ts/utils/secret-storage.ts +++ b/src.ts/utils/secret-storage.ts @@ -438,6 +438,7 @@ export function encrypt(privateKey: Arrayish | SigningKey, password: Arrayish | gethFilename: ('UTC--' + timestamp + '--' + data.address), mnemonicCounter: hexlify(mnemonicIv).substring(2), mnemonicCiphertext: hexlify(mnemonicCiphertext).substring(2), + path: path, version: "0.1" }; } diff --git a/src.ts/wallet.ts b/src.ts/wallet.ts index 977810ab..12a8af5f 100644 --- a/src.ts/wallet.ts +++ b/src.ts/wallet.ts @@ -47,7 +47,7 @@ export class Wallet extends AbstractSigner { get address(): string { return this.signingKey.address; } get mnemonic(): string { return this.signingKey.mnemonic; } - get path(): string { return this.signingKey.mnemonic; } + get path(): string { return this.signingKey.path; } get privateKey(): string { return this.signingKey.privateKey; } diff --git a/tests/test-wallet.js b/tests/test-wallet.js index a72f206a..63e8287a 100644 --- a/tests/test-wallet.js +++ b/tests/test-wallet.js @@ -31,7 +31,7 @@ describe('Test JSON Wallets', function() { // A few extra test cases to test encrypting/decrypting ['one', 'two', 'three'].forEach(function(i) { var password = 'foobar' + i; - var wallet = new Wallet(utils.randomHexString('test-' + i, 32)); + var wallet = Wallet.createRandom({ path: "m/56'/82", extraEntropy: utils.randomHexString('test-' + i, 32) }); it('encrypts and decrypts a random wallet - ' + i, function() { this.timeout(1200000); @@ -39,6 +39,10 @@ describe('Test JSON Wallets', function() { return Wallet.fromEncryptedJson(json, password).then(function(decryptedWallet) { assert.equal(decryptedWallet.address, wallet.address, 'decrypted wallet - ' + wallet.privateKey); + assert.equal(decryptedWallet.mnemonic, wallet.mnemonic, + "decrypted wallet menonic - " + wallet.privateKey); + assert.equal(decryptedWallet.path, wallet.path, + "decrypted wallet path - " + wallet.privateKey); return decryptedWallet.encrypt(password).then(function(encryptedWallet) { var parsedWallet = JSON.parse(encryptedWallet); assert.equal(decryptedWallet.address.toLowerCase().substring(2), parsedWallet.address,