From 303b4bd6361a817227aa72a63b3a32d9c063b1d9 Mon Sep 17 00:00:00 2001 From: Werner Koch Date: Wed, 6 Mar 2002 09:01:12 +0000 Subject: Decryption using a Cryptoflex card does now work. --- scd/command.c | 35 +++++++++++++++++++++++++++++++++++ 1 file changed, 35 insertions(+) (limited to 'scd/command.c') diff --git a/scd/command.c b/scd/command.c index a171de3df..30191dd95 100644 --- a/scd/command.c +++ b/scd/command.c @@ -400,6 +400,40 @@ cmd_pksign (ASSUAN_CONTEXT ctx, char *line) return map_to_assuan_status (rc); } +/* PKDECRYPT + + */ +static int +cmd_pkdecrypt (ASSUAN_CONTEXT ctx, char *line) +{ + CTRL ctrl = assuan_get_pointer (ctx); + int rc; + void *outdata; + size_t outdatalen; + + if ((rc = open_card (ctrl))) + return rc; + + rc = card_decipher (ctrl->card_ctx, + line, + pin_cb, ctx, + ctrl->in_data.value, ctrl->in_data.valuelen, + &outdata, &outdatalen); + if (rc) + { + log_error ("card_create_signature failed: %s\n", gnupg_strerror (rc)); + } + else + { + rc = assuan_send_data (ctx, outdata, outdatalen); + xfree (outdata); + if (rc) + return rc; /* that is already an assuan error code */ + } + + return map_to_assuan_status (rc); +} + @@ -417,6 +451,7 @@ register_commands (ASSUAN_CONTEXT ctx) { "READCERT", 0, cmd_readcert }, { "SETDATA", 0, cmd_setdata }, { "PKSIGN", 0, cmd_pksign }, + { "PKDECRYPT", 0,cmd_pkdecrypt }, { "", ASSUAN_CMD_INPUT, NULL }, { "", ASSUAN_CMD_OUTPUT, NULL }, { NULL } -- cgit v1.2.3