diff options
Diffstat (limited to 'lisp/gnus/plstore.el')
| -rw-r--r-- | lisp/gnus/plstore.el | 15 |
1 files changed, 11 insertions, 4 deletions
diff --git a/lisp/gnus/plstore.el b/lisp/gnus/plstore.el index 5612bee73b6..175e272cb9a 100644 --- a/lisp/gnus/plstore.el +++ b/lisp/gnus/plstore.el @@ -1,5 +1,5 @@ ;;; plstore.el --- secure plist store -*- lexical-binding: t -*- -;; Copyright (C) 2011-2013 Free Software Foundation, Inc. +;; Copyright (C) 2011-2015 Free Software Foundation, Inc. ;; Author: Daiki Ueno <ueno@unixuser.org> ;; Keywords: PGP, GnuPG @@ -270,9 +270,16 @@ symmetric encryption will be used.") context (cons #'plstore-progress-callback-function (format "Decrypting %s" (plstore-get-file plstore)))) - (setq plain - (epg-decrypt-string context - (plstore--get-encrypted-data plstore))) + (condition-case error + (setq plain + (epg-decrypt-string context + (plstore--get-encrypted-data plstore))) + (error + (let ((entry (assoc (plstore-get-file plstore) + plstore-passphrase-alist))) + (if entry + (setcdr entry nil))) + (signal (car error) (cdr error)))) (plstore--set-secret-alist plstore (car (read-from-string plain))) (plstore--merge-secret plstore) (plstore--set-encrypted-data plstore nil)))) |
