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); }
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; }
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; }