diff options
author | Werner Koch <[email protected]> | 2002-03-06 09:01:12 +0000 |
---|---|---|
committer | Werner Koch <[email protected]> | 2002-03-06 09:01:12 +0000 |
commit | 303b4bd6361a817227aa72a63b3a32d9c063b1d9 (patch) | |
tree | 36bd7306649f626b8b34a4c983efff801efe533b /scd/command.c | |
parent | We got more error codes than actual code ;-) (diff) | |
download | gnupg-303b4bd6361a817227aa72a63b3a32d9c063b1d9.tar.gz gnupg-303b4bd6361a817227aa72a63b3a32d9c063b1d9.zip |
Decryption using a Cryptoflex card does now work.
Diffstat (limited to 'scd/command.c')
-rw-r--r-- | scd/command.c | 35 |
1 files changed, 35 insertions, 0 deletions
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 <hexified_id> + + */ +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 } |