parameters: (self, challenge=None)
return_statement: return self.user + " " + hmac.HMAC(
              self.password.encode('utf-8'), challenge, 'md5').hexdigest()
docstring: Authobject to use with CRAM-MD5 authentication. Requires self.user
          and self.password to be set.
docstring_summary: Authobject to use with CRAM-MD5 authentication. Requires self.user
          and self.password to be set.
docstring_tokens: Authobject to use with CRAM - MD5 authentication . Requires self . user and self . password to be set .
function: def auth_cram_md5(self, challenge=None):
          """ Authobject to use with CRAM-MD5 authentication. Requires self.user
          and self.password to be set."""
          # CRAM-MD5 does not support initial-response.
          if challenge is None:
              return None
          return self.user + " " + hmac.HMAC(
              self.password.encode('utf-8'), challenge, 'md5').hexdigest()
function_tokens: def auth_cram_md5 ( self , challenge = None ) : # CRAM-MD5 does not support initial-response. if challenge is None : return None return self . user + " " + hmac . HMAC ( self . password . encode ( 'utf-8' ) , challenge , 'md5' ) . hexdigest ( )