diff options
author | Werner Koch <[email protected]> | 2015-06-29 09:03:58 +0000 |
---|---|---|
committer | Werner Koch <[email protected]> | 2015-06-29 09:06:41 +0000 |
commit | 2c9c46e2a2b8f9a1bdc1ef46a135b5fc7d1a8073 (patch) | |
tree | e37f62f94baf893e462490dd9c874179c1ded14e /sm/server.c | |
parent | scd: Support button flag and AES key data for OpenPGPcard v3.0. (diff) | |
download | gnupg-2c9c46e2a2b8f9a1bdc1ef46a135b5fc7d1a8073.tar.gz gnupg-2c9c46e2a2b8f9a1bdc1ef46a135b5fc7d1a8073.zip |
gpgsm: Add command option "offline".
* sm/server.c (option_handler): Add "offline".
(cmd_getinfo): Ditto.
* sm/certchain.c (is_cert_still_valid):
(do_validate_chain):
* sm/gpgsm.c (gpgsm_init_default_ctrl): Default "offline" to the value
of --disable-dirmngr.
* sm/call-dirmngr.c (start_dirmngr_ext): Better also check for
ctrl->offline.
--
Adding this option makes it easier to implement the corresponding
feature in gpgme.
Signed-off-by: Werner Koch <[email protected]>
Diffstat (limited to 'sm/server.c')
-rw-r--r-- | sm/server.c | 19 |
1 files changed, 17 insertions, 2 deletions
diff --git a/sm/server.c b/sm/server.c index 0bee5b205..571b0794b 100644 --- a/sm/server.c +++ b/sm/server.c @@ -309,6 +309,16 @@ option_handler (assuan_context_t ctx, const char *key, const char *value) { ctrl->server_local->no_encrypt_to = 1; } + else if (!strcmp (key, "offline")) + { + /* We ignore this option if gpgsm has been started with + --disable-dirmngr (which also sets offline). */ + if (!opt.disable_dirmngr) + { + int i = *value? !!atoi (value) : 1; + ctrl->offline = i; + } + } else err = gpg_error (GPG_ERR_UNKNOWN_OPTION); @@ -1093,10 +1103,12 @@ static const char hlp_getinfo[] = " pid - Return the process id of the server.\n" " agent-check - Return success if the agent is running.\n" " cmd_has_option CMD OPT\n" - " - Returns OK if the command CMD implements the option OPT."; + " - Returns OK if the command CMD implements the option OPT.\n" + " offline - Returns OK if the conenction is in offline mode."; static gpg_error_t cmd_getinfo (assuan_context_t ctx, char *line) { + ctrl_t ctrl = assuan_get_pointer (ctx); int rc = 0; if (!strcmp (line, "version")) @@ -1113,7 +1125,6 @@ cmd_getinfo (assuan_context_t ctx, char *line) } else if (!strcmp (line, "agent-check")) { - ctrl_t ctrl = assuan_get_pointer (ctx); rc = gpgsm_agent_send_nop (ctrl); } else if (!strncmp (line, "cmd_has_option", 14) @@ -1148,6 +1159,10 @@ cmd_getinfo (assuan_context_t ctx, char *line) } } } + else if (!strcmp (line, "offline")) + { + rc = ctrl->offline? 0 : gpg_error (GPG_ERR_GENERAL); + } else rc = set_error (GPG_ERR_ASS_PARAMETER, "unknown value for WHAT"); |