static void prepare_unlock_object (GkmWrapPrompt *self, const gchar *label, CK_OBJECT_CLASS klass) { GkuPrompt *prompt; gchar *text; g_assert (GKM_WRAP_IS_PROMPT (self)); prompt = GKU_PROMPT (self); gku_prompt_set_title (prompt, prepare_unlock_object_title (klass)); gku_prompt_set_primary_text (prompt, prepare_unlock_object_primary (klass)); text = prepare_unlock_object_secondary (klass, label); gku_prompt_set_secondary_text (prompt, text); g_free (text); gku_prompt_hide_widget (prompt, "name_area"); gku_prompt_hide_widget (prompt, "confirm_area"); gku_prompt_show_widget (prompt, "details_area"); gku_prompt_show_widget (prompt, "password_area"); gku_prompt_show_widget (prompt, "options_area"); /* TODO: After string freeze need to add a reason */ if (!gkm_wrap_login_is_usable ()) gku_prompt_set_unlock_sensitive (prompt, GCR_UNLOCK_OPTION_ALWAYS, FALSE, NULL); }
static void prepare_unlock_keyring_other (GkmWrapPrompt *self, const gchar *label) { GkuPrompt *prompt; gchar *text; g_assert (GKM_WRAP_IS_PROMPT (self)); prompt = GKU_PROMPT (self); gku_prompt_set_title (prompt, _("Unlock Keyring")); text = g_markup_printf_escaped (_("Enter password for keyring '%s' to unlock"), label); gku_prompt_set_primary_text (prompt, text); g_free (text); text = g_markup_printf_escaped (_("An application wants access to the keyring '%s', but it is locked"), label); gku_prompt_set_secondary_text (prompt, text); g_free (text); gku_prompt_hide_widget (prompt, "name_area"); gku_prompt_hide_widget (prompt, "confirm_area"); gku_prompt_show_widget (prompt, "details_area"); gku_prompt_show_widget (prompt, "password_area"); gku_prompt_show_widget (prompt, "options_area"); if (!gkm_wrap_login_is_usable ()) gku_prompt_set_unlock_sensitive (prompt, GCR_UNLOCK_OPTION_ALWAYS, FALSE, NULL); }
static void prepare_unlock_keyring_login (GkmWrapPrompt *self) { GkuPrompt *prompt; const gchar *text; g_assert (GKM_WRAP_IS_PROMPT (self)); prompt = GKU_PROMPT (self); gku_prompt_set_title (prompt, _("Unlock Login Keyring")); text = _("Enter password to unlock your login keyring"); gku_prompt_set_primary_text (prompt, text); if (gkm_wrap_login_did_unlock_fail ()) text = _("The password you use to log in to your computer no longer matches that of your login keyring."); else text = _("The login keyring did not get unlocked when you logged into your computer."); gku_prompt_set_secondary_text (prompt, text); gku_prompt_hide_widget (prompt, "name_area"); gku_prompt_hide_widget (prompt, "confirm_area"); gku_prompt_show_widget (prompt, "password_area"); }
static void prepare_create_prompt (GkdSecretCreate *self) { GkuPrompt *prompt; gchar *label; gchar *text; g_assert (GKD_SECRET_IS_CREATE (self)); g_assert (self->pkcs11_attrs); prompt = GKU_PROMPT (self); if (!gck_attributes_find_string (self->pkcs11_attrs, CKA_LABEL, &label)) label = g_strdup (_("Unnamed")); gku_prompt_reset (prompt, TRUE); gku_prompt_set_title (prompt, _("New Keyring Password")); gku_prompt_set_primary_text (prompt, _("Choose password for new keyring")); text = g_markup_printf_escaped (_("An application wants to create a new keyring called '%s'. " "Choose the password you want to use for it."), label); gku_prompt_set_secondary_text (prompt, text); g_free (text); gku_prompt_show_widget (prompt, "password_area"); gku_prompt_show_widget (prompt, "confirm_area"); g_free (label); }
static void prepare_unlock_token (GkmWrapPrompt *self, CK_TOKEN_INFO_PTR tinfo) { GkuPrompt *prompt; gchar *label; gchar *text; g_assert (GKM_WRAP_IS_PROMPT (self)); prompt = GKU_PROMPT (self); label = g_strndup ((gchar*)tinfo->label, sizeof (tinfo->label)); g_strchomp (label); /* Build up the prompt */ gku_prompt_show_widget (prompt, "password_area"); gku_prompt_hide_widget (prompt, "confirm_area"); gku_prompt_hide_widget (prompt, "original_area"); gku_prompt_set_title (prompt, _("Unlock certificate/key storage")); gku_prompt_set_primary_text (prompt, _("Enter password to unlock the certificate/key storage")); /* TRANSLATORS: The storage is locked, and needs unlocking before the application can use it. */ text = g_strdup_printf (_("An application wants access to the certificate/key storage '%s', but it is locked"), label); gku_prompt_set_secondary_text (prompt, text); g_free (text); gku_prompt_show_widget (prompt, "details_area"); gku_prompt_show_widget (prompt, "options_area"); gku_prompt_set_unlock_sensitive (prompt, GCR_UNLOCK_OPTION_IDLE, FALSE, NULL); gku_prompt_set_unlock_sensitive (prompt, GCR_UNLOCK_OPTION_TIMEOUT, FALSE, NULL); gku_prompt_set_unlock_sensitive (prompt, GCR_UNLOCK_OPTION_ALWAYS, gkm_wrap_login_is_usable (), NULL); g_free (label); }
static void prepare_unlock_prompt (GkmWrapPrompt *self, CK_ATTRIBUTE_PTR attrs, CK_ULONG n_attrs, gboolean first) { CK_ATTRIBUTE_PTR attr; GkuPrompt *prompt; const gchar *label = NULL; CK_OBJECT_CLASS klass; g_assert (GKM_WRAP_IS_PROMPT (self)); prompt = GKU_PROMPT (self); /* Hard reset on first prompt, soft on later */ gku_prompt_reset (GKU_PROMPT (prompt), first); /* Load up the object class */ if (!gkm_attributes_find_ulong (attrs, n_attrs, CKA_CLASS, &klass)) klass = (CK_ULONG)-1; /* Load up its label */ attr = gkm_attributes_find (attrs, n_attrs, CKA_LABEL); if (attr != NULL) label = attr->pValue; /* Load up the identifier */ attr = gkm_attributes_find (attrs, n_attrs, CKA_ID); if (attr != NULL && !label) label = attr->pValue; if (!label) label = _("Unnamed"); if (klass == CKO_G_COLLECTION) { if (is_login_keyring (attrs, n_attrs)) prepare_unlock_keyring_login (self); else prepare_unlock_keyring_other (self, label); } else { prepare_unlock_object (self, label, klass); } if (!first) gku_prompt_set_warning (GKU_PROMPT (self), _("The unlock password was incorrect")); }
static gboolean auto_unlock_should_attach (GkmWrapPrompt *self) { GkuPrompt *prompt = GKU_PROMPT (self); const gchar *choice; if (!gku_prompt_has_response (prompt)) return FALSE; choice = gku_prompt_get_unlock_choice (prompt); return (choice && g_str_equal (choice, GCR_UNLOCK_OPTION_ALWAYS)); }
static void set_warning_wrong (GkdSecretUnlock *self) { g_assert (GKD_SECRET_IS_UNLOCK (self)); gku_prompt_set_warning (GKU_PROMPT (self), _("The unlock password was incorrect")); }