From 63e3ab037cf3272fe8f88cf7aedc0d4e1fe88e91 Mon Sep 17 00:00:00 2001 From: Simon Warta Date: Tue, 4 Feb 2020 15:09:33 +0100 Subject: [PATCH] Make messages in makeSignBytes a list this fixes a bug introduced in 2d14efa4cd95edc --- packages/bcp/src/cosmwasmcodec.ts | 2 +- packages/sdk/src/encoding.ts | 18 ++++++++++++++---- packages/sdk/src/restclient.spec.ts | 2 +- packages/sdk/types/encoding.d.ts | 2 +- 4 files changed, 17 insertions(+), 7 deletions(-) diff --git a/packages/bcp/src/cosmwasmcodec.ts b/packages/bcp/src/cosmwasmcodec.ts index 88285bff..58644f2b 100644 --- a/packages/bcp/src/cosmwasmcodec.ts +++ b/packages/bcp/src/cosmwasmcodec.ts @@ -38,7 +38,7 @@ export class CosmWasmCodec implements TxCodec { sequence: nonceToSequence(nonce), }; const signBytes = makeSignBytes( - built.value.msg[0], + built.value.msg, built.value.fee, Caip5.decode(unsigned.chainId), built.value.memo || "", diff --git a/packages/sdk/src/encoding.ts b/packages/sdk/src/encoding.ts index 584c3575..62c17d32 100644 --- a/packages/sdk/src/encoding.ts +++ b/packages/sdk/src/encoding.ts @@ -28,23 +28,33 @@ export function marshalTx(tx: StdTx): Uint8Array { return Encoding.toUtf8(json); } +interface SignJson { + readonly account_number: string; + readonly chain_id: string; + readonly fee: StdFee; + readonly memo: string; + readonly msgs: readonly Msg[]; + readonly sequence: string; +} + export function makeSignBytes( - msg: Msg, + msgs: readonly Msg[], fee: StdFee, chainId: string, memo: string, account: NonceInfo, ): Uint8Array { - const signMsg = sortJson({ + const signJson: SignJson = { // eslint-disable-next-line @typescript-eslint/camelcase account_number: account.account_number.toString(), // eslint-disable-next-line @typescript-eslint/camelcase chain_id: chainId, fee: fee, memo: memo, - msgs: msg, + msgs: msgs, sequence: account.sequence.toString(), - }); + }; + const signMsg = sortJson(signJson); return toUtf8(JSON.stringify(signMsg)); } diff --git a/packages/sdk/src/restclient.spec.ts b/packages/sdk/src/restclient.spec.ts index e4bee541..6bcff98a 100644 --- a/packages/sdk/src/restclient.spec.ts +++ b/packages/sdk/src/restclient.spec.ts @@ -152,7 +152,7 @@ describe("RestClient", () => { const client = new RestClient(httpUrl); const account = (await client.authAccounts(faucetAddress)).result.value; - const signBytes = makeSignBytes(theMsg, fee, defaultNetworkId, memo, account) as SignableBytes; + const signBytes = makeSignBytes([theMsg], fee, defaultNetworkId, memo, account) as SignableBytes; const rawSignature = await wallet.createTransactionSignature(signer, signBytes, PrehashType.Sha256); const signature = encodeSecp256k1Signature(signer.pubkey.data, rawSignature); diff --git a/packages/sdk/types/encoding.d.ts b/packages/sdk/types/encoding.d.ts index 463b7516..69a1f7a6 100644 --- a/packages/sdk/types/encoding.d.ts +++ b/packages/sdk/types/encoding.d.ts @@ -2,7 +2,7 @@ import { Msg, NonceInfo, StdFee, StdSignature, StdTx } from "./types"; export declare function sortJson(json: any): any; export declare function marshalTx(tx: StdTx): Uint8Array; export declare function makeSignBytes( - msg: Msg, + msgs: readonly Msg[], fee: StdFee, chainId: string, memo: string,