blob: 8d4dac21d71ec18e552fd704d73f918a9ee7dd9e (
about) (
plain) (
blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
|
package ingest
import (
"fmt"
"codeberg.org/lindenii/furgit/objectheader"
"codeberg.org/lindenii/furgit/objectid"
"codeberg.org/lindenii/furgit/objecttype"
)
// hashCanonicalObject hashes canonical object bytes (header+content).
func hashCanonicalObject(algo objectid.Algorithm, ty objecttype.Type, content []byte) (objectid.ObjectID, error) {
header, ok := objectheader.Encode(ty, int64(len(content)))
if !ok {
return objectid.ObjectID{}, fmt.Errorf("format/pack/ingest: encode object header for type %d", ty)
}
hashImpl, err := algo.New()
if err != nil {
return objectid.ObjectID{}, err
}
_, _ = hashImpl.Write(header)
_, _ = hashImpl.Write(content)
return objectid.FromBytes(algo, hashImpl.Sum(nil))
}
|