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