module JWT::Algos::Hmac

def sign(algorithm, msg, key)

def sign(algorithm, msg, key)
  key ||= ''
  raise JWT::DecodeError, 'HMAC key expected to be a String' unless key.is_a?(String)
  OpenSSL::HMAC.digest(MAPPING[algorithm].new, key, msg)
rescue OpenSSL::HMACError => e
  if key == '' && e.message == 'EVP_PKEY_new_mac_key: malloc failure'
    raise JWT::DecodeError, 'OpenSSL 3.0 does not support nil or empty hmac_secret'
  end
  raise e
end

def verify(algorithm, key, signing_input, signature)

def verify(algorithm, key, signing_input, signature)
  SecurityUtils.secure_compare(signature, sign(algorithm, signing_input, key))
end