From 7b269a91a35d46554935171fb6a24a9ee39cc6e1 Mon Sep 17 00:00:00 2001 From: charithabandi Date: Tue, 4 Mar 2025 10:50:58 -0600 Subject: [PATCH] setup genesis command to validate the validators pubkey --- app/setup/genesis.go | 27 +++++++++++++++++++-------- 1 file changed, 19 insertions(+), 8 deletions(-) diff --git a/app/setup/genesis.go b/app/setup/genesis.go index 8ab6c1878..3895dfe29 100644 --- a/app/setup/genesis.go +++ b/app/setup/genesis.go @@ -167,23 +167,34 @@ func mergeGenesisFlags(conf *config.GenesisConfig, cmd *cobra.Command, flagCfg * for _, v := range flagCfg.validators { parts := strings.Split(v, ":") if len(parts) != 2 { - return nil, fmt.Errorf("invalid format for validator, expected key:power, received: %s", v) + return nil, fmt.Errorf("invalid format for validator, expected key#keyType:power, received: %s", v) } - keyParts := strings.Split(parts[0], "#") - hexPub, err := hex.DecodeString(keyParts[0]) + power, err := strconv.ParseInt(parts[1], 10, 64) if err != nil { - return nil, fmt.Errorf("invalid public key for validator: %s", parts[0]) + return nil, fmt.Errorf("invalid power for validator: %s", parts[1]) } - power, err := strconv.ParseInt(parts[1], 10, 64) + keyType := crypto.KeyTypeSecp256k1 + keyParts := strings.Split(parts[0], "#") + + if len(keyParts) > 2 { + return nil, fmt.Errorf("invalid format for validator, expected key#keyType:power, received: %s", v) + } else if len(keyParts) == 2 { + keyType, err = crypto.ParseKeyType(keyParts[1]) + if err != nil { + return nil, fmt.Errorf("invalid key type for validator: %s", keyParts[1]) + } + } + + hexPub, err := hex.DecodeString(keyParts[0]) if err != nil { - return nil, fmt.Errorf("invalid power for validator: %s", parts[1]) + return nil, fmt.Errorf("invalid public key for validator: %s", parts[0]) } - keyType, err := crypto.ParseKeyType(keyParts[1]) + _, err = crypto.UnmarshalPublicKey(hexPub, keyType) if err != nil { - return nil, fmt.Errorf("invalid key type for validator: %s", keyParts[1]) + return nil, fmt.Errorf("invalid public key for validator: %s", parts[0]) } conf.Validators = append(conf.Validators, &types.Validator{