mirror of
git://git.gnupg.org/gnupg.git
synced 2025-07-02 22:46:30 +02:00
g10,agent: Support CONFIRM for --delete-key.
* agent/call-pinentry.c (agent_get_confirmation): Add call of pinentry_loopback_confirm. (agent_popup_message_start): Likewise. (agent_popup_message_stop): Return if it's loopback mode. * agent/command.c (pinentry_loopback_confirm): New. * g10/call-agent.c (default_inq_cb): Support "CONFIRM" inquery when PINENTRY_MODE_LOOPBACK mode. (confirm_status_cb): New. (agent_delete_key): Supply confirm_status_cb to set the description string for confirmation. -- In the Assuan communication, we introduce new interaction: [gpg] [gpg-agent] --- CMD: PKDECRYPT --> <-- STATUS: SETDESC "..." <-- STATUS: SETOK "..." <-- STATUS: SETNOTOK "..." <-- INQUERY: CONFIRM 0/1 (0 for display, 1 for user query) --- INQUERY-result: --> <-- RESULT: ... GnuPG-bug-id: 3465 Signed-off-by: NIIBE Yutaka <gniibe@fsij.org>
This commit is contained in:
parent
eaf3b89d11
commit
20acc7c022
3 changed files with 102 additions and 3 deletions
|
@ -3680,3 +3680,26 @@ pinentry_loopback(ctrl_t ctrl, const char *keyword,
|
|||
assuan_end_confidential (ctx);
|
||||
return rc;
|
||||
}
|
||||
|
||||
/* Helper for the pinentry loopback mode to ask confirmation
|
||||
or just to show message. */
|
||||
gpg_error_t
|
||||
pinentry_loopback_confirm (ctrl_t ctrl, const char *desc,
|
||||
int ask_confirmation,
|
||||
const char *ok, const char *notok)
|
||||
{
|
||||
gpg_error_t err = 0;
|
||||
assuan_context_t ctx = ctrl->server_local->assuan_ctx;
|
||||
|
||||
if (desc)
|
||||
err = print_assuan_status (ctx, "SETDESC", "%s", desc);
|
||||
if (!err && ok)
|
||||
err = print_assuan_status (ctx, "SETOK", "%s", ok);
|
||||
if (!err && notok)
|
||||
err = print_assuan_status (ctx, "SETNOTOK", "%s", notok);
|
||||
|
||||
if (!err)
|
||||
err = assuan_inquire (ctx, ask_confirmation ? "CONFIRM 1" : "CONFIRM 0",
|
||||
NULL, NULL, 0);
|
||||
return err;
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue