code: def _temporary_keychain():
      
      # Unfortunately, SecKeychainCreate requires a path to a keychain. This
      # means we cannot use mkstemp to use a generic temporary file. Instead,
      # we're going to create a temporary directory and a filename to use there.
      # This filename will be 8 random bytes expanded into base64. We also need
      # some random bytes to password-protect the keychain we're creating, so we
      # ask for 40 random bytes.
      random_bytes = os.urandom(40)
      filename = base64.b16encode(random_bytes[:8]).decode('utf-8')
      password = base64.b16encode(random_bytes[8:])  # Must be valid UTF-8
      tempdirectory = tempfile.mkdtemp()
  
      keychain_path = os.path.join(tempdirectory, filename).encode('utf-8')
  
      # We now want to create the keychain itself.
      keychain = Security.SecKeychainRef()
      status = Security.SecKeychainCreate(
          keychain_path,
          len(password),
          password,
          False,
          None,
          ctypes.byref(keychain)
      )
      _assert_no_error(status)
  
      # Having created the keychain, we want to pass it off to the caller.
      return keychain, tempdirectory
docs: This function creates a temporary Mac keychain that we can use to work with
      credentials. This keychain uses a one-time password and a temporary file to
      store the data. We expect to have one keychain per socket. The returned
      SecKeychainRef must be freed by the caller, including calling
      SecKeychainDelete.
  
      Returns a tuple of the SecKeychainRef and the path to the temporary
      directory that contains it.