code: func (check *FileChecksumGenerator) GenerateChecksums(inputFile io.Reader, output io.Writer) (fileChecksum []byte, err error) {
  	for chunkResult := range check.StartChecksumGeneration(inputFile, 64, nil) {
  		if chunkResult.Err != nil {
  			return nil, chunkResult.Err
  		} else if chunkResult.Filechecksum != nil {
  			return chunkResult.Filechecksum, nil
  		}
  
  		for _, chunk := range chunkResult.Checksums {
  			output.Write(chunk.WeakChecksum)
  			output.Write(chunk.StrongChecksum)
  		}
  	}
  
  	return nil, nil
  }
docs: // GenerateChecksums reads each block of the input file, and outputs first the weak, then the strong checksum
  // to the output writer. It will return a checksum for the whole file.
  // Potentially speaking, this might be better producing a channel of blocks, which would remove the need for io from
  // a number of other places.