]> git.eshelyaron.com Git - emacs.git/commitdiff
Avoid false "wrong passphrase" messages in EPA
authorJens Schmidt <jschmidt4gnu@vodafonemail.de>
Tue, 15 Aug 2023 19:37:08 +0000 (21:37 +0200)
committerEli Zaretskii <eliz@gnu.org>
Thu, 17 Aug 2023 08:11:01 +0000 (11:11 +0300)
* lisp/epa-file.el (epa--wrong-password-p): Use a stricter regexp
to match "wrong passphrase" errors generated by GnuPG.  (Bug#65316)

lisp/epa-file.el

index 4d8ca11e809c002d3abaf80d02077ec6f0d4d0db..a27f241c0c3a40e3544b51db6c6a8afa15db64a2 100644 (file)
@@ -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))))