From 4f487814eacda7940356f1462c137de2b3a682aa Mon Sep 17 00:00:00 2001 From: willclarktech Date: Tue, 6 Apr 2021 16:52:50 +0200 Subject: [PATCH] stargate: Update for hd wallet change --- packages/stargate/src/multisignature.spec.ts | 4 ++- packages/stargate/src/testutils.spec.ts | 37 +++++++++++++++----- 2 files changed, 32 insertions(+), 9 deletions(-) diff --git a/packages/stargate/src/multisignature.spec.ts b/packages/stargate/src/multisignature.spec.ts index 63e0e945..319ee75c 100644 --- a/packages/stargate/src/multisignature.spec.ts +++ b/packages/stargate/src/multisignature.spec.ts @@ -214,7 +214,9 @@ describe("multisignature", () => { ] = await Promise.all( [0, 1, 2, 3, 4].map(async (i) => { // Signing environment - const wallet = await Secp256k1HdWallet.fromMnemonic(faucet.mnemonic, makeCosmoshubPath(i)); + const wallet = await Secp256k1HdWallet.fromMnemonic(faucet.mnemonic, { + hdPath: makeCosmoshubPath(i), + }); const pubkey = encodeSecp256k1Pubkey((await wallet.getAccounts())[0].pubkey); const address = (await wallet.getAccounts())[0].address; const signingClient = await SigningStargateClient.offline(wallet); diff --git a/packages/stargate/src/testutils.spec.ts b/packages/stargate/src/testutils.spec.ts index 9f198f2c..35f8cc82 100644 --- a/packages/stargate/src/testutils.spec.ts +++ b/packages/stargate/src/testutils.spec.ts @@ -1,8 +1,20 @@ /* eslint-disable @typescript-eslint/naming-convention */ -import { AminoSignResponse, makeCosmoshubPath, Secp256k1HdWallet, StdSignDoc } from "@cosmjs/amino"; +import { + AminoSignResponse, + makeCosmoshubPath, + Secp256k1HdWallet, + Secp256k1HdWalletOptions, + StdSignDoc, +} from "@cosmjs/amino"; import { Bip39, EnglishMnemonic, Random, Secp256k1, Slip10, Slip10Curve } from "@cosmjs/crypto"; import { Bech32 } from "@cosmjs/encoding"; -import { coins, DirectSecp256k1HdWallet, DirectSignResponse, makeAuthInfoBytes } from "@cosmjs/proto-signing"; +import { + coins, + DirectSecp256k1HdWallet, + DirectSecp256k1HdWalletOptions, + DirectSignResponse, + makeAuthInfoBytes, +} from "@cosmjs/proto-signing"; import { SignMode } from "./codec/cosmos/tx/signing/v1beta1/signing"; import { AuthInfo, SignDoc, TxBody } from "./codec/cosmos/tx/v1beta1/tx"; @@ -122,17 +134,26 @@ export const nonExistentAddress = "cosmos1p79apjaufyphcmsn4g07cynqf0wyjuezqu84hd export const nonNegativeIntegerMatcher = /^[0-9]+$/; export const tendermintIdMatcher = /^[0-9A-F]{64}$/; +const defaultHdWalletOptions = { + bip39Password: "", + hdPath: makeCosmoshubPath(0), + prefix: "cosmos", +}; + /** * A class for testing clients using an Amino signer which modifies the transaction it receives before signing */ export class ModifyingSecp256k1HdWallet extends Secp256k1HdWallet { public static async fromMnemonic( mnemonic: string, - hdPath = makeCosmoshubPath(0), - prefix = "cosmos", + options: Partial = {}, ): Promise { + const { bip39Password, hdPath, prefix } = { + ...defaultHdWalletOptions, + ...options, + }; const mnemonicChecked = new EnglishMnemonic(mnemonic); - const seed = await Bip39.mnemonicToSeed(mnemonicChecked); + const seed = await Bip39.mnemonicToSeed(mnemonicChecked, bip39Password); const { privkey } = Slip10.derivePath(Slip10Curve.Secp256k1, seed, hdPath); const uncompressed = (await Secp256k1.makeKeypair(privkey)).pubkey; return new ModifyingSecp256k1HdWallet( @@ -163,11 +184,11 @@ export class ModifyingSecp256k1HdWallet extends Secp256k1HdWallet { export class ModifyingDirectSecp256k1HdWallet extends DirectSecp256k1HdWallet { public static async fromMnemonic( mnemonic: string, - hdPath = makeCosmoshubPath(0), - prefix = "cosmos", + options: Partial = {}, ): Promise { + const { bip39Password, hdPath, prefix } = { ...defaultHdWalletOptions, ...options }; const mnemonicChecked = new EnglishMnemonic(mnemonic); - const seed = await Bip39.mnemonicToSeed(mnemonicChecked); + const seed = await Bip39.mnemonicToSeed(mnemonicChecked, bip39Password); const { privkey } = Slip10.derivePath(Slip10Curve.Secp256k1, seed, hdPath); const uncompressed = (await Secp256k1.makeKeypair(privkey)).pubkey; return new ModifyingDirectSecp256k1HdWallet(