|
|
- package binary
-
- import (
- "bytes"
- "crypto/sha256"
- "github.com/tendermint/tendermint/Godeps/_workspace/src/code.google.com/p/go.crypto/ripemd160"
- )
-
- // THESE PANICS ARE SANITY CHECKS
-
- func BinaryBytes(o interface{}) []byte {
- w, n, err := new(bytes.Buffer), new(int64), new(error)
- WriteBinary(o, w, n, err)
- if *err != nil {
- panic(*err)
- }
- return w.Bytes()
- }
-
- func JSONBytes(o interface{}) []byte {
- w, n, err := new(bytes.Buffer), new(int64), new(error)
- WriteJSON(o, w, n, err)
- if *err != nil {
- panic(*err)
- }
- return w.Bytes()
- }
-
- // NOTE: does not care about the type, only the binary representation.
- func BinaryEqual(a, b interface{}) bool {
- aBytes := BinaryBytes(a)
- bBytes := BinaryBytes(b)
- return bytes.Equal(aBytes, bBytes)
- }
-
- // NOTE: does not care about the type, only the binary representation.
- func BinaryCompare(a, b interface{}) int {
- aBytes := BinaryBytes(a)
- bBytes := BinaryBytes(b)
- return bytes.Compare(aBytes, bBytes)
- }
-
- // NOTE: only use this if you need 32 bytes.
- func BinarySha256(o interface{}) []byte {
- hasher, n, err := sha256.New(), new(int64), new(error)
- WriteBinary(o, hasher, n, err)
- if *err != nil {
- panic(*err)
- }
- return hasher.Sum(nil)
- }
-
- // NOTE: The default hash function is Ripemd160.
- func BinaryRipemd160(o interface{}) []byte {
- hasher, n, err := ripemd160.New(), new(int64), new(error)
- WriteBinary(o, hasher, n, err)
- if *err != nil {
- panic(*err)
- }
- return hasher.Sum(nil)
- }
|