identhash.go raw
1 package types
2
3 import (
4 "io"
5
6 "github.com/minio/sha256-simd"
7 )
8
9 const IdentLen = 8
10
11 type Ident struct{ val [IdentLen]byte }
12
13 func (i *Ident) FromIdent(id []byte) {
14 idh := sha256.Sum256(id)
15 copy(i.val[:], idh[:IdentLen])
16 return
17 }
18
19 func (i *Ident) Bytes() (b []byte) { return i.val[:] }
20
21 func (i *Ident) MarshalWrite(w io.Writer) (err error) {
22 _, err = w.Write(i.val[:])
23 return
24 }
25
26 func (i *Ident) UnmarshalRead(r io.Reader) (err error) {
27
28 copy(i.val[:], i.val[:IdentLen])
29 _, err = r.Read(i.val[:])
30 return
31 }
32