diff options
author | Jens Schmidt <jschmidt4gnu@vodafonemail.de> | 2023-08-15 21:37:08 +0200 |
---|---|---|
committer | Eli Zaretskii <eliz@gnu.org> | 2023-08-17 11:11:01 +0300 |
commit | fac0e2d533427ba7afc2c11427f46acc57fa6be8 (patch) | |
tree | 46d7ce32a9c83f15de48554df6af3abbcee0f55a | |
parent | 8f683b51d8bc9e8c66608fb6056e0f8765f274f8 (diff) | |
download | emacs-fac0e2d533427ba7afc2c11427f46acc57fa6be8.tar.gz |
Avoid false "wrong passphrase" messages in EPA
* lisp/epa-file.el (epa--wrong-password-p): Use a stricter regexp
to match "wrong passphrase" errors generated by GnuPG. (Bug#65316)
-rw-r--r-- | lisp/epa-file.el | 9 |
1 files changed, 8 insertions, 1 deletions
diff --git a/lisp/epa-file.el b/lisp/epa-file.el index 4d8ca11e809..a27f241c0c3 100644 --- a/lisp/epa-file.el +++ b/lisp/epa-file.el @@ -123,9 +123,16 @@ encryption is used." (cons "Opening input file" (cdr error)))))) (defun epa--wrong-password-p (context) + "Return whether a wrong password caused the error in CONTEXT." (let ((error-string (epg-context-error-output context))) + ;; Use a strict regexp here that really only matches "wrong + ;; passphrase" errors to avoid hiding diagnostic information + ;; (bug#65316). Below regexp also can fail to match non-English + ;; messages, since at least the "decryption failed" part of it + ;; seems to be localized. But since this means false negatives + ;; this is probably OK. (and (string-match - "decryption failed: \\(Bad session key\\|No secret key\\)" + "decryption failed: \\(Bad session key\\|Bad passphrase\\)" error-string) (match-string 1 error-string)))) |