diff options
Diffstat (limited to 'core/hash.go')
-rw-r--r-- | core/hash.go | 58 |
1 files changed, 0 insertions, 58 deletions
diff --git a/core/hash.go b/core/hash.go deleted file mode 100644 index c50ffb2..0000000 --- a/core/hash.go +++ /dev/null @@ -1,58 +0,0 @@ -package core - -import ( - "crypto/sha1" - "encoding/hex" - "hash" - "strconv" -) - -// Hash SHA1 hased content -type Hash [20]byte - -// ZeroHash is Hash with value zero -var ZeroHash Hash - -// ComputeHash compute the hash for a given ObjectType and content -func ComputeHash(t ObjectType, content []byte) Hash { - h := NewHasher(t, int64(len(content))) - h.Write(content) - return h.Sum() -} - -// NewHash return a new Hash from a hexadecimal hash representation -func NewHash(s string) Hash { - b, _ := hex.DecodeString(s) - - var h Hash - copy(h[:], b) - - return h -} - -func (h Hash) IsZero() bool { - var empty Hash - return h == empty -} - -func (h Hash) String() string { - return hex.EncodeToString(h[:]) -} - -type Hasher struct { - hash.Hash -} - -func NewHasher(t ObjectType, size int64) Hasher { - h := Hasher{sha1.New()} - h.Write(t.Bytes()) - h.Write([]byte(" ")) - h.Write([]byte(strconv.FormatInt(size, 10))) - h.Write([]byte{0}) - return h -} - -func (h Hasher) Sum() (hash Hash) { - copy(hash[:], h.Hash.Sum(nil)) - return -} |