diff options
author | Werner Koch <[email protected]> | 2009-08-20 08:41:15 +0000 |
---|---|---|
committer | Werner Koch <[email protected]> | 2009-08-20 08:41:15 +0000 |
commit | 7cde92403c2134a20818a9c499b60450a3addfcb (patch) | |
tree | f7e9acb88cd05bfd6e142bfde026f0405876e290 /g10/mainproc.c | |
parent | Fixed bug#920 (diff) | |
download | gnupg-7cde92403c2134a20818a9c499b60450a3addfcb.tar.gz gnupg-7cde92403c2134a20818a9c499b60450a3addfcb.zip |
2009-08-20 Daiki Ueno <[email protected]>
* mainproc.c (proc_encrypted): Clear passphrase cached with S2K
cache ID if decryption failed.
* passphrase.c (passphrase_to_dek_ext): Set dek->s2k_cacheid.
* gpgv.c (passphrase_clear_cache): New stub.
Diffstat (limited to 'g10/mainproc.c')
-rw-r--r-- | g10/mainproc.c | 7 |
1 files changed, 7 insertions, 0 deletions
diff --git a/g10/mainproc.c b/g10/mainproc.c index 31d338529..4a8df6f57 100644 --- a/g10/mainproc.c +++ b/g10/mainproc.c @@ -586,6 +586,13 @@ proc_encrypted( CTX c, PACKET *pkt ) write_status( STATUS_DECRYPTION_FAILED ); } else { + if (gpg_err_code (result) == GPG_ERR_BAD_KEY + && *c->dek->s2k_cacheid != '\0') + { + log_debug(_("cleared passphrase cached with ID: %s\n"), + c->dek->s2k_cacheid); + passphrase_clear_cache (NULL, c->dek->s2k_cacheid, 0); + } write_status( STATUS_DECRYPTION_FAILED ); log_error(_("decryption failed: %s\n"), g10_errstr(result)); /* Hmmm: does this work when we have encrypted using multiple |