github.com/ari-anchor/sei-tendermint@v0.0.0-20230519144642-dc826b7b56bb/abci/types/pubkey.go (about) 1 package types 2 3 import ( 4 fmt "fmt" 5 6 "github.com/ari-anchor/sei-tendermint/crypto/ed25519" 7 "github.com/ari-anchor/sei-tendermint/crypto/encoding" 8 "github.com/ari-anchor/sei-tendermint/crypto/secp256k1" 9 "github.com/ari-anchor/sei-tendermint/crypto/sr25519" 10 ) 11 12 func Ed25519ValidatorUpdate(pk []byte, power int64) ValidatorUpdate { 13 pke := ed25519.PubKey(pk) 14 15 pkp, err := encoding.PubKeyToProto(pke) 16 if err != nil { 17 panic(err) 18 } 19 20 return ValidatorUpdate{ 21 PubKey: pkp, 22 Power: power, 23 } 24 } 25 26 func UpdateValidator(pk []byte, power int64, keyType string) ValidatorUpdate { 27 switch keyType { 28 case "", ed25519.KeyType: 29 return Ed25519ValidatorUpdate(pk, power) 30 case secp256k1.KeyType: 31 pke := secp256k1.PubKey(pk) 32 pkp, err := encoding.PubKeyToProto(pke) 33 if err != nil { 34 panic(err) 35 } 36 return ValidatorUpdate{ 37 PubKey: pkp, 38 Power: power, 39 } 40 case sr25519.KeyType: 41 pke := sr25519.PubKey(pk) 42 pkp, err := encoding.PubKeyToProto(pke) 43 if err != nil { 44 panic(err) 45 } 46 return ValidatorUpdate{ 47 PubKey: pkp, 48 Power: power, 49 } 50 default: 51 panic(fmt.Sprintf("key type %s not supported", keyType)) 52 } 53 }