The checksums.multi vocabulary makes it possible to calculate multiple checksums with just one pass over a data stream.
The multi-checksum tuple holds a sequence of block-checksum instances, such as md5 or sha1. When the initialize-checksum-state method is called on it, a new instance of block-checksum-state is created for all the checksums, and returned as a new multi-state instance. You can then use add-checksum-bytes to stream data to it. When done, call get-checksum to finalize the process, read the resulting checksums and dispose of the tuple in one step. If you want to cancel the work without calling get-checksum, you must dispose of the tuple so that all implementation-specific resources are released.