aboutsummaryrefslogtreecommitdiffstats
path: root/agent/divert-scd.c
diff options
context:
space:
mode:
Diffstat (limited to 'agent/divert-scd.c')
-rw-r--r--agent/divert-scd.c23
1 files changed, 12 insertions, 11 deletions
diff --git a/agent/divert-scd.c b/agent/divert-scd.c
index 40b6bcfa3..38f8173c0 100644
--- a/agent/divert-scd.c
+++ b/agent/divert-scd.c
@@ -34,7 +34,7 @@
static int
-ask_for_card (const unsigned char *shadow_info, char **r_kid)
+ask_for_card (CTRL ctrl, const unsigned char *shadow_info, char **r_kid)
{
int rc, i;
const unsigned char *s;
@@ -119,7 +119,7 @@ ask_for_card (const unsigned char *shadow_info, char **r_kid)
}
else
{
- rc = agent_get_confirmation (desc, NULL, NULL);
+ rc = agent_get_confirmation (ctrl, desc, NULL, NULL);
free (desc);
}
}
@@ -174,8 +174,7 @@ getpin_cb (void *opaque, const char *info, char *buf, size_t maxbuf)
struct pin_entry_info_s *pi;
int rc;
char *desc;
-
- assert (!opaque);
+ CTRL ctrl = opaque;
if (maxbuf < 2)
return GNUPG_Invalid_Value;
@@ -195,7 +194,7 @@ getpin_cb (void *opaque, const char *info, char *buf, size_t maxbuf)
info? info:"",
info? "')":"") < 0)
desc = NULL;
- rc = agent_askpin (desc?desc:info, pi);
+ rc = agent_askpin (ctrl, desc?desc:info, pi);
free (desc);
if (!rc)
{
@@ -210,7 +209,8 @@ getpin_cb (void *opaque, const char *info, char *buf, size_t maxbuf)
int
-divert_pksign (const unsigned char *digest, size_t digestlen, int algo,
+divert_pksign (CTRL ctrl,
+ const unsigned char *digest, size_t digestlen, int algo,
const unsigned char *shadow_info, unsigned char **r_sig)
{
int rc;
@@ -220,7 +220,7 @@ divert_pksign (const unsigned char *digest, size_t digestlen, int algo,
unsigned char *data;
size_t ndata;
- rc = ask_for_card (shadow_info, &kid);
+ rc = ask_for_card (ctrl, shadow_info, &kid);
if (rc)
return rc;
@@ -229,7 +229,7 @@ divert_pksign (const unsigned char *digest, size_t digestlen, int algo,
if (rc)
return rc;
- rc = agent_card_pksign (kid, getpin_cb, NULL,
+ rc = agent_card_pksign (kid, getpin_cb, ctrl,
data, ndata, &sigval, &siglen);
if (!rc)
*r_sig = sigval;
@@ -244,7 +244,8 @@ divert_pksign (const unsigned char *digest, size_t digestlen, int algo,
key identified by SHADOW_INFO and return the plaintext in an
allocated buffer in R_BUF. */
int
-divert_pkdecrypt (const unsigned char *cipher,
+divert_pkdecrypt (CTRL ctrl,
+ const unsigned char *cipher,
const unsigned char *shadow_info,
char **r_buf, size_t *r_len)
{
@@ -288,11 +289,11 @@ divert_pkdecrypt (const unsigned char *cipher,
ciphertext = s;
ciphertextlen = n;
- rc = ask_for_card (shadow_info, &kid);
+ rc = ask_for_card (ctrl, shadow_info, &kid);
if (rc)
return rc;
- rc = agent_card_pkdecrypt (kid, getpin_cb, NULL,
+ rc = agent_card_pkdecrypt (kid, getpin_cb, ctrl,
ciphertext, ciphertextlen,
&plaintext, &plaintextlen);
if (!rc)