package cryptoAmino import ( amino "github.com/tendermint/go-amino" "github.com/tendermint/tendermint/crypto" "github.com/tendermint/tendermint/crypto/ed25519" "github.com/tendermint/tendermint/crypto/secp256k1" ) var cdc = amino.NewCodec() func init() { // NOTE: It's important that there be no conflicts here, // as that would change the canonical representations, // and therefore change the address. // TODO: Remove above note when // https://github.com/tendermint/go-amino/issues/9 // is resolved RegisterAmino(cdc) } // RegisterAmino registers all crypto related types in the given (amino) codec. func RegisterAmino(cdc *amino.Codec) { // These are all written here instead of cdc.RegisterInterface((*crypto.PubKey)(nil), nil) cdc.RegisterConcrete(ed25519.PubKeyEd25519{}, "tendermint/PubKeyEd25519", nil) cdc.RegisterConcrete(secp256k1.PubKeySecp256k1{}, "tendermint/PubKeySecp256k1", nil) cdc.RegisterInterface((*crypto.PrivKey)(nil), nil) cdc.RegisterConcrete(ed25519.PrivKeyEd25519{}, "tendermint/PrivKeyEd25519", nil) cdc.RegisterConcrete(secp256k1.PrivKeySecp256k1{}, "tendermint/PrivKeySecp256k1", nil) cdc.RegisterInterface((*crypto.Signature)(nil), nil) cdc.RegisterConcrete(ed25519.SignatureEd25519{}, "tendermint/SignatureEd25519", nil) cdc.RegisterConcrete(secp256k1.SignatureSecp256k1{}, "tendermint/SignatureSecp256k1", nil) } func PrivKeyFromBytes(privKeyBytes []byte) (privKey crypto.PrivKey, err error) { err = cdc.UnmarshalBinaryBare(privKeyBytes, &privKey) return } func PubKeyFromBytes(pubKeyBytes []byte) (pubKey crypto.PubKey, err error) { err = cdc.UnmarshalBinaryBare(pubKeyBytes, &pubKey) return } func SignatureFromBytes(pubKeyBytes []byte) (pubKey crypto.Signature, err error) { err = cdc.UnmarshalBinaryBare(pubKeyBytes, &pubKey) return }