mirror of
git://git.gnupg.org/gnupg.git
synced 2025-03-28 22:49:59 +01:00
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 <gniibe@fsij.org> (cherry picked from commit ae966bbe9b16ed68a51391afdde615339755e22d)
This commit is contained in:
parent
a7b2a87f94
commit
77a285a0a9
@ -1568,19 +1568,24 @@ static const char hlp_clear_passphrase[] =
|
|||||||
"may be used to invalidate the cache entry for a passphrase. The\n"
|
"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"
|
"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"
|
"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
|
static gpg_error_t
|
||||||
cmd_clear_passphrase (assuan_context_t ctx, char *line)
|
cmd_clear_passphrase (assuan_context_t ctx, char *line)
|
||||||
{
|
{
|
||||||
ctrl_t ctrl = assuan_get_pointer (ctx);
|
ctrl_t ctrl = assuan_get_pointer (ctx);
|
||||||
char *cacheid = NULL;
|
char *cacheid = NULL;
|
||||||
char *p;
|
char *p;
|
||||||
int opt_normal;
|
cache_mode_t cache_mode = CACHE_MODE_USER;
|
||||||
|
|
||||||
if (ctrl->restricted)
|
if (ctrl->restricted)
|
||||||
return leave_cmd (ctx, gpg_error (GPG_ERR_FORBIDDEN));
|
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);
|
line = skip_options (line);
|
||||||
|
|
||||||
/* parse the stuff */
|
/* parse the stuff */
|
||||||
@ -1593,12 +1598,9 @@ cmd_clear_passphrase (assuan_context_t ctx, char *line)
|
|||||||
if (!*cacheid || strlen (cacheid) > 50)
|
if (!*cacheid || strlen (cacheid) > 50)
|
||||||
return set_error (GPG_ERR_ASS_PARAMETER, "invalid length of cacheID");
|
return set_error (GPG_ERR_ASS_PARAMETER, "invalid length of cacheID");
|
||||||
|
|
||||||
agent_put_cache (ctrl, cacheid,
|
agent_put_cache (ctrl, cacheid, cache_mode, NULL, 0);
|
||||||
opt_normal ? CACHE_MODE_NORMAL : CACHE_MODE_USER,
|
|
||||||
NULL, 0);
|
|
||||||
|
|
||||||
agent_clear_passphrase (ctrl, cacheid,
|
agent_clear_passphrase (ctrl, cacheid, cache_mode);
|
||||||
opt_normal ? CACHE_MODE_NORMAL : CACHE_MODE_USER);
|
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user