aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorNIIBE Yutaka <[email protected]>2019-01-25 03:08:09 +0000
committerWerner Koch <[email protected]>2019-03-07 09:34:34 +0000
commit77a285a0a94994ee9b42289897f9bf3075c7192d (patch)
tree9185fd610a960e6daefa9b26353113d83adfeea9
parentgpgv: Improve documentation for keyring choices (diff)
downloadgnupg-77a285a0a94994ee9b42289897f9bf3075c7192d.tar.gz
gnupg-77a285a0a94994ee9b42289897f9bf3075c7192d.zip
agent: Support --mode=ssh option for CLEAR_PASSPHRASE.
* agent/command.c (cmd_clear_passphrase): Add support for SSH. -- GnuPG-bug-id: 4340 Signed-off-by: NIIBE Yutaka <[email protected]> (cherry picked from commit ae966bbe9b16ed68a51391afdde615339755e22d)
-rw-r--r--agent/command.c18
1 files changed, 10 insertions, 8 deletions
diff --git a/agent/command.c b/agent/command.c
index adb2c00f1..f8041783c 100644
--- a/agent/command.c
+++ b/agent/command.c
@@ -1568,19 +1568,24 @@ static const char hlp_clear_passphrase[] =
"may be used to invalidate the cache entry for a passphrase. The\n"
"function returns with OK even when there is no cached passphrase.\n"
"The --mode=normal option is used to clear an entry for a cacheid\n"
- "added by the agent.\n";
+ "added by the agent. The --mode=ssh option is used for a cacheid\n"
+ "added for ssh.\n";
static gpg_error_t
cmd_clear_passphrase (assuan_context_t ctx, char *line)
{
ctrl_t ctrl = assuan_get_pointer (ctx);
char *cacheid = NULL;
char *p;
- int opt_normal;
+ cache_mode_t cache_mode = CACHE_MODE_USER;
if (ctrl->restricted)
return leave_cmd (ctx, gpg_error (GPG_ERR_FORBIDDEN));
- opt_normal = has_option (line, "--mode=normal");
+ if (has_option (line, "--mode=normal"))
+ cache_mode = CACHE_MODE_NORMAL;
+ else if (has_option (line, "--mode=ssh"))
+ cache_mode = CACHE_MODE_SSH;
+
line = skip_options (line);
/* parse the stuff */
@@ -1593,12 +1598,9 @@ cmd_clear_passphrase (assuan_context_t ctx, char *line)
if (!*cacheid || strlen (cacheid) > 50)
return set_error (GPG_ERR_ASS_PARAMETER, "invalid length of cacheID");
- agent_put_cache (ctrl, cacheid,
- opt_normal ? CACHE_MODE_NORMAL : CACHE_MODE_USER,
- NULL, 0);
+ agent_put_cache (ctrl, cacheid, cache_mode, NULL, 0);
- agent_clear_passphrase (ctrl, cacheid,
- opt_normal ? CACHE_MODE_NORMAL : CACHE_MODE_USER);
+ agent_clear_passphrase (ctrl, cacheid, cache_mode);
return 0;
}