add up to hmac + many helper functions