code: func NewHasherStore(store ChunkStore, hashFunc SwarmHasher, toEncrypt bool) *hasherStore {
  	hashSize := hashFunc().Size()
  	refSize := int64(hashSize)
  	if toEncrypt {
  		refSize += encryption.KeyLength
  	}
  
  	h := &hasherStore{
  		store:     store,
  		toEncrypt: toEncrypt,
  		hashFunc:  hashFunc,
  		hashSize:  hashSize,
  		refSize:   refSize,
  		errC:      make(chan error),
  		doneC:     make(chan struct{}),
  		quitC:     make(chan struct{}),
  	}
  
  	return h
  }
docs: // NewHasherStore creates a hasherStore object, which implements Putter and Getter interfaces.
  // With the HasherStore you can put and get chunk data (which is just []byte) into a ChunkStore
  // and the hasherStore will take core of encryption/decryption of data if necessary