ComputeHash(t ObjectType, content []byte) ObjectID
}
-/* SHA1 Type */
type Sha1ObjectFormatImpl struct{}
var (
_, _ = hasher.Write([]byte(" "))
_, _ = hasher.Write([]byte(strconv.FormatInt(int64(len(content)), 10)))
_, _ = hasher.Write([]byte{0})
-
- // HashSum generates a SHA1 for the provided hash
- var sha1 Sha1Hash
- copy(sha1[:], hasher.Sum(nil))
- return &sha1
+ _, _ = hasher.Write(content)
+ return h.MustID(hasher.Sum(nil))
}
-/* SHA256 Type */
type Sha256ObjectFormatImpl struct{}
var (
_, _ = hasher.Write([]byte(" "))
_, _ = hasher.Write([]byte(strconv.FormatInt(int64(len(content)), 10)))
_, _ = hasher.Write([]byte{0})
-
- // HashSum generates a SHA256 for the provided hash
- var sha256 Sha1Hash
- copy(sha256[:], hasher.Sum(nil))
- return &sha256
+ _, _ = hasher.Write(content)
+ return h.MustID(hasher.Sum(nil))
}
var (
Type() ObjectFormat
}
-/* SHA1 */
type Sha1Hash [20]byte
func (h *Sha1Hash) String() string {
return id
}
-/* SHA256 */
type Sha256Hash [32]byte
func (h *Sha256Hash) String() string {
func (h *Sha256Hash) RawValue() []byte { return h[:] }
func (*Sha256Hash) Type() ObjectFormat { return Sha256ObjectFormat }
-/* utility */
func NewIDFromString(hexHash string) (ObjectID, error) {
var theObjectFormat ObjectFormat
for _, objectFormat := range SupportedObjectFormats {
assert.False(t, h.IsValid("abc"))
assert.False(t, h.IsValid("123g"))
assert.False(t, h.IsValid("some random text"))
+ assert.Equal(t, "e69de29bb2d1d6434b8b29ae775ad8c2e48c5391", ComputeBlobHash(Sha1ObjectFormat, nil).String())
+ assert.Equal(t, "2e65efe2a145dda7ee51d1741299f848e5bf752e", ComputeBlobHash(Sha1ObjectFormat, []byte("a")).String())
+ assert.Equal(t, "473a0f4c3be8a93681a267e3b1e9a7dcda1185436fe141f7749120a303721813", ComputeBlobHash(Sha256ObjectFormat, nil).String())
+ assert.Equal(t, "eb337bcee2061c5313c9a1392116b6c76039e9e30d71467ae359b36277e17dc7", ComputeBlobHash(Sha256ObjectFormat, []byte("a")).String())
}