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  }