Commit 51606f29 authored by Stef Walter's avatar Stef Walter

gpg-agent: Hook up the TTL cache option

 * So that when the gsettings gpg-cache-method is 'idle' or 'timeout'
   we use gpg-cache-ttl to control how long the passphrase is cached
   for.
 * This is a regression from 3.3.x

https://bugzilla.gnome.org/show_bug.cgi?id=681081
parent 24dcc36f
......@@ -322,17 +322,6 @@ load_unlock_options (GcrPrompt *prompt)
g_free (method);
}
static void
save_unlock_options (GcrPrompt *prompt)
{
GSettings *settings;
settings = gkd_gpg_agent_settings ();
if (gcr_prompt_get_choice_chosen (prompt))
g_settings_set_string (settings, "gpg-cache-method", GCR_UNLOCK_OPTION_ALWAYS);
}
static GcrPrompt *
open_password_prompt (GckSession *session,
const gchar *keyid,
......@@ -405,11 +394,14 @@ do_get_password (GckSession *session, const gchar *keyid, const gchar *errmsg,
const gchar *prompt_text, const gchar *description, gboolean confirm)
{
GckBuilder builder = GCK_BUILDER_INIT;
GSettings *settings;
GckAttributes *attrs;
gchar *password = NULL;
GcrPrompt *prompt;
gboolean chosen;
GError *error = NULL;
gint lifetime;
gchar *method;
g_assert (GCK_IS_SESSION (session));
......@@ -430,21 +422,39 @@ do_get_password (GckSession *session, const gchar *keyid, const gchar *errmsg,
}
if (password != NULL && keyid != NULL) {
settings = gkd_gpg_agent_settings ();
/* Load up the save options */
chosen = gcr_prompt_get_choice_chosen (prompt);
if (chosen)
if (chosen) {
g_settings_set_string (settings, "gpg-cache-method", GCR_UNLOCK_OPTION_ALWAYS);
gck_builder_add_string (&builder, CKA_G_COLLECTION, "login");
else
} else {
method = g_settings_get_string (settings, "gpg-cache-method");
lifetime = g_settings_get_int (settings, "gpg-cache-ttl");
if (g_strcmp0 (method, GCR_UNLOCK_OPTION_IDLE) == 0) {
gck_builder_add_boolean (&builder, CKA_GNOME_TRANSIENT, TRUE);
gck_builder_add_ulong (&builder, CKA_G_DESTRUCT_IDLE, lifetime);
} else if (g_strcmp0 (method, GCR_UNLOCK_OPTION_TIMEOUT) == 0) {
gck_builder_add_boolean (&builder, CKA_GNOME_TRANSIENT, TRUE);
gck_builder_add_ulong (&builder, CKA_G_DESTRUCT_AFTER, lifetime);
} else if (g_strcmp0 (method, GCR_UNLOCK_OPTION_SESSION)){
g_message ("Unsupported gpg-cache-method setting: %s", method);
}
gck_builder_add_string (&builder, CKA_G_COLLECTION, "session");
g_free (method);
}
/* Now actually save the password */
attrs = gck_attributes_ref_sink (gck_builder_end (&builder));
do_save_password (session, keyid, description, password, attrs);
gck_attributes_unref (attrs);
save_unlock_options (prompt);
}
g_clear_object (&prompt);
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment