Generalize hash in backend

This commit is contained in:
Alexander Neumann 2015-02-11 19:25:43 +01:00
parent 5f0cce8546
commit 842dea173c
2 changed files with 11 additions and 5 deletions

View file

@ -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

View file

@ -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