hmac requires skey as bytes, not unicode
raise TypeError instead of RuntimeError for missing required parameters