static void
delete_secrets (NMSecretAgent *agent,
                NMConnection *connection,
                const char *connection_path,
                NMSecretAgentDeleteSecretsFunc callback,
                gpointer callback_data)
{
	AppletAgentPrivate *priv = APPLET_AGENT_GET_PRIVATE (agent);
	Request *r;
	NMSettingConnection *s_con;
	const char *uuid;

	r = request_new (agent, connection, connection_path, NULL, NULL, FALSE, NULL, NULL, callback, callback_data);
	g_hash_table_insert (priv->requests, GUINT_TO_POINTER (r->id), r);

	s_con = nm_connection_get_setting_connection (connection);
	g_assert (s_con);
	uuid = nm_setting_connection_get_uuid (s_con);
	g_assert (uuid);

	secret_password_clear (&network_manager_secret_schema, r->cancellable,
	                       delete_find_items_cb, r,
	                       KEYRING_UUID_TAG, uuid,
	                       NULL);
	r->keyring_calls++;
}
void
mobile_helper_delete_pin_in_keyring (const char *devid)
{
	secret_password_clear (&mobile_secret_schema, NULL, NULL, NULL,
	                       "devid", devid,
	                       NULL);
}
void SecretManager::clearPasswordByLoginObj(const QJsonObject &obj)
{
    if (obj.value("protocol") == "smb"){
        secret_password_clear(SMBSecretSchema(), NULL, on_password_cleared, NULL,
                              "user", obj.value("user").toString().toStdString().c_str(),
                              "domain", obj.value("domain").toString().toStdString().c_str(),
                              "server", obj.value("server").toString().toStdString().c_str(),
                              "protocol", obj.value("protocol").toString().toStdString().c_str(),
                              NULL);
    }else if (obj.value("protocol") == "ftp" || obj.value("protocol") == "sftp"){
        secret_password_clear(FTPSecretSchema(), NULL, on_password_cleared, NULL,
                              "user", obj.value("user").toString().toStdString().c_str(),
                              "server", obj.value("server").toString().toStdString().c_str(),
                              "protocol", obj.value("protocol").toString().toStdString().c_str(),
                              NULL);
    }
}
void
tpaw_keyring_delete_account_password_async (TpAccount *account,
    GAsyncReadyCallback callback,
    gpointer user_data)
{
  GSimpleAsyncResult *simple;
  const gchar *account_id;

  g_return_if_fail (TP_IS_ACCOUNT (account));

  simple = g_simple_async_result_new (G_OBJECT (account), callback,
      user_data, tpaw_keyring_delete_account_password_async);

  account_id = tp_proxy_get_object_path (account) +
    strlen (TP_ACCOUNT_OBJECT_PATH_BASE);

  DEBUG ("Deleting password for %s", account_id);

#ifdef HAVE_UOA
    {
      const gchar *provider;

      provider = tp_account_get_storage_provider (account);
      if (!tp_strdiff (provider, TPAW_UOA_PROVIDER))
        {
          /* I see no other way to forget the stored password than overwriting
           * with an empty one. */
          uoa_set_account_password (account, "", FALSE, simple);
          g_object_unref (simple);
          return;
        }
    }
#endif

  secret_password_clear (&account_keyring_schema, NULL,
          items_delete_cb, simple,
          "account-id", account_id,
          "param-name", "password",
          NULL);
}