github.com/fibonacci-chain/fbc@v0.0.0-20231124064014-c7636198c1e9/libs/cosmos-sdk/x/auth/ibc-tx/direct.go (about) 1 package ibc_tx 2 3 import ( 4 "fmt" 5 6 ibctx "github.com/fibonacci-chain/fbc/libs/cosmos-sdk/types/ibc-adapter" 7 signing2 "github.com/fibonacci-chain/fbc/libs/cosmos-sdk/types/tx/signing" 8 signing "github.com/fibonacci-chain/fbc/libs/cosmos-sdk/x/auth/ibcsigning" 9 "github.com/fibonacci-chain/fbc/libs/cosmos-sdk/x/auth/types" 10 ) 11 12 // signModeDirectHandler defines the SIGN_MODE_DIRECT SignModeHandler 13 type signModeDirectHandler struct{} 14 15 var _ signing.SignModeHandler = signModeDirectHandler{} 16 17 // DefaultMode implements SignModeHandler.DefaultMode 18 func (signModeDirectHandler) DefaultMode() signing2.SignMode { 19 return signing2.SignMode_SIGN_MODE_DIRECT 20 } 21 22 // Modes implements SignModeHandler.Modes 23 func (signModeDirectHandler) Modes() []signing2.SignMode { 24 return []signing2.SignMode{signing2.SignMode_SIGN_MODE_DIRECT} 25 } 26 27 // GetSignBytes implements SignModeHandler.GetSignBytes 28 func (signModeDirectHandler) GetSignBytes(mode signing2.SignMode, data signing.SignerData, tx ibctx.Tx) ([]byte, error) { 29 if mode != signing2.SignMode_SIGN_MODE_DIRECT { 30 return nil, fmt.Errorf("expected %s, got %s", signing2.SignMode_SIGN_MODE_DIRECT, mode) 31 } 32 33 protoTx, ok := tx.(*wrapper) 34 if !ok { 35 return nil, fmt.Errorf("can only handle a protobuf Tx, got %T", tx) 36 } 37 38 bodyBz := protoTx.getBodyBytes() 39 authInfoBz := protoTx.getAuthInfoBytes() 40 41 return DirectSignBytes(bodyBz, authInfoBz, data.ChainID, data.AccountNumber) 42 } 43 44 // DirectSignBytes returns the SIGN_MODE_DIRECT sign bytes for the provided TxBody bytes, AuthInfo bytes, chain ID, 45 // account number and sequence. 46 func DirectSignBytes(bodyBytes, authInfoBytes []byte, chainID string, accnum uint64) ([]byte, error) { 47 signDoc := types.SignDoc{ 48 BodyBytes: bodyBytes, 49 AuthInfoBytes: authInfoBytes, 50 ChainId: chainID, 51 AccountNumber: accnum, 52 } 53 return signDoc.Marshal() 54 }