static void
on_view_selection_changed (SeahorseView *view, gpointer user_data)
{
	SeahorseGkrKeyringCommands *self = user_data;
	GnomeKeyringInfo *info;
	gboolean locked = FALSE;
	gboolean unlocked = FALSE;
	gboolean can_default = FALSE;
	GList *keys, *l;
	
	g_return_if_fail (SEAHORSE_IS_VIEW (view));
	g_return_if_fail (SEAHORSE_IS_GKR_KEYRING_COMMANDS (self));
	
	keys = seahorse_view_get_selected_matching (view, &keyring_predicate);
	for (l = keys; l; l = g_list_next (l)) {
		info = seahorse_gkr_keyring_get_info (l->data);
		if (info != NULL) {
			if (gnome_keyring_info_get_is_locked (info))
				locked = TRUE;
			else 
				unlocked = TRUE;
			if (!seahorse_gkr_keyring_get_is_default (l->data))
				can_default = TRUE;
		}
	}
	
	g_list_free (keys);
	
	gtk_action_set_sensitive (self->pv->action_lock, unlocked);
	gtk_action_set_sensitive (self->pv->action_unlock, locked);
	gtk_action_set_sensitive (self->pv->action_default, can_default);
}
Esempio n. 2
0
int keyring_unlock(char *keyring)
{
  GnomeKeyringInfo *info = NULL;
  char *password;

  gnome_keyring_get_info_sync(keyring, &info);

  if (gnome_keyring_info_get_is_locked(info))
  {
    password = try_secure_alloc(sizeof(char) * PASSWORD_MAX_SIZE);

    read_password(&password, "Enter the keyring password");
    GnomeKeyringResult res = gnome_keyring_unlock_sync(keyring, password);

    free_password(password);

    if (res != GNOME_KEYRING_RESULT_OK)
    {
      gnome_keyring_info_free(info);
      return keyring_handle_error(res);
    }
  }

  gnome_keyring_info_free(info);

  return GNOME_KEYRING_RESULT_OK;
}
Esempio n. 3
0
void
callback__get_info (GnomeKeyringResult result,
                    GnomeKeyringInfo *info,
                    gpointer data)
{
  if (result != GNOME_KEYRING_RESULT_OK)
    {
      print_error(result, "ERROR", "\nCan't access keyring.\n");
      exit_status = FALSE;
      g_main_loop_quit(loop);
      return;
    }

  if (g_strcasecmp((char*)data, "info") == 0)
    {
      time_t create_tim;
      time_t modify_tim;
      struct tm *tmp;

      create_tim = gnome_keyring_info_get_ctime(info);
      modify_tim = gnome_keyring_info_get_mtime(info);

      fprintf (stdout, "Keyring locked : %s\n",
               (gnome_keyring_info_get_is_locked(info) ? "yes" : "no"));
      fprintf (stdout, "Auto lock on idle : %s\n",
               (gnome_keyring_info_get_lock_on_idle(info) ? "yes" : "no"));
      fprintf (stdout, "Auto lock idle timeout : %u (in sec)\n",
               gnome_keyring_info_get_lock_timeout(info));

      tmp = localtime(&create_tim);
      if (tmp != NULL)
        {
          char buf[256];
          if (strftime(buf, sizeof(buf), "%F %T %z (%a, %d %b %Y)", tmp) > 0)
           fprintf (stdout, "Keyring created on : %s\n", buf);
        }

      tmp = localtime(&modify_tim);
      if (tmp != NULL)
        {
          char buf[256];
          if (strftime(buf, sizeof(buf), "%F %T %z (%a, %d %b %Y)", tmp) > 0)
           fprintf (stdout, "Keyring modified on : %s\n", buf);
        }
    }

  exit_status = TRUE;
  g_main_loop_quit(loop);

  return;
}