Esempio n. 1
0
 def delete(self) -> None:
     """Deletes the item."""
     self.ensure_not_locked()
     prompt, = self._item.call('Delete', '')
     if prompt != "/":
         dismissed, _result = exec_prompt(self.connection, prompt)
         if dismissed:
             raise PromptDismissedException('Prompt dismissed.')
Esempio n. 2
0
	def unlock(self, callback=None):
		"""Requests unlocking the collection. If `callback` is specified,
		calls it when unlocking is complete (see
		:func:`~secretstorage.util.exec_prompt` description for
		details) and returns a boolean representing whether the operation was
		dismissed. Otherwise, uses loop from GLib API."""
		service_obj = bus_get_object(self.bus, SECRETS, SS_PATH)
		service_iface = InterfaceWrapper(service_obj, SERVICE_IFACE)
		prompt = service_iface.Unlock([self.collection_path], signature='ao')[1]
		if len(prompt) > 1:
			if callback:
				exec_prompt(self.bus, prompt, callback)
			else:
				return exec_prompt_glib(self.bus, prompt)[0]
		elif callback:
			# We still need to call it.
			callback(False, [])
Esempio n. 3
0
	def delete(self) -> None:
		"""Deletes the collection and all items inside it."""
		self.ensure_not_locked()
		prompt, = self._collection.call('Delete', '')
		if prompt != "/":
			dismissed, _result = exec_prompt(self.connection, prompt)
			if dismissed:
				raise PromptDismissedException('Prompt dismissed.')
Esempio n. 4
0
def create_collection(connection: DBusConnection, label: str, alias: str = '',
                      session: Optional[Session] = None) -> Collection:
	"""Creates a new :class:`Collection` with the given `label` and `alias`
	and returns it. This action requires prompting.

	:raises: :exc:`~secretstorage.exceptions.PromptDismissedException`
	         if the prompt is dismissed.
	"""
	if not session:
		session = open_session(connection)
	properties = {SS_PREFIX + 'Collection.Label': ('s', label)}
	service = DBusAddressWrapper(SS_PATH, SERVICE_IFACE, connection)
	collection_path, prompt = service.call('CreateCollection', 'a{sv}s',
	                                       properties, alias)
	if len(collection_path) > 1:
		return Collection(connection, collection_path, session=session)
	dismissed, result = exec_prompt(connection, prompt)
	if dismissed:
		raise PromptDismissedException('Prompt dismissed.')
	signature, collection_path = result
	assert signature == 'o'
	return Collection(connection, collection_path, session=session)
Esempio n. 5
0
def create_collection(connection: DBusConnection,
                      label: str,
                      alias: str = '',
                      session: Optional[Session] = None) -> Collection:
    """Creates a new :class:`Collection` with the given `label` and `alias`
	and returns it. This action requires prompting.

	:raises: :exc:`~secretstorage.exceptions.PromptDismissedException`
	         if the prompt is dismissed.
	"""
    if not session:
        session = open_session(connection)
    properties = {SS_PREFIX + 'Collection.Label': ('s', label)}
    service = DBusAddressWrapper(SS_PATH, SERVICE_IFACE, connection)
    collection_path, prompt = service.call('CreateCollection', 'a{sv}s',
                                           properties, alias)
    if len(collection_path) > 1:
        return Collection(connection, collection_path, session=session)
    dismissed, result = exec_prompt(connection, prompt)
    if dismissed:
        raise PromptDismissedException('Prompt dismissed.')
    signature, collection_path = result
    assert signature == 'o'
    return Collection(connection, collection_path, session=session)