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