mirror of
https://github.com/fluencelabs/tendermint
synced 2025-04-25 23:02:16 +00:00
31 lines
820 B
Go
31 lines
820 B
Go
|
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))
|
||
|
}
|