;; function (bound to `C-h l' by default).
\f
-;;;; Code:
+;;; Code:
(require 'timer)
-(eval-when-compile
- (require 'cl))
+(eval-when-compile (require 'cl))
(eval-and-compile
(defalias 'gpg-point-at-eol
;;; Customization: Variables: GnuPG Commands:
(defcustom gpg-command-verify
- '(gpg . ("--batch" "--verbose" "--verify" signature-file message-file))
+ '(gpg . ("--status-fd" "1" "--batch" "--verbose" "--verify" signature-file message-file))
"Command to verify a detached signature.
The invoked program has to read the signed message and the signature
from the given files. It should write human-readable information to
:group 'gpg-commands)
(defcustom gpg-command-verify-cleartext
- '(gpg . ("--batch" "--verbose" "--verify" message-file))
+ '(gpg . ("--status-fd" "1" "--batch" "--verbose" "--verify" message-file))
"Command to verify a message.
The invoked program has to read the signed message from the given
file. It should write human-readable information to standard output
'(gpg-2comp . ("--batch" "--passphrase-fd=0" "--output=-"
armor textmode "--clearsign"
sign-with-key))
- "Command to create a create a \"clearsign\" text file.
+ "Command to create a \"clearsign\" text file.
The invoked program has to read the passphrase from standard input,
followed by the message to sign. It should write the ASCII-amored
signed text message to standard output, and diagnostic messages to
'(gpg-2comp . ("--batch" "--passphrase-fd=0" "--output=-"
armor textmode "--detach-sign"
sign-with-key))
- "Command to create a create a detached signature.
+ "Command to create a detached signature.
The invoked program has to read the passphrase from standard input,
followed by the message to sign. It should write the ASCII-amored
detached signature to standard output, and diagnostic messages to
SUBSTITIONS is a list of (SYMBOL . SEXP) pairs, where SEXP is either a
string (which is inserted literally), a list of strings (which are
inserted as well), or nil, which means to insert nothing."
- (let ((arglist (copy-list gpg-command-all-arglist)))
+ (let ((arglist (copy-sequence gpg-command-all-arglist)))
(while template
(let* ((templ (pop template))
(repl (assoc templ substitutions))
;; temporary file resides in a world-writable directory.
(unless (or (memq system-type '(windows-nt cygwin32 win32 w32 mswindows))
(eq (file-modes gpg-temp-directory) 448)) ; mode 0700
- (error "Directory for temporary files must have mode 0700."))
+ (error "Directory for temporary files (%s) must have mode 0700" gpg-temp-directory))
(setq name (make-temp-name name))
(let ((mode (default-file-modes)))
(unwind-protect
(save-window-excursion
(display-buffer (current-buffer))
(unless (y-or-n-p "Continue? ")
- (error "GnuPG operation aborted."))))))
+ (error "GnuPG operation aborted"))))))
(defmacro gpg-show-result (always-show &rest body)
"Show GnuPG result to user for confirmation.
"Forget stored passphrase."
(interactive)
(cancel-timer gpg-passphrase-timer)
+ (setq gpg-passphrase-timer nil)
(gpg-passphrase-clear-string gpg-passphrase)
(setq gpg-passphrase nil))
"Store PASSPHRASE in cache.
Updates the timeout for clearing the cache to `gpg-passphrase-timeout'."
(unless (equal gpg-passphrase-timeout 0)
+ (if (null gpg-passphrase-timer)
+ (setq gpg-passphrase-timer (timer-create)))
(timer-set-time gpg-passphrase-timer
(timer-relative-time (current-time)
gpg-passphrase-timeout))
(?u . trust-ultimate))
"Alist mapping GnuPG trust value short forms to long symbols.")
+(defconst gpg-unabbrev-trust-alist
+ '(("TRUST_UNDEFINED" . trust-undefined)
+ ("TRUST_NEVER" . trust-none)
+ ("TRUST_MARGINAL" . trust-marginal)
+ ("TRUST_FULLY" . trust-full)
+ ("TRUST_ULTIMATE" . trust-ultimate))
+ "Alist mapping capitalized GnuPG trust values to long symbols.")
+
(defmacro gpg-key-list-keys-in-buffer-store ()
'(when primary-user-id
(sort user-id 'string-lessp)