aboutsummaryrefslogtreecommitdiffstats
path: root/agent/call-scd.c
diff options
context:
space:
mode:
authorWerner Koch <[email protected]>2019-03-05 11:08:27 +0000
committerWerner Koch <[email protected]>2019-03-05 11:08:27 +0000
commitbcc89a6df24c79690436340f65c7ab13c65c2c45 (patch)
tree468d19f96c0648f2c210ad57009703596ac0e280 /agent/call-scd.c
parentsm: Print Yubikey attestation extensions with --dump-cert. (diff)
downloadgnupg-bcc89a6df24c79690436340f65c7ab13c65c2c45.tar.gz
gnupg-bcc89a6df24c79690436340f65c7ab13c65c2c45.zip
agent: Minor change to the KEYTOCARD command.
* agent/command.c (cmd_keytocard): Make timestamp optional. Use modern parser function. * agent/call-scd.c (agent_card_writekey): Rename an arg and for clarity return gpg_error_t instead of int. * agent/divert-scd.c (divert_writekey): Ditto. Signed-off-by: Werner Koch <[email protected]>
Diffstat (limited to 'agent/call-scd.c')
-rw-r--r--agent/call-scd.c23
1 files changed, 13 insertions, 10 deletions
diff --git a/agent/call-scd.c b/agent/call-scd.c
index d0d4794a4..1189bd477 100644
--- a/agent/call-scd.c
+++ b/agent/call-scd.c
@@ -1075,23 +1075,26 @@ inq_writekey_parms (void *opaque, const char *line)
}
-int
+/* Call scd to write a key to a card under the id KEYREF. */
+gpg_error_t
agent_card_writekey (ctrl_t ctrl, int force, const char *serialno,
- const char *id, const char *keydata, size_t keydatalen,
+ const char *keyref,
+ const char *keydata, size_t keydatalen,
int (*getpin_cb)(void *, const char *,
const char *, char*, size_t),
void *getpin_cb_arg)
{
- int rc;
+ gpg_error_t err;
char line[ASSUAN_LINELENGTH];
struct inq_needpin_parm_s parms;
(void)serialno;
- rc = start_scd (ctrl);
- if (rc)
- return rc;
- snprintf (line, DIM(line), "WRITEKEY %s%s", force ? "--force " : "", id);
+ err = start_scd (ctrl);
+ if (err)
+ return err;
+
+ snprintf (line, DIM(line), "WRITEKEY %s%s", force ? "--force " : "", keyref);
parms.ctx = ctrl->scd_local->ctx;
parms.getpin_cb = getpin_cb;
parms.getpin_cb_arg = getpin_cb_arg;
@@ -1100,9 +1103,9 @@ agent_card_writekey (ctrl_t ctrl, int force, const char *serialno,
parms.keydata = keydata;
parms.keydatalen = keydatalen;
- rc = assuan_transact (ctrl->scd_local->ctx, line, NULL, NULL,
- inq_writekey_parms, &parms, NULL, NULL);
- return unlock_scd (ctrl, rc);
+ err = assuan_transact (ctrl->scd_local->ctx, line, NULL, NULL,
+ inq_writekey_parms, &parms, NULL, NULL);
+ return unlock_scd (ctrl, err);
}