code: def _authenticate_cram_md5(credentials, sock_info):
      
      source = credentials.source
      username = credentials.username
      password = credentials.password
      # The password used as the mac key is the
      # same as what we use for MONGODB-CR
      passwd = _password_digest(username, password)
      cmd = SON([('saslStart', 1),
                 ('mechanism', 'CRAM-MD5'),
                 ('payload', Binary(b'')),
                 ('autoAuthorize', 1)])
      response = sock_info.command(source, cmd)
      # MD5 as implicit default digest for digestmod is deprecated
      # in python 3.4
      mac = hmac.HMAC(key=passwd.encode('utf-8'), digestmod=md5)
      mac.update(response['payload'])
      challenge = username.encode('utf-8') + b' ' + b(mac.hexdigest())
      cmd = SON([('saslContinue', 1),
                 ('conversationId', response['conversationId']),
                 ('payload', Binary(challenge))])
      sock_info.command(source, cmd)
docs: Authenticate using CRAM-MD5 (RFC 2195)