The internal SHABlock class represents the output of a hash algorithm. It has generic methods for interacting with a fixed width binary blob. It has traits about hash implementations injected via templates. We currently only support SHA-1 and and various SHA-2 algorithms, but there is nothing about the class that would prevent implementations of other hash algorithms.
We should rename SHABlock to HashBlock, to indicate the generic nature of the class.