docs: def HA2(credentials, request, algorithm):
      """Create HA2 md5 hash
  
      If the qop directive's value is "auth" or is unspecified, then HA2:
          HA2 = md5(A2) = MD5(method:digestURI)
      If the qop directive's value is "auth-int" , then HA2 is
          HA2 = md5(A2) = MD5(method:digestURI:MD5(entityBody))
      """
      if credentials.get("qop") == "auth" or credentials.get('qop') is None:
          return H(b":".join([request['method'].encode('utf-8'), request['uri'].encode('utf-8')]), algorithm)
      elif credentials.get("qop") == "auth-int":
          for k in 'method', 'uri', 'body':
              if k not in request:
                  raise ValueError("%s required" % k)
          A2 = b":".join([request['method'].encode('utf-8'),
                          request['uri'].encode('utf-8'),
                          H(request['body'], algorithm).encode('utf-8')])
          return H(A2, algorithm)
      raise ValueError