package types
|
|
|
|
import (
|
|
fmt "fmt"
|
|
|
|
"github.com/tendermint/tendermint/crypto/ed25519"
|
|
cryptoenc "github.com/tendermint/tendermint/crypto/encoding"
|
|
"github.com/tendermint/tendermint/crypto/secp256k1"
|
|
"github.com/tendermint/tendermint/crypto/sr25519"
|
|
)
|
|
|
|
func Ed25519ValidatorUpdate(pk []byte, power int64) ValidatorUpdate {
|
|
pke := ed25519.PubKey(pk)
|
|
|
|
pkp, err := cryptoenc.PubKeyToProto(pke)
|
|
if err != nil {
|
|
panic(err)
|
|
}
|
|
|
|
return ValidatorUpdate{
|
|
PubKey: pkp,
|
|
Power: power,
|
|
}
|
|
}
|
|
|
|
func UpdateValidator(pk []byte, power int64, keyType string) ValidatorUpdate {
|
|
switch keyType {
|
|
case "", ed25519.KeyType:
|
|
return Ed25519ValidatorUpdate(pk, power)
|
|
case secp256k1.KeyType:
|
|
pke := secp256k1.PubKey(pk)
|
|
pkp, err := cryptoenc.PubKeyToProto(pke)
|
|
if err != nil {
|
|
panic(err)
|
|
}
|
|
return ValidatorUpdate{
|
|
PubKey: pkp,
|
|
Power: power,
|
|
}
|
|
case sr25519.KeyType:
|
|
pke := sr25519.PubKey(pk)
|
|
pkp, err := cryptoenc.PubKeyToProto(pke)
|
|
if err != nil {
|
|
panic(err)
|
|
}
|
|
return ValidatorUpdate{
|
|
PubKey: pkp,
|
|
Power: power,
|
|
}
|
|
default:
|
|
panic(fmt.Sprintf("key type %s not supported", keyType))
|
|
}
|
|
}
|