From 780ba3233618393835970bac4cf8aab713f4d7fa Mon Sep 17 00:00:00 2001 From: Werner Koch Date: Mon, 26 Aug 2013 17:29:54 +0200 Subject: gpg: Make decryption with the OpenPGP card work. * scd/app-common.h (APP_DECIPHER_INFO_NOPAD): New. * scd/app-openpgp.c (do_decipher): Add arg R_INFO. * scd/app-nks.c (do_decipher): Add arg R_INFO as a dummy. * scd/app.c (app_decipher): Add arg R_INFO. * scd/command.c (cmd_pkdecrypt): Print status line "PADDING". * agent/call-scd.c (padding_info_cb): New. (agent_card_pkdecrypt): Add arg R_PADDING. * agent/divert-scd.c (divert_pkdecrypt): Ditto. * agent/pkdecrypt.c (agent_pkdecrypt): Ditto. * agent/command.c (cmd_pkdecrypt): Print status line "PADDING". * g10/call-agent.c (padding_info_cb): New. (agent_pkdecrypt): Add arg R_PADDING. * g10/pubkey-enc.c (get_it): Use padding info. -- Decryption using a card never worked in gpg 2.1 because the information whether the pkcs#1 padding needs to be removed was not available. Gpg < 2.1 too this info from the secret sub key but that has gone in 2.1. Signed-off-by: Werner Koch --- scd/app.c | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) (limited to 'scd/app.c') diff --git a/scd/app.c b/scd/app.c index e6a663e1e..a0bb5f5ac 100644 --- a/scd/app.c +++ b/scd/app.c @@ -801,10 +801,13 @@ app_decipher (app_t app, const char *keyidstr, gpg_error_t (*pincb)(void*, const char *, char **), void *pincb_arg, const void *indata, size_t indatalen, - unsigned char **outdata, size_t *outdatalen ) + unsigned char **outdata, size_t *outdatalen, + unsigned int *r_info) { gpg_error_t err; + *r_info = 0; + if (!app || !indata || !indatalen || !outdata || !outdatalen || !pincb) return gpg_error (GPG_ERR_INV_VALUE); if (!app->ref_count) @@ -817,7 +820,8 @@ app_decipher (app_t app, const char *keyidstr, err = app->fnc.decipher (app, keyidstr, pincb, pincb_arg, indata, indatalen, - outdata, outdatalen); + outdata, outdatalen, + r_info); unlock_reader (app->slot); if (opt.verbose) log_info ("operation decipher result: %s\n", gpg_strerror (err)); -- cgit v1.2.3