code: func getHashAndSize(r io.ReadSeeker, h hash.Hash) (int64, error) {
  	if _, err := r.Seek(0, os.SEEK_SET); err != nil {
  		return 0, err
  	}
  	if _, err := io.Copy(h, r); err != nil {
  		return 0, err
  	}
  	return r.Seek(0, os.SEEK_CUR)
  }
docs: ////////////////////////////////////////////////////////////////////////////////
  // Utilities.
  // getHashAndSize rereads the entire file, passing it through the digester.
  //
  // Returns file length.