From 842dea173caf26f33b0513ab2beec51f89f9909f Mon Sep 17 00:00:00 2001 From: Alexander Neumann Date: Wed, 11 Feb 2015 19:25:43 +0100 Subject: [PATCH] Generalize hash in backend --- backend/generic.go | 9 ++++++++- backend/id.go | 7 +++---- 2 files changed, 11 insertions(+), 5 deletions(-) diff --git a/backend/generic.go b/backend/generic.go index dd5e9ac78..a1f990bbf 100644 --- a/backend/generic.go +++ b/backend/generic.go @@ -19,6 +19,13 @@ var ( ErrMultipleIDMatches = errors.New("multiple IDs with prefix found") ) +var ( + newHash = sha256.New + hashData = sha256.Sum256 +) + +const hashSize = sha256.Size + // Each lists all entries of type t in the backend and calls function f() with // the id and data. func Each(be interface { @@ -92,7 +99,7 @@ func Uncompress(data []byte) []byte { // Hash returns the ID for data. func Hash(data []byte) ID { - h := sha256.Sum256(data) + h := hashData(data) id := idPool.Get().(ID) copy(id, h[:]) return id diff --git a/backend/id.go b/backend/id.go index 01dcd187a..f2ec44000 100644 --- a/backend/id.go +++ b/backend/id.go @@ -2,7 +2,6 @@ package backend import ( "bytes" - "crypto/sha256" "encoding/hex" "encoding/json" "errors" @@ -10,7 +9,7 @@ import ( ) // IDSize contains the size of an ID, in bytes. -const IDSize = sha256.Size +const IDSize = hashSize // References content within a repository. type ID []byte @@ -26,7 +25,7 @@ func ParseID(s string) (ID, error) { } if len(b) != IDSize { - return nil, errors.New("invalid length for sha256 hash") + return nil, errors.New("invalid length for hash") } return ID(b), nil @@ -83,7 +82,7 @@ func (id *ID) UnmarshalJSON(b []byte) error { } func IDFromData(d []byte) ID { - hash := sha256.Sum256(d) + hash := hashData(d) id := idPool.Get().(ID) copy(id, hash[:]) return id