github.com/Finschia/finschia-sdk@v0.49.1/x/auth/tx/mode_handler.go (about)

     1  package tx
     2  
     3  import (
     4  	"fmt"
     5  
     6  	signingtypes "github.com/Finschia/finschia-sdk/types/tx/signing"
     7  	"github.com/Finschia/finschia-sdk/x/auth/signing"
     8  )
     9  
    10  // DefaultSignModes are the default sign modes enabled for protobuf transactions.
    11  var DefaultSignModes = []signingtypes.SignMode{
    12  	signingtypes.SignMode_SIGN_MODE_DIRECT,
    13  	signingtypes.SignMode_SIGN_MODE_LEGACY_AMINO_JSON,
    14  }
    15  
    16  // makeSignModeHandler returns the default protobuf SignModeHandler supporting
    17  // SIGN_MODE_DIRECT and SIGN_MODE_LEGACY_AMINO_JSON.
    18  func makeSignModeHandler(modes []signingtypes.SignMode) signing.SignModeHandler {
    19  	if len(modes) < 1 {
    20  		panic(fmt.Errorf("no sign modes enabled"))
    21  	}
    22  
    23  	handlers := make([]signing.SignModeHandler, len(modes))
    24  
    25  	for i, mode := range modes {
    26  		switch mode {
    27  		case signingtypes.SignMode_SIGN_MODE_DIRECT:
    28  			handlers[i] = signModeDirectHandler{}
    29  		case signingtypes.SignMode_SIGN_MODE_LEGACY_AMINO_JSON:
    30  			handlers[i] = signModeLegacyAminoJSONHandler{}
    31  		default:
    32  			panic(fmt.Errorf("unsupported sign mode %+v", mode))
    33  		}
    34  	}
    35  
    36  	return signing.NewSignModeHandlerMap(
    37  		modes[0],
    38  		handlers,
    39  	)
    40  }