The HMAC Ada Library This follows from the HMAC Ada library experiment; the final version of this library is much smaller and less modular than I'd first expected. The design influence this library posed to my SHA library made much of the planned HMAC library superfluous and resulted in this take-it-or-leave-it approach. Instantiating the generic package is unpleasant to see, but I suppose rather necessary. I refuse to expose in my SHA package the internal type of the length used in the final block, but this is needed to optimize the HMAC calculation, thus the instantiator must know and give this type to the package. An issue with my design is requiring the special interface to the Hash subprogram that overrides the initial Status and length used in the final block. This interface was chosen because it's obviously useful for other purposes, and the normal Hash function can be implemented in terms of it trivially. However, this is an unusual interface, not that compatibility with any library not of my design be a concern, and it needs a synthetic implementation thereof for a substantially different hash checksum algorithm such as SHA-3, which uses no such length in its design. Regardless, these concerns should matter little, and designs such as SHA-3 avoid the need for HMAC entirely anyway; this library is so small and does so little that it can be discarded safely if it ever tries to outlive its usefulness. .