diff options
author | Werner Koch <[email protected]> | 2013-08-26 15:29:54 +0000 |
---|---|---|
committer | Werner Koch <[email protected]> | 2013-08-28 15:40:32 +0000 |
commit | 780ba3233618393835970bac4cf8aab713f4d7fa (patch) | |
tree | 646f0a60cff18fb3743abeecc46bb2a21877937c /g10/pubkey-enc.c | |
parent | agent: Fix two compiler warnings. (diff) | |
download | gnupg-780ba3233618393835970bac4cf8aab713f4d7fa.tar.gz gnupg-780ba3233618393835970bac4cf8aab713f4d7fa.zip |
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 <[email protected]>
Diffstat (limited to 'g10/pubkey-enc.c')
-rw-r--r-- | g10/pubkey-enc.c | 6 |
1 files changed, 3 insertions, 3 deletions
diff --git a/g10/pubkey-enc.c b/g10/pubkey-enc.c index a328e1adc..1e7255711 100644 --- a/g10/pubkey-enc.c +++ b/g10/pubkey-enc.c @@ -146,7 +146,7 @@ get_it (PKT_pubkey_enc *enc, DEK *dek, PKT_public_key *sk, u32 *keyid) unsigned int n; size_t nframe; u16 csum, csum2; - int card = 0; + int padding; gcry_sexp_t s_data; char *desc; char *keygrip; @@ -203,7 +203,7 @@ get_it (PKT_pubkey_enc *enc, DEK *dek, PKT_public_key *sk, u32 *keyid) desc = gpg_format_keydesc (sk, 0, 1); err = agent_pkdecrypt (NULL, keygrip, desc, sk->keyid, sk->main_keyid, sk->pubkey_algo, - s_data, &frame, &nframe); + s_data, &frame, &nframe, &padding); xfree (desc); gcry_sexp_release (s_data); if (err) @@ -270,7 +270,7 @@ get_it (PKT_pubkey_enc *enc, DEK *dek, PKT_public_key *sk, u32 *keyid) } else { - if (!card) + if (padding) { if (n + 7 > nframe) { |