class_docstr: implementation of server-side SCRAM-SHA-1 and SCRAM-SHA-256 auth for mongodb
      
code: def process_client_first_message(self, payload):
      payload = payload[3:]
      payload_parts = self._split_payload(payload)
      self.client_user = payload_parts["n"]
  
      if self.get_salted_password is not None:
          salt_bytes, self.salted_password = self.get_salted_password(
              self.client_user, self.method_str
          )
          self.salt = base64.b64encode(salt_bytes)
      else:
          self.salted_password = self.salt_password()
  
      self.unonce = payload_parts["r"]
      self.messages.append(payload)
  
      responce_msg = f"r={self.unonce}{self.snonce},s={self.salt.decode()},i={self.iterations}"
      self.messages.append(responce_msg)
      return responce_msg
  
file_path: mindsdb/mindsdb/api/mongo/classes/scram.py
imports: import base64
  import hashlib
  import hmac
  import os
  from pymongo.auth import _password_digest, _xor, saslprep
label_desc: Use image node_id 2 for calling the Scram obj's underlying member method code with example usage: obj.process_client_first_message(payload) and returns: responce_msg