From 113b8e15362665ce127ff4bda14521567a1eebff Mon Sep 17 00:00:00 2001 From: Werner Koch Date: Tue, 9 Mar 2010 11:15:53 +0000 Subject: [PATCH] Hack to start the agent as a side-effect of a secret key listing --- src/ChangeLog | 4 ++++ src/engine-gpgsm.c | 12 ++++++++++++ 2 files changed, 16 insertions(+) diff --git a/src/ChangeLog b/src/ChangeLog index 57a09ff..2582893 100644 --- a/src/ChangeLog +++ b/src/ChangeLog @@ -1,3 +1,7 @@ +2010-03-09 Werner Koch + + * engine-gpgsm.c (gpgsm_keylist): Try to start the agent. + 2010-02-17 Werner Koch * posix-io.c (notify_table): Change implementation. diff --git a/src/engine-gpgsm.c b/src/engine-gpgsm.c index 88039d7..76760d5 100644 --- a/src/engine-gpgsm.c +++ b/src/engine-gpgsm.c @@ -1538,6 +1538,18 @@ gpgsm_keylist (void *engine, const char *pattern, int secret_only, if (!pattern) pattern = ""; + /* Hack to make sure that the agent is started. Only if the agent + has been started an application may connect to the agent via + GPGME_PROTOCOL_ASSUAN - for example to look for smartcards. We + do this only if a secret key listing has been requested. In + general this is not needed because a secret key listing starts + the agent. However on a fresh installation no public keys are + available and thus there is no need for gpgsm to ask the agent + whether a secret key exists for the public key. */ + if (secret_only) + gpgsm_assuan_simple_command (gpgsm->assuan_ctx, "GETINFO agent-check", + NULL, NULL); + /* Always send list-mode option because RESET does not reset it. */ if (asprintf (&line, "OPTION list-mode=%d", (list_mode & 3)) < 0) return gpg_error_from_errno (errno); -- 2.26.2