package types import ( "bytes" "io" . "github.com/tendermint/go-common" "github.com/tendermint/go-merkle" ) // Signable is an interface for all signable things. // It typically removes signatures before serializing. type Signable interface { WriteSignBytes(chainID string, w io.Writer, n *int64, err *error) } // SignBytes is a convenience method for getting the bytes to sign of a Signable. func SignBytes(chainID string, o Signable) []byte { buf, n, err := new(bytes.Buffer), new(int64), new(error) o.WriteSignBytes(chainID, buf, n, err) if *err != nil { PanicCrisis(err) } return buf.Bytes() } // HashSignBytes is a convenience method for getting the hash of the bytes of a signable func HashSignBytes(chainID string, o Signable) []byte { return merkle.SimpleHashFromBinary(SignBytes(chainID, o)) }