package crypto import ( cmn "github.com/tendermint/tendermint/libs/common" ) type PrivKey interface { Bytes() []byte Sign(msg []byte) (Signature, error) PubKey() PubKey Equals(PrivKey) bool } // An address is a []byte, but hex-encoded even in JSON. // []byte leaves us the option to change the address length. // Use an alias so Unmarshal methods (with ptr receivers) are available too. type Address = cmn.HexBytes type PubKey interface { Address() Address Bytes() []byte VerifyBytes(msg []byte, sig Signature) bool Equals(PubKey) bool } type Signature interface { Bytes() []byte IsZero() bool Equals(Signature) bool } type Symmetric interface { Keygen() []byte Encrypt(plaintext []byte, secret []byte) (ciphertext []byte) Decrypt(ciphertext []byte, secret []byte) (plaintext []byte, err error) }