type marshalable … type HMAC … func (h *HMAC) Sum(in []byte) []byte { … } func (h *HMAC) Write(p []byte) (n int, err error) { … } func (h *HMAC) Size() int { … } func (h *HMAC) BlockSize() int { … } func (h *HMAC) Reset() { … } // New returns a new HMAC hash using the given [fips.Hash] type and key. func New[H fips.Hash](h func() H, key []byte) *HMAC { … } func setServiceIndicator(h fips.Hash, key []byte) { … }