Checksums

Also related to some other comments: I think the API would be better suited if a checksum type was used as-is, wrapped into a non-opaque `option` whenever suitable, passing around values of the actual checksum type when `None` is not a valid value, using `option` on a per-function basis.