diff options
author | Werner Koch <wk@gnupg.org> | 2008-09-30 12:30:20 +0200 |
---|---|---|
committer | Werner Koch <wk@gnupg.org> | 2008-09-30 12:30:20 +0200 |
commit | 8381a43ca7cb277f70c3c91d66a7cf890b96ffb9 (patch) | |
tree | aef47b3f1a7c1d3f9623afad0e8e0000a2b356dd /sm | |
parent | Remove hacks which are not anymore needed since we now require Libgcrypt 1.4 (diff) | |
download | gnupg2-8381a43ca7cb277f70c3c91d66a7cf890b96ffb9.tar.xz gnupg2-8381a43ca7cb277f70c3c91d66a7cf890b96ffb9.zip |
Add gpgsm server command GETINFO agent-check.
Fix tests.
Diffstat (limited to 'sm')
-rw-r--r-- | sm/ChangeLog | 5 | ||||
-rw-r--r-- | sm/call-agent.c | 20 | ||||
-rw-r--r-- | sm/gpgsm.h | 1 | ||||
-rw-r--r-- | sm/server.c | 6 |
4 files changed, 31 insertions, 1 deletions
diff --git a/sm/ChangeLog b/sm/ChangeLog index 21e204f01..2035c543e 100644 --- a/sm/ChangeLog +++ b/sm/ChangeLog @@ -1,3 +1,8 @@ +2008-09-30 Werner Koch <wk@g10code.com> + + * server.c (cmd_getinfo): New subcommand agent-check. + * call-agent.c (gpgsm_agent_send_nop): New. + 2008-09-29 Werner Koch <wk@g10code.com> * certcheck.c (MY_GCRY_PK_ECDSA): Remove. Change users to diff --git a/sm/call-agent.c b/sm/call-agent.c index 625ca9d6e..d1dad6d07 100644 --- a/sm/call-agent.c +++ b/sm/call-agent.c @@ -328,7 +328,7 @@ gpgsm_agent_pkdecrypt (ctrl_t ctrl, const char *keygrip, const char *desc, { int rc; char line[ASSUAN_LINELENGTH]; - membuf_t data; + membuf_t data; struct cipher_parm_s cipher_parm; size_t n, len; char *p, *buf, *endp; @@ -802,3 +802,21 @@ gpgsm_agent_get_confirmation (ctrl_t ctrl, const char *desc) default_inq_cb, ctrl, NULL, NULL); return rc; } + + + +/* Return 0 if the agent is alive. This is useful to make sure that + an agent has been started. */ +gpg_error_t +gpgsm_agent_send_nop (ctrl_t ctrl) +{ + int rc; + + rc = start_agent (ctrl); + if (!rc) + rc = assuan_transact (agent_ctx, "NOP", + NULL, NULL, NULL, NULL, NULL, NULL); + return rc; +} + + diff --git a/sm/gpgsm.h b/sm/gpgsm.h index add1928ec..278c6e5fc 100644 --- a/sm/gpgsm.h +++ b/sm/gpgsm.h @@ -393,6 +393,7 @@ int gpgsm_agent_marktrusted (ctrl_t ctrl, ksba_cert_t cert); int gpgsm_agent_learn (ctrl_t ctrl); int gpgsm_agent_passwd (ctrl_t ctrl, const char *hexkeygrip, const char *desc); gpg_error_t gpgsm_agent_get_confirmation (ctrl_t ctrl, const char *desc); +gpg_error_t gpgsm_agent_send_nop (ctrl_t ctrl); /*-- call-dirmngr.c --*/ int gpgsm_dirmngr_isvalid (ctrl_t ctrl, diff --git a/sm/server.c b/sm/server.c index e38d1764a..cd2b9f69a 100644 --- a/sm/server.c +++ b/sm/server.c @@ -1016,6 +1016,7 @@ cmd_getauditlog (assuan_context_t ctx, char *line) version - Return the version of the program. pid - Return the process id of the server. + agent-check - Return success if the agent is running. */ static int @@ -1035,6 +1036,11 @@ cmd_getinfo (assuan_context_t ctx, char *line) snprintf (numbuf, sizeof numbuf, "%lu", (unsigned long)getpid ()); rc = assuan_send_data (ctx, numbuf, strlen (numbuf)); } + else if (!strcmp (line, "agent-check")) + { + ctrl_t ctrl = assuan_get_pointer (ctx); + rc = gpgsm_agent_send_nop (ctrl); + } else rc = set_error (GPG_ERR_ASS_PARAMETER, "unknown value for WHAT"); return rc; |