- package tmhash
-
- import (
- "crypto/sha256"
- "hash"
- )
-
- const (
- Size = sha256.Size
- BlockSize = sha256.BlockSize
- )
-
- // New returns a new hash.Hash.
- func New() hash.Hash {
- return sha256.New()
- }
-
- // Sum returns the SHA256 of the bz.
- func Sum(bz []byte) []byte {
- h := sha256.Sum256(bz)
- return h[:]
- }
-
- //-------------------------------------------------------------
-
- const (
- TruncatedSize = 20
- )
-
- type sha256trunc struct {
- sha256 hash.Hash
- }
-
- func (h sha256trunc) Write(p []byte) (n int, err error) {
- return h.sha256.Write(p)
- }
- func (h sha256trunc) Sum(b []byte) []byte {
- shasum := h.sha256.Sum(b)
- return shasum[:TruncatedSize]
- }
-
- func (h sha256trunc) Reset() {
- h.sha256.Reset()
- }
-
- func (h sha256trunc) Size() int {
- return TruncatedSize
- }
-
- func (h sha256trunc) BlockSize() int {
- return h.sha256.BlockSize()
- }
-
- // NewTruncated returns a new hash.Hash.
- func NewTruncated() hash.Hash {
- return sha256trunc{
- sha256: sha256.New(),
- }
- }
-
- // SumTruncated returns the first 20 bytes of SHA256 of the bz.
- func SumTruncated(bz []byte) []byte {
- hash := sha256.Sum256(bz)
- return hash[:TruncatedSize]
- }
|