diff options
Diffstat (limited to '')
-rw-r--r-- | scd/command.c | 10 |
1 files changed, 9 insertions, 1 deletions
diff --git a/scd/command.c b/scd/command.c index d5cc32cd9..05b50b935 100644 --- a/scd/command.c +++ b/scd/command.c @@ -1089,6 +1089,7 @@ cmd_pkdecrypt (assuan_context_t ctx, char *line) unsigned char *outdata; size_t outdatalen; char *keyidstr; + unsigned int infoflags; if ( IS_LOCKED (ctrl) ) return gpg_error (GPG_ERR_LOCKED); @@ -1103,7 +1104,7 @@ cmd_pkdecrypt (assuan_context_t ctx, char *line) keyidstr, pin_cb, ctx, ctrl->in_data.value, ctrl->in_data.valuelen, - &outdata, &outdatalen); + &outdata, &outdatalen, &infoflags); xfree (keyidstr); if (rc) @@ -1112,6 +1113,13 @@ cmd_pkdecrypt (assuan_context_t ctx, char *line) } else { + /* If the card driver told us that there is no padding, send a + status line. If there is a padding it is assumed that the + caller knows what padding is used. It would have been better + to always send that information but for backward + compatibility we can't do that. */ + if ((infoflags & APP_DECIPHER_INFO_NOPAD)) + send_status_direct (ctrl, "PADDING", "0"); rc = assuan_send_data (ctx, outdata, outdatalen); xfree (outdata); if (rc) |