Implementation interfaces for nupp.digest algorithm catalogs.
The facade chooses the unique highest priority during module initialization. Importing this declaration does not load storage or algorithms. A provider supplies an algorithms map keyed by canonical algorithm name. Each descriptor's name agrees with its key, and each create returns independent owned state. The chosen catalog replaces matching built-in algorithms and may add names; other built-in algorithms remain available. Empty discovery uses the built-in catalog. Discovery order never selects a provider.
The facade validates and retains descriptors while requiring the module. Lookup, listing, and context creation then use cached descriptors without SPI resolution. Provider state processes chunks incrementally and retains neither input nor output spans. Cleanup consumes state without suspension. Reuse these canonical State and Algorithm identities, including ownership and borrowing signatures. Finalization writes exactly digestSize bytes into the caller's output span. The facade closes state on successful or failed finalization. Standard digest names retain their standard output sizes. MD5 and SHA-1 support interoperability; applications requiring collision resistance must choose an appropriate digest.