refactor!: Add context arg to sign mode handler GetSignBytes (#13701)
* refactor!: Add context arg to sign mode handler `GetSignBytes` * fix build * fix tests * Fix goling * fix lint * Fix lint * Fix test * Update CHANGELOG.md Co-authored-by: Aleksandr Bezobchuk <alexanderbez@users.noreply.github.com> * Fix tests * Fix rosetta deps * fix * go mod tidy all * go mod tidy Co-authored-by: Aleksandr Bezobchuk <alexanderbez@users.noreply.github.com> Co-authored-by: Marko <marbar3778@yahoo.com> Co-authored-by: Julien Robert <julien@rbrt.fr>
This commit is contained in:
co-authored by
Aleksandr Bezobchuk
Marko
Julien Robert
parent
5a1fa2ee02
commit
fffc9d07d5
@@ -232,7 +232,7 @@ func genTxWithFeeGranter(gen client.TxConfig, msgs []sdk.Msg, feeAmt sdk.Coins,
|
||||
AccountNumber: accNums[i],
|
||||
Sequence: accSeqs[i],
|
||||
}
|
||||
signBytes, err := gen.SignModeHandler().GetSignBytes(signMode, signerData, tx.GetTx())
|
||||
signBytes, err := gen.SignModeHandler().GetSignBytes(nil, signMode, signerData, tx.GetTx())
|
||||
if err != nil {
|
||||
panic(err)
|
||||
}
|
||||
|
||||
@@ -289,7 +289,7 @@ func (svd SigVerificationDecorator) AnteHandle(ctx sdk.Context, tx sdk.Tx, simul
|
||||
|
||||
// no need to verify signatures on recheck tx
|
||||
if !simulate && !ctx.IsReCheckTx() {
|
||||
err := authsigning.VerifySignature(pubKey, signerData, sig.Data, svd.signModeHandler, tx)
|
||||
err := authsigning.VerifySignature(sdk.WrapSDKContext(ctx), pubKey, signerData, sig.Data, svd.signModeHandler, tx)
|
||||
if err != nil {
|
||||
var errMsg string
|
||||
if OnlyLegacyAminoSigners(sig.Data) {
|
||||
|
||||
@@ -205,7 +205,7 @@ func (suite *AnteTestSuite) CreateTestTx(privs []cryptotypes.PrivKey, accNums []
|
||||
Sequence: accSeqs[i],
|
||||
}
|
||||
sigV2, err := tx.SignWithPrivKey(
|
||||
suite.clientCtx.TxConfig.SignModeHandler().DefaultMode(), signerData,
|
||||
nil, suite.clientCtx.TxConfig.SignModeHandler().DefaultMode(), signerData,
|
||||
suite.txBuilder, priv, suite.clientCtx.TxConfig, accSeqs[i])
|
||||
if err != nil {
|
||||
return nil, err
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
package cli
|
||||
|
||||
import (
|
||||
"context"
|
||||
"fmt"
|
||||
"os"
|
||||
"strings"
|
||||
@@ -136,7 +137,8 @@ func makeMultiSignCmd() func(cmd *cobra.Command, args []string) (err error) {
|
||||
PubKey: sig.PubKey,
|
||||
}
|
||||
|
||||
err = signing.VerifySignature(sig.PubKey, signingData, sig.Data, txCfg.SignModeHandler(), txBuilder.GetTx())
|
||||
// When Textual is wired up, the context argument should be retrieved from the client context.
|
||||
err = signing.VerifySignature(context.TODO(), sig.PubKey, signingData, sig.Data, txCfg.SignModeHandler(), txBuilder.GetTx())
|
||||
if err != nil {
|
||||
addr, _ := sdk.AccAddressFromHexUnsafe(sig.PubKey.Address().String())
|
||||
return fmt.Errorf("couldn't verify signature for address %s", addr)
|
||||
@@ -323,7 +325,8 @@ func makeBatchMultisignCmd() func(cmd *cobra.Command, args []string) error {
|
||||
}
|
||||
|
||||
for _, sig := range signatureBatch {
|
||||
err = signing.VerifySignature(sig[i].PubKey, signingData, sig[i].Data, txCfg.SignModeHandler(), txBldr.GetTx())
|
||||
// When Textual is wired up, the context argument should be retrieved from the client context.
|
||||
err = signing.VerifySignature(context.TODO(), sig[i].PubKey, signingData, sig[i].Data, txCfg.SignModeHandler(), txBldr.GetTx())
|
||||
if err != nil {
|
||||
return fmt.Errorf("couldn't verify signature: %w %v", err, sig)
|
||||
}
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
package cli
|
||||
|
||||
import (
|
||||
"context"
|
||||
"fmt"
|
||||
|
||||
"github.com/spf13/cobra"
|
||||
@@ -111,7 +112,8 @@ func printAndValidateSigs(
|
||||
Sequence: accSeq,
|
||||
PubKey: pubKey,
|
||||
}
|
||||
err = authsigning.VerifySignature(pubKey, signingData, sig.Data, signModeHandler, sigTx)
|
||||
// When Textual is wired up, the context argument should be retrieved from the client context.
|
||||
err = authsigning.VerifySignature(context.TODO(), pubKey, signingData, sig.Data, signModeHandler, sigTx)
|
||||
if err != nil {
|
||||
return false
|
||||
}
|
||||
|
||||
+5
-2
@@ -3,6 +3,7 @@ package client
|
||||
import (
|
||||
"bufio"
|
||||
"bytes"
|
||||
"context"
|
||||
"fmt"
|
||||
"io"
|
||||
"os"
|
||||
@@ -60,7 +61,8 @@ func SignTx(txFactory tx.Factory, clientCtx client.Context, name string, txBuild
|
||||
}
|
||||
}
|
||||
|
||||
return tx.Sign(txFactory, name, txBuilder, overwriteSig)
|
||||
// When Textual is wired up, the context argument should be retrieved from the client context.
|
||||
return tx.Sign(context.TODO(), txFactory, name, txBuilder, overwriteSig)
|
||||
}
|
||||
|
||||
// SignTxWithSignerAddress attaches a signature to a transaction.
|
||||
@@ -88,7 +90,8 @@ func SignTxWithSignerAddress(txFactory tx.Factory, clientCtx client.Context, add
|
||||
}
|
||||
}
|
||||
|
||||
return tx.Sign(txFactory, name, txBuilder, overwrite)
|
||||
// When Textual is wired up, the context argument should be retrieved from the client context.
|
||||
return tx.Sign(context.TODO(), txFactory, name, txBuilder, overwrite)
|
||||
}
|
||||
|
||||
// Read and decode a StdTx from the given filename. Can pass "-" to read from stdin.
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
package legacytx
|
||||
|
||||
import (
|
||||
"context"
|
||||
"fmt"
|
||||
|
||||
"github.com/cosmos/cosmos-sdk/codec"
|
||||
@@ -32,7 +33,7 @@ func (stdTxSignModeHandler) Modes() []signingtypes.SignMode {
|
||||
}
|
||||
|
||||
// DefaultMode implements SignModeHandler.GetSignBytes
|
||||
func (stdTxSignModeHandler) GetSignBytes(mode signingtypes.SignMode, data signing.SignerData, tx sdk.Tx) ([]byte, error) {
|
||||
func (stdTxSignModeHandler) GetSignBytes(_ context.Context, mode signingtypes.SignMode, data signing.SignerData, tx sdk.Tx) ([]byte, error) {
|
||||
if mode != signingtypes.SignMode_SIGN_MODE_LEGACY_AMINO_JSON {
|
||||
return nil, fmt.Errorf("expected %s, got %s", signingtypes.SignMode_SIGN_MODE_LEGACY_AMINO_JSON, mode)
|
||||
}
|
||||
|
||||
@@ -52,7 +52,7 @@ func TestLegacyAminoJSONHandler_GetSignBytes(t *testing.T) {
|
||||
Sequence: seqNum,
|
||||
PubKey: priv1.PubKey(),
|
||||
}
|
||||
signBz, err := handler.GetSignBytes(signingtypes.SignMode_SIGN_MODE_LEGACY_AMINO_JSON, signingData, tx)
|
||||
signBz, err := handler.GetSignBytes(nil, signingtypes.SignMode_SIGN_MODE_LEGACY_AMINO_JSON, signingData, tx)
|
||||
require.NoError(t, err)
|
||||
|
||||
expectedSignBz := StdSignBytes(chainId, accNum, seqNum, timeoutHeight, fee, msgs, memo, nil)
|
||||
@@ -60,7 +60,7 @@ func TestLegacyAminoJSONHandler_GetSignBytes(t *testing.T) {
|
||||
require.Equal(t, expectedSignBz, signBz)
|
||||
|
||||
// expect error with wrong sign mode
|
||||
_, err = handler.GetSignBytes(signingtypes.SignMode_SIGN_MODE_DIRECT, signingData, tx)
|
||||
_, err = handler.GetSignBytes(nil, signingtypes.SignMode_SIGN_MODE_DIRECT, signingData, tx)
|
||||
require.Error(t, err)
|
||||
}
|
||||
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
package signing
|
||||
|
||||
import (
|
||||
"context"
|
||||
"fmt"
|
||||
|
||||
"github.com/cosmos/cosmos-sdk/types/tx/signing"
|
||||
@@ -51,10 +52,10 @@ func (h SignModeHandlerMap) Modes() []signing.SignMode {
|
||||
}
|
||||
|
||||
// DefaultMode implements SignModeHandler.GetSignBytes
|
||||
func (h SignModeHandlerMap) GetSignBytes(mode signing.SignMode, data SignerData, tx sdk.Tx) ([]byte, error) {
|
||||
func (h SignModeHandlerMap) GetSignBytes(ctx context.Context, mode signing.SignMode, data SignerData, tx sdk.Tx) ([]byte, error) {
|
||||
handler, found := h.signModeHandlers[mode]
|
||||
if !found {
|
||||
return nil, fmt.Errorf("can't verify sign mode %s", mode.String())
|
||||
}
|
||||
return handler.GetSignBytes(mode, data, tx)
|
||||
return handler.GetSignBytes(ctx, mode, data, tx)
|
||||
}
|
||||
|
||||
@@ -66,16 +66,16 @@ func TestHandlerMap_GetSignBytes(t *testing.T) {
|
||||
Sequence: seqNum,
|
||||
PubKey: priv1.PubKey(),
|
||||
}
|
||||
signBz, err := handler.GetSignBytes(signingtypes.SignMode_SIGN_MODE_LEGACY_AMINO_JSON, signingData, tx)
|
||||
signBz, err := handler.GetSignBytes(nil, signingtypes.SignMode_SIGN_MODE_LEGACY_AMINO_JSON, signingData, tx)
|
||||
require.NoError(t, err)
|
||||
|
||||
expectedSignBz, err := aminoJSONHandler.GetSignBytes(signingtypes.SignMode_SIGN_MODE_LEGACY_AMINO_JSON, signingData, tx)
|
||||
expectedSignBz, err := aminoJSONHandler.GetSignBytes(nil, signingtypes.SignMode_SIGN_MODE_LEGACY_AMINO_JSON, signingData, tx)
|
||||
require.NoError(t, err)
|
||||
|
||||
require.Equal(t, expectedSignBz, signBz)
|
||||
|
||||
// expect error with wrong sign mode
|
||||
_, err = aminoJSONHandler.GetSignBytes(signingtypes.SignMode_SIGN_MODE_DIRECT, signingData, tx)
|
||||
_, err = aminoJSONHandler.GetSignBytes(nil, signingtypes.SignMode_SIGN_MODE_DIRECT, signingData, tx)
|
||||
require.Error(t, err)
|
||||
}
|
||||
|
||||
|
||||
@@ -1,6 +1,8 @@
|
||||
package signing
|
||||
|
||||
import (
|
||||
"context"
|
||||
|
||||
cryptotypes "github.com/cosmos/cosmos-sdk/crypto/types"
|
||||
sdk "github.com/cosmos/cosmos-sdk/types"
|
||||
"github.com/cosmos/cosmos-sdk/types/tx/signing"
|
||||
@@ -18,7 +20,7 @@ type SignModeHandler interface {
|
||||
|
||||
// GetSignBytes returns the sign bytes for the provided SignMode, SignerData and Tx,
|
||||
// or an error
|
||||
GetSignBytes(mode signing.SignMode, data SignerData, tx sdk.Tx) ([]byte, error)
|
||||
GetSignBytes(ctx context.Context, mode signing.SignMode, data SignerData, tx sdk.Tx) ([]byte, error)
|
||||
}
|
||||
|
||||
// SignerData is the specific information needed to sign a transaction that generally
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
package signing
|
||||
|
||||
import (
|
||||
"context"
|
||||
"fmt"
|
||||
|
||||
cryptotypes "github.com/cosmos/cosmos-sdk/crypto/types"
|
||||
@@ -11,10 +12,10 @@ import (
|
||||
|
||||
// VerifySignature verifies a transaction signature contained in SignatureData abstracting over different signing modes
|
||||
// and single vs multi-signatures.
|
||||
func VerifySignature(pubKey cryptotypes.PubKey, signerData SignerData, sigData signing.SignatureData, handler SignModeHandler, tx sdk.Tx) error {
|
||||
func VerifySignature(ctx context.Context, pubKey cryptotypes.PubKey, signerData SignerData, sigData signing.SignatureData, handler SignModeHandler, tx sdk.Tx) error {
|
||||
switch data := sigData.(type) {
|
||||
case *signing.SingleSignatureData:
|
||||
signBytes, err := handler.GetSignBytes(data.SignMode, signerData, tx)
|
||||
signBytes, err := handler.GetSignBytes(ctx, data.SignMode, signerData, tx)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
@@ -29,7 +30,7 @@ func VerifySignature(pubKey cryptotypes.PubKey, signerData SignerData, sigData s
|
||||
return fmt.Errorf("expected %T, got %T", (multisig.PubKey)(nil), pubKey)
|
||||
}
|
||||
err := multiPK.VerifyMultisignature(func(mode signing.SignMode) ([]byte, error) {
|
||||
return handler.GetSignBytes(mode, signerData, tx)
|
||||
return handler.GetSignBytes(ctx, mode, signerData, tx)
|
||||
}, data)
|
||||
if err != nil {
|
||||
return err
|
||||
|
||||
@@ -82,7 +82,7 @@ func TestVerifySignature(t *testing.T) {
|
||||
handler := MakeTestHandlerMap()
|
||||
stdTx := legacytx.NewStdTx(msgs, fee, []legacytx.StdSignature{stdSig}, memo)
|
||||
stdTx.TimeoutHeight = 10
|
||||
err = signing.VerifySignature(pubKey, signerData, sigV2.Data, handler, stdTx)
|
||||
err = signing.VerifySignature(nil, pubKey, signerData, sigV2.Data, handler, stdTx)
|
||||
require.NoError(t, err)
|
||||
|
||||
pkSet := []cryptotypes.PubKey{pubKey, pubKey1}
|
||||
@@ -111,6 +111,6 @@ func TestVerifySignature(t *testing.T) {
|
||||
stdTx = legacytx.NewStdTx(msgs, fee, []legacytx.StdSignature{stdSig1, stdSig2}, memo)
|
||||
stdTx.TimeoutHeight = 10
|
||||
|
||||
err = signing.VerifySignature(multisigKey, signerData, multisignature, handler, stdTx)
|
||||
err = signing.VerifySignature(nil, multisigKey, signerData, multisignature, handler, stdTx)
|
||||
require.NoError(t, err)
|
||||
}
|
||||
|
||||
@@ -141,7 +141,7 @@ func TestBuilderWithAux(t *testing.T) {
|
||||
Sequence: 15,
|
||||
})
|
||||
signBz, err = txConfig.SignModeHandler().GetSignBytes(
|
||||
signing.SignMode_SIGN_MODE_DIRECT,
|
||||
nil, signing.SignMode_SIGN_MODE_DIRECT,
|
||||
authsigning.SignerData{
|
||||
Address: feepayerAddr.String(),
|
||||
ChainID: chainID,
|
||||
|
||||
+2
-1
@@ -1,6 +1,7 @@
|
||||
package tx
|
||||
|
||||
import (
|
||||
"context"
|
||||
"fmt"
|
||||
|
||||
signingtypes "github.com/cosmos/cosmos-sdk/types/tx/signing"
|
||||
@@ -26,7 +27,7 @@ func (signModeDirectHandler) Modes() []signingtypes.SignMode {
|
||||
}
|
||||
|
||||
// GetSignBytes implements SignModeHandler.GetSignBytes
|
||||
func (signModeDirectHandler) GetSignBytes(mode signingtypes.SignMode, data signing.SignerData, tx sdk.Tx) ([]byte, error) {
|
||||
func (signModeDirectHandler) GetSignBytes(_ context.Context, mode signingtypes.SignMode, data signing.SignerData, tx sdk.Tx) ([]byte, error) {
|
||||
if mode != signingtypes.SignMode_SIGN_MODE_DIRECT {
|
||||
return nil, fmt.Errorf("expected %s, got %s", signingtypes.SignMode_SIGN_MODE_DIRECT, mode)
|
||||
}
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
package tx
|
||||
|
||||
import (
|
||||
"context"
|
||||
"fmt"
|
||||
|
||||
codectypes "github.com/cosmos/cosmos-sdk/codec/types"
|
||||
@@ -28,7 +29,7 @@ func (signModeDirectAuxHandler) Modes() []signingtypes.SignMode {
|
||||
|
||||
// GetSignBytes implements SignModeHandler.GetSignBytes
|
||||
func (signModeDirectAuxHandler) GetSignBytes(
|
||||
mode signingtypes.SignMode, data signing.SignerData, tx sdk.Tx,
|
||||
_ context.Context, mode signingtypes.SignMode, data signing.SignerData, tx sdk.Tx,
|
||||
) ([]byte, error) {
|
||||
if mode != signingtypes.SignMode_SIGN_MODE_DIRECT_AUX {
|
||||
return nil, fmt.Errorf("expected %s, got %s", signingtypes.SignMode_SIGN_MODE_DIRECT_AUX, mode)
|
||||
|
||||
@@ -80,11 +80,11 @@ func TestDirectAuxHandler(t *testing.T) {
|
||||
modeHandler := signModeDirectAuxHandler{}
|
||||
|
||||
t.Log("verify fee payer cannot use SIGN_MODE_DIRECT_AUX")
|
||||
_, err = modeHandler.GetSignBytes(signingtypes.SignMode_SIGN_MODE_DIRECT_AUX, feePayerSigningData, txBuilder.GetTx())
|
||||
_, err = modeHandler.GetSignBytes(nil, signingtypes.SignMode_SIGN_MODE_DIRECT_AUX, feePayerSigningData, txBuilder.GetTx())
|
||||
require.EqualError(t, err, fmt.Sprintf("fee payer %s cannot sign with %s: unauthorized", feePayerAddr.String(), signingtypes.SignMode_SIGN_MODE_DIRECT_AUX))
|
||||
|
||||
t.Log("verify GetSignBytes with generating sign bytes by marshaling signDocDirectAux")
|
||||
signBytes, err := modeHandler.GetSignBytes(signingtypes.SignMode_SIGN_MODE_DIRECT_AUX, signingData, txBuilder.GetTx())
|
||||
signBytes, err := modeHandler.GetSignBytes(nil, signingtypes.SignMode_SIGN_MODE_DIRECT_AUX, signingData, txBuilder.GetTx())
|
||||
require.NoError(t, err)
|
||||
require.NotNil(t, signBytes)
|
||||
|
||||
@@ -121,7 +121,7 @@ func TestDirectAuxHandler(t *testing.T) {
|
||||
require.NoError(t, err)
|
||||
err = txBuilder.SetSignatures(sig)
|
||||
require.NoError(t, err)
|
||||
signBytes, err = modeHandler.GetSignBytes(signingtypes.SignMode_SIGN_MODE_DIRECT_AUX, signingData, txBuilder.GetTx())
|
||||
signBytes, err = modeHandler.GetSignBytes(nil, signingtypes.SignMode_SIGN_MODE_DIRECT_AUX, signingData, txBuilder.GetTx())
|
||||
require.NoError(t, err)
|
||||
require.Equal(t, expectedSignBytes, signBytes)
|
||||
|
||||
@@ -148,7 +148,7 @@ func TestDirectAuxModeHandler_nonDIRECT_MODE(t *testing.T) {
|
||||
t.Run(invalidMode.String(), func(t *testing.T) {
|
||||
var dh signModeDirectAuxHandler
|
||||
var signingData signing.SignerData
|
||||
_, err := dh.GetSignBytes(invalidMode, signingData, nil)
|
||||
_, err := dh.GetSignBytes(nil, invalidMode, signingData, nil)
|
||||
require.Error(t, err)
|
||||
wantErr := fmt.Errorf("expected %s, got %s", signingtypes.SignMode_SIGN_MODE_DIRECT_AUX, invalidMode)
|
||||
require.Equal(t, err, wantErr)
|
||||
@@ -160,7 +160,7 @@ func TestDirectAuxModeHandler_nonProtoTx(t *testing.T) {
|
||||
var dh signModeDirectAuxHandler
|
||||
var signingData signing.SignerData
|
||||
tx := new(nonProtoTx)
|
||||
_, err := dh.GetSignBytes(signingtypes.SignMode_SIGN_MODE_DIRECT_AUX, signingData, tx)
|
||||
_, err := dh.GetSignBytes(nil, signingtypes.SignMode_SIGN_MODE_DIRECT_AUX, signingData, tx)
|
||||
require.Error(t, err)
|
||||
wantErr := fmt.Errorf("can only handle a protobuf Tx, got %T", tx)
|
||||
require.Equal(t, err, wantErr)
|
||||
|
||||
@@ -75,7 +75,7 @@ func TestDirectModeHandler(t *testing.T) {
|
||||
PubKey: pubkey,
|
||||
}
|
||||
|
||||
signBytes, err := modeHandler.GetSignBytes(signingtypes.SignMode_SIGN_MODE_DIRECT, signingData, txBuilder.GetTx())
|
||||
signBytes, err := modeHandler.GetSignBytes(nil, signingtypes.SignMode_SIGN_MODE_DIRECT, signingData, txBuilder.GetTx())
|
||||
|
||||
require.NoError(t, err)
|
||||
require.NotNil(t, signBytes)
|
||||
@@ -120,7 +120,7 @@ func TestDirectModeHandler(t *testing.T) {
|
||||
require.NoError(t, err)
|
||||
err = txBuilder.SetSignatures(sig)
|
||||
require.NoError(t, err)
|
||||
signBytes, err = modeHandler.GetSignBytes(signingtypes.SignMode_SIGN_MODE_DIRECT, signingData, txBuilder.GetTx())
|
||||
signBytes, err = modeHandler.GetSignBytes(nil, signingtypes.SignMode_SIGN_MODE_DIRECT, signingData, txBuilder.GetTx())
|
||||
require.NoError(t, err)
|
||||
require.Equal(t, expectedSignBytes, signBytes)
|
||||
|
||||
@@ -141,7 +141,7 @@ func TestDirectModeHandler_nonDIRECT_MODE(t *testing.T) {
|
||||
t.Run(invalidMode.String(), func(t *testing.T) {
|
||||
var dh signModeDirectHandler
|
||||
var signingData signing.SignerData
|
||||
_, err := dh.GetSignBytes(invalidMode, signingData, nil)
|
||||
_, err := dh.GetSignBytes(nil, invalidMode, signingData, nil)
|
||||
require.Error(t, err)
|
||||
wantErr := fmt.Errorf("expected %s, got %s", signingtypes.SignMode_SIGN_MODE_DIRECT, invalidMode)
|
||||
require.Equal(t, err, wantErr)
|
||||
@@ -160,7 +160,7 @@ func TestDirectModeHandler_nonProtoTx(t *testing.T) {
|
||||
var dh signModeDirectHandler
|
||||
var signingData signing.SignerData
|
||||
tx := new(nonProtoTx)
|
||||
_, err := dh.GetSignBytes(signingtypes.SignMode_SIGN_MODE_DIRECT, signingData, tx)
|
||||
_, err := dh.GetSignBytes(nil, signingtypes.SignMode_SIGN_MODE_DIRECT, signingData, tx)
|
||||
require.Error(t, err)
|
||||
wantErr := fmt.Errorf("can only handle a protobuf Tx, got %T", tx)
|
||||
require.Equal(t, err, wantErr)
|
||||
|
||||
@@ -128,7 +128,7 @@ func TestUnknownFields(t *testing.T) {
|
||||
decoder := DefaultTxDecoder(codec.NewProtoCodec(codectypes.NewInterfaceRegistry()))
|
||||
theTx, err := decoder(txBz)
|
||||
require.NoError(t, err)
|
||||
_, err = handler.GetSignBytes(signingtypes.SignMode_SIGN_MODE_LEGACY_AMINO_JSON, signing.SignerData{}, theTx)
|
||||
_, err = handler.GetSignBytes(nil, signingtypes.SignMode_SIGN_MODE_LEGACY_AMINO_JSON, signing.SignerData{}, theTx)
|
||||
require.EqualError(t, err, tt.shouldAminoErr)
|
||||
}
|
||||
})
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
package tx
|
||||
|
||||
import (
|
||||
"context"
|
||||
"fmt"
|
||||
|
||||
sdk "github.com/cosmos/cosmos-sdk/types"
|
||||
@@ -26,7 +27,7 @@ func (s signModeLegacyAminoJSONHandler) Modes() []signingtypes.SignMode {
|
||||
return []signingtypes.SignMode{signingtypes.SignMode_SIGN_MODE_LEGACY_AMINO_JSON}
|
||||
}
|
||||
|
||||
func (s signModeLegacyAminoJSONHandler) GetSignBytes(mode signingtypes.SignMode, data signing.SignerData, tx sdk.Tx) ([]byte, error) {
|
||||
func (s signModeLegacyAminoJSONHandler) GetSignBytes(_ context.Context, mode signingtypes.SignMode, data signing.SignerData, tx sdk.Tx) ([]byte, error) {
|
||||
if mode != signingtypes.SignMode_SIGN_MODE_LEGACY_AMINO_JSON {
|
||||
return nil, fmt.Errorf("expected %s, got %s", signingtypes.SignMode_SIGN_MODE_LEGACY_AMINO_JSON, mode)
|
||||
}
|
||||
|
||||
@@ -97,7 +97,7 @@ func TestLegacyAminoJSONHandler_GetSignBytes(t *testing.T) {
|
||||
AccountNumber: accNum,
|
||||
Sequence: seqNum,
|
||||
}
|
||||
signBz, err := handler.GetSignBytes(signingtypes.SignMode_SIGN_MODE_LEGACY_AMINO_JSON, signingData, tx)
|
||||
signBz, err := handler.GetSignBytes(nil, signingtypes.SignMode_SIGN_MODE_LEGACY_AMINO_JSON, signingData, tx)
|
||||
require.NoError(t, err)
|
||||
|
||||
require.Equal(t, tc.expectedSignBz, signBz)
|
||||
@@ -116,7 +116,7 @@ func TestLegacyAminoJSONHandler_GetSignBytes(t *testing.T) {
|
||||
}
|
||||
|
||||
// expect error with wrong sign mode
|
||||
_, err := handler.GetSignBytes(signingtypes.SignMode_SIGN_MODE_DIRECT, signingData, tx)
|
||||
_, err := handler.GetSignBytes(nil, signingtypes.SignMode_SIGN_MODE_DIRECT, signingData, tx)
|
||||
require.Error(t, err)
|
||||
|
||||
// expect error with extension options
|
||||
@@ -126,7 +126,7 @@ func TestLegacyAminoJSONHandler_GetSignBytes(t *testing.T) {
|
||||
require.NoError(t, err)
|
||||
bldr.tx.Body.ExtensionOptions = []*cdctypes.Any{any}
|
||||
tx = bldr.GetTx()
|
||||
_, err = handler.GetSignBytes(signingtypes.SignMode_SIGN_MODE_LEGACY_AMINO_JSON, signingData, tx)
|
||||
_, err = handler.GetSignBytes(nil, signingtypes.SignMode_SIGN_MODE_LEGACY_AMINO_JSON, signingData, tx)
|
||||
require.Error(t, err)
|
||||
|
||||
// expect error with non-critical extension options
|
||||
@@ -134,7 +134,7 @@ func TestLegacyAminoJSONHandler_GetSignBytes(t *testing.T) {
|
||||
buildTx(t, bldr)
|
||||
bldr.tx.Body.NonCriticalExtensionOptions = []*cdctypes.Any{any}
|
||||
tx = bldr.GetTx()
|
||||
_, err = handler.GetSignBytes(signingtypes.SignMode_SIGN_MODE_LEGACY_AMINO_JSON, signingData, tx)
|
||||
_, err = handler.GetSignBytes(nil, signingtypes.SignMode_SIGN_MODE_LEGACY_AMINO_JSON, signingData, tx)
|
||||
require.Error(t, err)
|
||||
}
|
||||
|
||||
|
||||
@@ -2,6 +2,7 @@ package tx
|
||||
|
||||
import (
|
||||
"bytes"
|
||||
"context"
|
||||
|
||||
"github.com/stretchr/testify/suite"
|
||||
|
||||
@@ -134,7 +135,7 @@ func (s *TxConfigTestSuite) TestTxBuilderSetSignatures() {
|
||||
Sequence: seq1,
|
||||
PubKey: pubkey,
|
||||
}
|
||||
signBytes, err := signModeHandler.GetSignBytes(signModeHandler.DefaultMode(), signerData, sigTx)
|
||||
signBytes, err := signModeHandler.GetSignBytes(context.TODO(), signModeHandler.DefaultMode(), signerData, sigTx)
|
||||
s.Require().NoError(err)
|
||||
sigBz, err := privKey.Sign(signBytes)
|
||||
s.Require().NoError(err)
|
||||
@@ -146,7 +147,7 @@ func (s *TxConfigTestSuite) TestTxBuilderSetSignatures() {
|
||||
Sequence: mseq,
|
||||
PubKey: multisigPk,
|
||||
}
|
||||
mSignBytes, err := signModeHandler.GetSignBytes(signModeHandler.DefaultMode(), signerData, sigTx)
|
||||
mSignBytes, err := signModeHandler.GetSignBytes(context.TODO(), signModeHandler.DefaultMode(), signerData, sigTx)
|
||||
s.Require().NoError(err)
|
||||
mSigBz1, err := privKey.Sign(mSignBytes)
|
||||
s.Require().NoError(err)
|
||||
|
||||
Reference in New Issue
Block a user