diff options
author | Werner Koch <[email protected]> | 2002-08-16 14:24:38 +0000 |
---|---|---|
committer | Werner Koch <[email protected]> | 2002-08-16 14:24:38 +0000 |
commit | ca7ed726a7f35a3154ecdb8f6f9e4f848cc963b5 (patch) | |
tree | 836406c1c3a75e7a8940a0eab6e95883706f6ea3 /agent/call-scd.c | |
parent | * assuan.h: Renamed Bad_Certificate_Path to Bad_Certificate_Chain. (diff) | |
download | gnupg-ca7ed726a7f35a3154ecdb8f6f9e4f848cc963b5.tar.gz gnupg-ca7ed726a7f35a3154ecdb8f6f9e4f848cc963b5.zip |
* call-scd.c (learn_status_cb): Handle CERTINFO status.
(agent_card_learn): Add args for certinfo cb.
* learncard.c (release_certinfo,certinfo_cb): New.
(send_cert_back): New. With factored out code from ..
(agent_handle_learn): here. Return certinfo stuff.
Diffstat (limited to 'agent/call-scd.c')
-rw-r--r-- | agent/call-scd.c | 15 |
1 files changed, 13 insertions, 2 deletions
diff --git a/agent/call-scd.c b/agent/call-scd.c index af8258a0f..a9123daca 100644 --- a/agent/call-scd.c +++ b/agent/call-scd.c @@ -55,6 +55,8 @@ static pth_mutex_t scd_lock = PTH_MUTEX_INIT; struct learn_parm_s { void (*kpinfo_cb)(void*, const char *); void *kpinfo_cb_arg; + void (*certinfo_cb)(void*, const char *); + void *certinfo_cb_arg; }; struct inq_needpin_s { @@ -230,7 +232,11 @@ learn_status_cb (void *opaque, const char *line) ; while (spacep (line)) line++; - if (keywordlen == 11 && !memcmp (keyword, "KEYPAIRINFO", keywordlen)) + if (keywordlen == 8 && !memcmp (keyword, "CERTINFO", keywordlen)) + { + parm->certinfo_cb (parm->certinfo_cb_arg, line); + } + else if (keywordlen == 11 && !memcmp (keyword, "KEYPAIRINFO", keywordlen)) { parm->kpinfo_cb (parm->kpinfo_cb_arg, line); } @@ -247,7 +253,10 @@ learn_status_cb (void *opaque, const char *line) /* Perform the learn command and return a list of all private keys stored on the card. */ int -agent_card_learn (void (*kpinfo_cb)(void*, const char *), void *kpinfo_cb_arg) +agent_card_learn (void (*kpinfo_cb)(void*, const char *), + void *kpinfo_cb_arg, + void (*certinfo_cb)(void*, const char *), + void *certinfo_cb_arg) { int rc; struct learn_parm_s parm; @@ -259,6 +268,8 @@ agent_card_learn (void (*kpinfo_cb)(void*, const char *), void *kpinfo_cb_arg) memset (&parm, 0, sizeof parm); parm.kpinfo_cb = kpinfo_cb; parm.kpinfo_cb_arg = kpinfo_cb_arg; + parm.certinfo_cb = certinfo_cb; + parm.certinfo_cb_arg = certinfo_cb_arg; rc = assuan_transact (scd_ctx, "LEARN --force", NULL, NULL, NULL, NULL, learn_status_cb, &parm); |