X-Git-Url: https://code.delx.au/gnu-emacs/blobdiff_plain/0e963201d03d9229bb8ac4323291d2b0119526ed..4b9ac23960d2998f899287ffcf696ad33b63a69a:/lisp/epg.el diff --git a/lisp/epg.el b/lisp/epg.el index 1f9db23478..315eb40f0a 100644 --- a/lisp/epg.el +++ b/lisp/epg.el @@ -186,11 +186,11 @@ compress-algorithm &aux (program - (pcase protocol - (`OpenPGP epg-gpg-program) - (`CMS epg-gpgsm-program) - (_ (signal 'epg-error - (list "unknown protocol" protocol))))))) + (let ((configuration (epg-find-configuration protocol))) + (unless configuration + (signal 'epg-error + (list "no usable configuration" protocol))) + (alist-get 'program configuration))))) (:copier nil) (:predicate nil)) protocol @@ -604,9 +604,13 @@ callback data (if any)." (setq process-environment (cons (concat "GPG_TTY=" terminal-name) (cons "TERM=xterm" process-environment)))) - ;; Start the Emacs Pinentry server if allow-emacs-pinentry is set - ;; in ~/.gnupg/gpg-agent.conf. + ;; Automatically start the Emacs Pinentry server if appropriate. (when (and (fboundp 'pinentry-start) + ;; Emacs Pinentry is useless if Emacs has no interactive session. + (not noninteractive) + ;; Prefer pinentry-mode over Emacs Pinentry. + (null (epg-context-pinentry-mode context)) + ;; Check if the allow-emacs-pinentry option is set. (executable-find epg-gpgconf-program) (with-temp-buffer (when (= (call-process epg-gpgconf-program nil t nil @@ -1749,12 +1753,7 @@ If optional 3rd argument MODE is t or `detached', it makes a detached signature. If it is nil or `normal', it makes a normal signature. Otherwise, it makes a cleartext signature." (let ((input-file - (unless (or (eq (epg-context-protocol context) 'CMS) - (condition-case nil - (progn - (epg-check-configuration (epg-configuration)) - t) - (error))) + (unless (eq (epg-context-protocol context) 'CMS) (epg--make-temp-file "epg-input"))) (coding-system-for-write 'binary)) (unwind-protect @@ -1861,12 +1860,7 @@ If RECIPIENTS is nil, it performs symmetric encryption." If RECIPIENTS is nil, it performs symmetric encryption." (let ((input-file (unless (or (not sign) - (eq (epg-context-protocol context) 'CMS) - (condition-case nil - (progn - (epg-check-configuration (epg-configuration)) - t) - (error))) + (eq (epg-context-protocol context) 'CMS)) (epg--make-temp-file "epg-input"))) (coding-system-for-write 'binary)) (unwind-protect