docstr: Validates username:pwd if they are the same as
  stored credentials.
  
  Returns
  -------
  bool
      True if credentials has key login and
      credentials[login] equal SHA3(pwd), False
      otherwise.
docstr_tok: ["Validates","username",":","pwd","if","they","are","the","same","as","stored","credentials",".","Returns","--","--","--","-","bool","True","if","credentials","has","key","login","and","credentials","[","login","]","equal","SHA3","(","pwd",")",",","False","otherwise","."]
code: def _validate_basic_auth_credentials(self) -> bool:
      """
      Validates username:pwd if they are the same as
      stored credentials.
  
      Returns
      -------
      bool
          True if credentials has key login and
          credentials[login] equal SHA3(pwd), False
          otherwise.
      """
      login = self.username.lower()
      self.logger.log(
          logging.DEBUG,
          f'Validating credentials for user name "{login}"',
      )
      if login not in self.credentials:
          self.logger.log(
              logging.ERROR, f'User name "{self.username}" not found'
          )
          return False
  
      hashed_pwd = hash_password(login, self.password)
      if self.credentials[login].lower() != hashed_pwd.lower():
          self.logger.log(
              logging.ERROR,
              f'Wrong password for user name "{self.username}"',
          )
          return False
  
      return True
  
imports: import base64
  import binascii
  import concurrent
  import json
  import logging
  import tornado.web
  from tabpy.tabpy_server.app.app_parameters import SettingsParameters
  from tabpy.tabpy_server.handlers.util import hash_password
  from tabpy.tabpy_server.handlers.util import AuthErrorStates
  import uuid
label_desc: Use image node_id 8 for calling the BaseHandler obj's underlying member method code with example usage: obj._validate_basic_auth_credentials() and returns: True, False, False