static GcrPrompt * create_prompt (pinentry_t pe, int confirm) { GcrPrompt *prompt; GError *error = NULL; char *msg; /* Create the prompt. */ prompt = GCR_PROMPT (gcr_system_prompt_open (-1, NULL, &error)); if (! prompt) { g_warning ("couldn't create prompt for gnupg passphrase: %s", error->message); g_error_free (error); return NULL; } /* Set the messages for the various buttons, etc. */ if (pe->title) { msg = pinentry_utf8_validate (pe->title); gcr_prompt_set_title (prompt, msg); g_free (msg); } if (pe->description) { msg = pinentry_utf8_validate (pe->description); gcr_prompt_set_description (prompt, msg); g_free (msg); } /* An error occured during the last prompt. */ if (pe->error) { msg = pinentry_utf8_validate (pe->error); gcr_prompt_set_warning (prompt, msg); g_free (msg); } if (! pe->prompt && confirm) gcr_prompt_set_message (prompt, "Message"); else if (! pe->prompt && ! confirm) gcr_prompt_set_message (prompt, "Enter Passphrase"); else { msg = pinentry_utf8_validate (pe->prompt); gcr_prompt_set_message (prompt, msg); g_free (msg); } if (! confirm) gcr_prompt_set_password_new (prompt, !!pe->repeat_passphrase); if (pe->ok || pe->default_ok) { msg = pinentry_utf8_validate (pe->ok ?: pe->default_ok); gcr_prompt_set_continue_label (prompt, msg); g_free (msg); }
static GcrPrompt * open_password_prompt (GckSession *session, const gchar *keyid, const gchar *errmsg, const gchar *prompt_text, const gchar *description, gboolean confirm) { GcrPrompt *prompt; GError *error = NULL; gboolean auto_unlock; const gchar *choice; g_assert (GCK_IS_SESSION (session)); prompt = GCR_PROMPT (gcr_system_prompt_open (-1, NULL, &error)); if (prompt == NULL) { g_warning ("couldn't create prompt for gnupg passphrase: %s", egg_error_message (error)); g_error_free (error); return NULL; } gcr_prompt_set_title (prompt, _("Enter Passphrase")); gcr_prompt_set_message (prompt, prompt_text ? prompt_text : _("Enter Passphrase")); gcr_prompt_set_description (prompt, description); gcr_prompt_set_password_new (prompt, confirm); gcr_prompt_set_continue_label (prompt, _("Unlock")); if (errmsg) gcr_prompt_set_warning (prompt, errmsg); if (keyid == NULL) { gcr_prompt_set_choice_label (prompt, NULL); } else { auto_unlock = gkd_login_available (session); choice = NULL; if (auto_unlock) choice = _("Automatically unlock this key, whenever I'm logged in"); gcr_prompt_set_choice_label (prompt, choice); load_unlock_options (prompt); } return prompt; }
static void setup_password_prompt (GkdSecretCreate *self) { gchar *label; gchar *text; if (!gck_attributes_find_string (self->attributes, CKA_LABEL, &label)) label = g_strdup (_("Unnamed")); text = g_strdup_printf (_("An application wants to create a new keyring called '%s'. " "Choose the password you want to use for it."), label); g_free (label); gcr_prompt_set_message (GCR_PROMPT (self), _("Choose password for new keyring")); gcr_prompt_set_description (GCR_PROMPT (self), text); gcr_prompt_set_password_new (GCR_PROMPT (self), TRUE); g_free (text); }
gpgme_error_t seahorse_passphrase_get (gconstpointer dummy, const gchar *passphrase_hint, const char* passphrase_info, int flags, int fd) { gchar **split_uid = NULL; gchar *label = NULL; gchar *errmsg = NULL; const gchar *pass; GcrPrompt *prompt; SyncClosure sync; GError *error = NULL; gchar *msg; sync.result = NULL; sync.loop = g_main_loop_new (NULL, FALSE); gcr_system_prompt_open_async (-1, NULL, on_sync_complete, &sync); g_main_loop_run (sync.loop); g_assert (sync.result != NULL); prompt = gcr_system_prompt_open_finish (sync.result, &error); g_main_loop_unref (sync.loop); g_object_unref (sync.result); if (error != NULL) { g_message ("Couldn't open system prompt: %s", error->message); g_error_free (error); return gpgme_error (GPG_ERR_CANCELED); } if (passphrase_info && strlen(passphrase_info) < 16) flags |= SEAHORSE_PASS_NEW; if (passphrase_hint) split_uid = g_strsplit (passphrase_hint, " ", 2); if (flags & SEAHORSE_PASS_BAD) errmsg = g_strdup_printf (_("Wrong passphrase.")); if (split_uid && split_uid[0] && split_uid[1]) { if (flags & SEAHORSE_PASS_NEW) label = g_strdup_printf (_("Enter new passphrase for ā%sā"), split_uid[1]); else label = g_strdup_printf (_("Enter passphrase for ā%sā"), split_uid[1]); } else { if (flags & SEAHORSE_PASS_NEW) label = g_strdup (_("Enter new passphrase")); else label = g_strdup (_("Enter passphrase")); } g_strfreev (split_uid); gcr_prompt_set_message (prompt, _("Passphrase")); msg = utf8_validate (errmsg ? errmsg : label); gcr_prompt_set_description (prompt, msg); g_free (msg); gcr_prompt_set_password_new (prompt, flags & SEAHORSE_PASS_NEW); gcr_prompt_set_continue_label (prompt, _("OK")); gcr_prompt_set_cancel_label (prompt, _("Cancel")); g_free (label); g_free (errmsg); pass = gcr_prompt_password_run (prompt, NULL, &error); if (pass != NULL) seahorse_util_printf_fd (fd, "%s\n", pass); gcr_system_prompt_close_async (GCR_SYSTEM_PROMPT (prompt), NULL, NULL, NULL); g_object_unref (prompt); if (error != NULL) { g_message ("Couldn't prompt for password: %s", error->message); g_error_free (error); return gpgme_error (GPG_ERR_CANCELED); } return 0; }