mirror of
git://git.gnupg.org/gnupg.git
synced 2025-01-03 12:11:33 +01:00
agent: When the password cache is cleared, also clear the ext. cache.
* agent/agent.h (agent_clear_passphrase): New declaration. * agent/call-pinentry.c (agent_clear_passphrase): New function. * agent/command.c (cmd_clear_passphrase): Call agent_clear_passphrase. -- Signed-off-by: Neal H. Walfield <neal@g10code.com>
This commit is contained in:
parent
e201c20f25
commit
3a9305439b
@ -374,7 +374,8 @@ int agent_show_message (ctrl_t ctrl, const char *desc, const char *ok_btn);
|
||||
int agent_popup_message_start (ctrl_t ctrl,
|
||||
const char *desc, const char *ok_btn);
|
||||
void agent_popup_message_stop (ctrl_t ctrl);
|
||||
|
||||
int agent_clear_passphrase (ctrl_t ctrl,
|
||||
const char *keyinfo, cache_mode_t cache_mode);
|
||||
|
||||
/*-- cache.c --*/
|
||||
void initialize_module_cache (void);
|
||||
|
@ -1416,3 +1416,29 @@ agent_popup_message_stop (ctrl_t ctrl)
|
||||
/* Now we can close the connection. */
|
||||
unlock_pinentry (0);
|
||||
}
|
||||
|
||||
int
|
||||
agent_clear_passphrase (ctrl_t ctrl,
|
||||
const char *keyinfo, cache_mode_t cache_mode)
|
||||
{
|
||||
int rc;
|
||||
char line[ASSUAN_LINELENGTH];
|
||||
|
||||
if (! (keyinfo && (cache_mode == CACHE_MODE_NORMAL
|
||||
|| cache_mode == CACHE_MODE_USER
|
||||
|| cache_mode == CACHE_MODE_SSH)))
|
||||
return gpg_error (GPG_ERR_NOT_SUPPORTED);
|
||||
|
||||
rc = start_pinentry (ctrl);
|
||||
if (rc)
|
||||
return rc;
|
||||
|
||||
snprintf (line, DIM(line)-1, "CLEARPASSPHRASE %c/%s",
|
||||
cache_mode == CACHE_MODE_USER? 'u' :
|
||||
cache_mode == CACHE_MODE_SSH? 's' : 'n',
|
||||
keyinfo);
|
||||
rc = assuan_transact (entry_ctx, line,
|
||||
NULL, NULL, NULL, NULL, NULL, NULL);
|
||||
|
||||
return unlock_pinentry (rc);
|
||||
}
|
||||
|
@ -1602,6 +1602,10 @@ cmd_clear_passphrase (assuan_context_t ctx, char *line)
|
||||
|
||||
agent_put_cache (cacheid, opt_normal ? CACHE_MODE_NORMAL : CACHE_MODE_USER,
|
||||
NULL, 0);
|
||||
|
||||
agent_clear_passphrase (ctrl, cacheid,
|
||||
opt_normal ? CACHE_MODE_NORMAL : CACHE_MODE_USER);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user