X-Git-Url: http://cgit.sxemacs.org/?p=gnus;a=blobdiff_plain;f=contrib%2Fgpg.el;h=9dcb2a863b2c20bcbf1805bca2c003bd93edaf70;hp=b96762885f751957c6c40646ac8cc7777f8e4f59;hb=4724093b5726d891e49e07191b52a14db1b93ecd;hpb=e838d259405e34d4598d1e9b99350258cf80988e diff --git a/contrib/gpg.el b/contrib/gpg.el index b96762885..9dcb2a863 100644 --- a/contrib/gpg.el +++ b/contrib/gpg.el @@ -7,8 +7,6 @@ ;; Keywords: crypto ;; Created: 2000-04-15 -;; $Id: gpg.el,v 1.7 2000/12/15 04:50:15 zsh Exp $ - ;; This file is NOT (yet?) part of GNU Emacs. ;; GNU Emacs is free software; you can redistribute it and/or modify @@ -41,8 +39,8 @@ ;; * Customization for all flavors of PGP is possible. ;; * The main operations (verify, decrypt, sign, encrypt, sign & ;; encrypt) are implemented. -;; * Gero Treuner's gpg-2comp script is supported, and data which is is -;; compatible with PGP 2.6.3 is generated. +;; * Optionally, Gero Treuner's gpg-2comp script is supported, +;; to generate data which is compatible with PGP 2.6.3. ;; Customizing external programs ;; ============================= @@ -106,16 +104,16 @@ ;; function (bound to `C-h l' by default). -;;;; Code: +;;; Code: (require 'timer) -(eval-when-compile - (require 'cl)) +(eval-when-compile (require 'cl)) -(defalias 'gpg-point-at-eol - (if (fboundp 'point-at-eol) - 'point-at-eol - 'line-end-position)) +(eval-and-compile + (defalias 'gpg-point-at-eol + (if (fboundp 'point-at-eol) + 'point-at-eol + 'line-end-position))) ;;;; Customization: @@ -227,16 +225,22 @@ If you are running Emacs 20, this directory must have mode 0700." (defcustom gpg-command-default-alist '((gpg . "gpg") - (gpg-2comp . "gpg-2comp")) + (gpg-2comp . "gpg")) "Default paths for some GnuPG-related programs. Modify this variable if you have to change the paths to the -executables required by the GnuPG interface. You can enter \"gpg\" -for `gpg-2comp' if you don't have this script, but you'll lose PGP -2.6.x compatibility." +executables required by the GnuPG interface. You can enter \"gpg-2comp\" +for `gpg-2comp' if you have obtained this script, in order to gain +PGP 2.6.x compatibility." :tag "GnuPG programs" :type 'gpg-command-alist :group 'gpg-options) +(defcustom gpg-command-all-arglist + nil + "List of arguments to add to all GPG commands." + :tag "All command args" + :group 'gpg-options) + (defcustom gpg-command-flag-textmode "--textmode" "The flag to indicate canonical text mode to GnuPG." :tag "Text mode flag" @@ -296,7 +300,7 @@ indicate that it should read the passphrase from standard input." ;;; 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 @@ -317,7 +321,7 @@ charsets or line endings; the input data shall be treated as binary." :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 @@ -336,7 +340,7 @@ endings; the input data shall be treated as binary." :group 'gpg-commands) (defcustom gpg-command-decrypt - '(gpg . ("--decrypt" "--batch" "--passphrase-fd=0")) + '(gpg . ("--status-fd" "2" "--decrypt" "--batch" "--passphrase-fd=0")) "Command to decrypt a message. The invoked program has to read the passphrase from standard input, followed by the encrypted message. It writes the decrypted @@ -358,7 +362,7 @@ standard error." '(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 @@ -371,7 +375,7 @@ standard error." '(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 @@ -543,7 +547,7 @@ it are replaced by SUBSTITUTIONS. 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) + (let ((arglist (copy-sequence gpg-command-all-arglist))) (while template (let* ((templ (pop template)) (repl (assoc templ substitutions)) @@ -625,7 +629,7 @@ adjust according to `gpg-command-passphrase-env'." ;; 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 @@ -757,7 +761,7 @@ Never set this variable directly, use `gpg-show-result' instead.") (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. @@ -794,14 +798,18 @@ evaluates BODY, like `progn'. If BODY evaluates to `nil' (or (defun gpg-passphrase-forget () "Forget stored passphrase." (interactive) - (cancel-timer gpg-passphrase-timer) - (gpg-passphrase-clear-string gpg-passphrase) - (setq gpg-passphrase nil)) + (when gpg-passphrase + (cancel-timer gpg-passphrase-timer) + (setq gpg-passphrase-timer nil) + (gpg-passphrase-clear-string gpg-passphrase) + (setq gpg-passphrase nil))) (defun gpg-passphrase-store (passphrase) "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)) @@ -1169,6 +1177,14 @@ documentation for details)." (?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) @@ -1303,4 +1319,5 @@ before point.") (provide 'gpg) +;;; arch-tag: c972455d-9bc5-4de1-9dc7-4f494d63053b ;;; gpg.el ends here