added a default implementation of the HMAC function