We need to figure out a good interface for enumerating the hashes supported by a backend.

One of the primary goals of a hashlib compatible interface is to make it easy to expose "exotic" hashes (blake2, siphash, etc) to code that was written to use the hashlib interface.

Ideally we should be able to do that by only providing a backend that supports a specific algorithm and a HashAlgorithm provider.

I think it's also obvious that a 3rd party should be able to add a supported hash in this way.  So enumerating the HashAlgorithms exposed via the hashes is kind of a non-starter.

That said I'm not sure what the right answer is.