|
Stef Walter |
807308f |
From 51606f299e5ee9d48096db0a5957efe26cbf7cc3 Mon Sep 17 00:00:00 2001
|
|
Stef Walter |
807308f |
From: Stef Walter <stefw@gnome.org>
|
|
Stef Walter |
807308f |
Date: Wed, 8 Aug 2012 06:06:58 +0200
|
|
Stef Walter |
807308f |
Subject: [PATCH 1/2] gpg-agent: Hook up the TTL cache option
|
|
Stef Walter |
807308f |
|
|
Stef Walter |
807308f |
* So that when the gsettings gpg-cache-method is 'idle' or 'timeout'
|
|
Stef Walter |
807308f |
we use gpg-cache-ttl to control how long the passphrase is cached
|
|
Stef Walter |
807308f |
for.
|
|
Stef Walter |
807308f |
* This is a regression from 3.3.x
|
|
Stef Walter |
807308f |
|
|
Stef Walter |
807308f |
https://bugzilla.gnome.org/show_bug.cgi?id=681081
|
|
Stef Walter |
807308f |
---
|
|
Stef Walter |
807308f |
daemon/gpg-agent/gkd-gpg-agent-ops.c | 40 ++++++++++++++++++++++--------------
|
|
Stef Walter |
807308f |
1 file changed, 25 insertions(+), 15 deletions(-)
|
|
Stef Walter |
807308f |
|
|
Stef Walter |
807308f |
diff --git a/daemon/gpg-agent/gkd-gpg-agent-ops.c b/daemon/gpg-agent/gkd-gpg-agent-ops.c
|
|
Stef Walter |
807308f |
index a0e8731..c8414fe 100644
|
|
Stef Walter |
807308f |
--- a/daemon/gpg-agent/gkd-gpg-agent-ops.c
|
|
Stef Walter |
807308f |
+++ b/daemon/gpg-agent/gkd-gpg-agent-ops.c
|
|
Stef Walter |
807308f |
@@ -322,17 +322,6 @@ load_unlock_options (GcrPrompt *prompt)
|
|
Stef Walter |
807308f |
g_free (method);
|
|
Stef Walter |
807308f |
}
|
|
Stef Walter |
807308f |
|
|
Stef Walter |
807308f |
-static void
|
|
Stef Walter |
807308f |
-save_unlock_options (GcrPrompt *prompt)
|
|
Stef Walter |
807308f |
-{
|
|
Stef Walter |
807308f |
- GSettings *settings;
|
|
Stef Walter |
807308f |
-
|
|
Stef Walter |
807308f |
- settings = gkd_gpg_agent_settings ();
|
|
Stef Walter |
807308f |
-
|
|
Stef Walter |
807308f |
- if (gcr_prompt_get_choice_chosen (prompt))
|
|
Stef Walter |
807308f |
- g_settings_set_string (settings, "gpg-cache-method", GCR_UNLOCK_OPTION_ALWAYS);
|
|
Stef Walter |
807308f |
-}
|
|
Stef Walter |
807308f |
-
|
|
Stef Walter |
807308f |
static GcrPrompt *
|
|
Stef Walter |
807308f |
open_password_prompt (GckSession *session,
|
|
Stef Walter |
807308f |
const gchar *keyid,
|
|
Stef Walter |
807308f |
@@ -405,11 +394,14 @@ do_get_password (GckSession *session, const gchar *keyid, const gchar *errmsg,
|
|
Stef Walter |
807308f |
const gchar *prompt_text, const gchar *description, gboolean confirm)
|
|
Stef Walter |
807308f |
{
|
|
Stef Walter |
807308f |
GckBuilder builder = GCK_BUILDER_INIT;
|
|
Stef Walter |
807308f |
+ GSettings *settings;
|
|
Stef Walter |
807308f |
GckAttributes *attrs;
|
|
Stef Walter |
807308f |
gchar *password = NULL;
|
|
Stef Walter |
807308f |
GcrPrompt *prompt;
|
|
Stef Walter |
807308f |
gboolean chosen;
|
|
Stef Walter |
807308f |
GError *error = NULL;
|
|
Stef Walter |
807308f |
+ gint lifetime;
|
|
Stef Walter |
807308f |
+ gchar *method;
|
|
Stef Walter |
807308f |
|
|
Stef Walter |
807308f |
g_assert (GCK_IS_SESSION (session));
|
|
Stef Walter |
807308f |
|
|
Stef Walter |
807308f |
@@ -430,21 +422,39 @@ do_get_password (GckSession *session, const gchar *keyid, const gchar *errmsg,
|
|
Stef Walter |
807308f |
}
|
|
Stef Walter |
807308f |
|
|
Stef Walter |
807308f |
if (password != NULL && keyid != NULL) {
|
|
Stef Walter |
807308f |
+ settings = gkd_gpg_agent_settings ();
|
|
Stef Walter |
807308f |
|
|
Stef Walter |
807308f |
/* Load up the save options */
|
|
Stef Walter |
807308f |
chosen = gcr_prompt_get_choice_chosen (prompt);
|
|
Stef Walter |
807308f |
|
|
Stef Walter |
807308f |
- if (chosen)
|
|
Stef Walter |
807308f |
+ if (chosen) {
|
|
Stef Walter |
807308f |
+ g_settings_set_string (settings, "gpg-cache-method", GCR_UNLOCK_OPTION_ALWAYS);
|
|
Stef Walter |
807308f |
gck_builder_add_string (&builder, CKA_G_COLLECTION, "login");
|
|
Stef Walter |
807308f |
- else
|
|
Stef Walter |
807308f |
+
|
|
Stef Walter |
807308f |
+ } else {
|
|
Stef Walter |
807308f |
+ method = g_settings_get_string (settings, "gpg-cache-method");
|
|
Stef Walter |
807308f |
+ lifetime = g_settings_get_int (settings, "gpg-cache-ttl");
|
|
Stef Walter |
807308f |
+
|
|
Stef Walter |
807308f |
+ if (g_strcmp0 (method, GCR_UNLOCK_OPTION_IDLE) == 0) {
|
|
Stef Walter |
807308f |
+ gck_builder_add_boolean (&builder, CKA_GNOME_TRANSIENT, TRUE);
|
|
Stef Walter |
807308f |
+ gck_builder_add_ulong (&builder, CKA_G_DESTRUCT_IDLE, lifetime);
|
|
Stef Walter |
807308f |
+
|
|
Stef Walter |
807308f |
+ } else if (g_strcmp0 (method, GCR_UNLOCK_OPTION_TIMEOUT) == 0) {
|
|
Stef Walter |
807308f |
+ gck_builder_add_boolean (&builder, CKA_GNOME_TRANSIENT, TRUE);
|
|
Stef Walter |
807308f |
+ gck_builder_add_ulong (&builder, CKA_G_DESTRUCT_AFTER, lifetime);
|
|
Stef Walter |
807308f |
+
|
|
Stef Walter |
807308f |
+ } else if (g_strcmp0 (method, GCR_UNLOCK_OPTION_SESSION)){
|
|
Stef Walter |
807308f |
+ g_message ("Unsupported gpg-cache-method setting: %s", method);
|
|
Stef Walter |
807308f |
+ }
|
|
Stef Walter |
807308f |
+
|
|
Stef Walter |
807308f |
gck_builder_add_string (&builder, CKA_G_COLLECTION, "session");
|
|
Stef Walter |
807308f |
+ g_free (method);
|
|
Stef Walter |
807308f |
+ }
|
|
Stef Walter |
807308f |
|
|
Stef Walter |
807308f |
/* Now actually save the password */
|
|
Stef Walter |
807308f |
attrs = gck_attributes_ref_sink (gck_builder_end (&builder));
|
|
Stef Walter |
807308f |
do_save_password (session, keyid, description, password, attrs);
|
|
Stef Walter |
807308f |
gck_attributes_unref (attrs);
|
|
Stef Walter |
807308f |
-
|
|
Stef Walter |
807308f |
- save_unlock_options (prompt);
|
|
Stef Walter |
807308f |
}
|
|
Stef Walter |
807308f |
|
|
Stef Walter |
807308f |
g_clear_object (&prompt);
|
|
Stef Walter |
807308f |
--
|
|
Stef Walter |
807308f |
1.7.11.4
|
|
Stef Walter |
807308f |
|