X-Git-Url: http://cgit.sxemacs.org/?a=blobdiff_plain;f=contrib%2Fgpg.el;h=c83a4eb835f7106564db74ea130d79f7cda475e8;hb=20bc985a3232ebba106d335afcfd6b596bb8efba;hp=04842a1fe68fe0910bbd43bdd098372c2342b0b1;hpb=7f8147ed5815e04640a30666a591fe6ac08edcaa;p=gnus diff --git a/contrib/gpg.el b/contrib/gpg.el index 04842a1fe..c83a4eb83 100644 --- a/contrib/gpg.el +++ b/contrib/gpg.el @@ -7,8 +7,6 @@ ;; Keywords: crypto ;; Created: 2000-04-15 -;; $Id: gpg.el,v 1.12 2001/07/13 19:31:08 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 ;; ============================= @@ -108,7 +106,9 @@ ;;; Code: -(require 'timer) +(if (featurep 'xemacs) + (require 'timer-funcs) + (require 'timer)) (eval-when-compile (require 'cl)) (eval-and-compile @@ -117,6 +117,21 @@ 'point-at-eol 'line-end-position))) +;; itimer/timer compatibility +(eval-and-compile + (if (featurep 'xemacs) + (progn + (defalias 'gpg-cancel-timer 'delete-itimer) + (defalias 'gpg-timer-activate 'activate-itimer) + (defalias 'gpg-timer-create 'make-itimer) + (defalias 'gpg-timer-set-function 'set-itimer-function) + (defalias 'gpg-timer-set-time 'set-itimer-value)) + (defalias 'gpg-cancel-timer 'cancel-timer) + (defalias 'gpg-timer-activate 'timer-activate) + (defalias 'gpg-timer-create 'timer-create) + (defalias 'gpg-timer-set-function 'timer-set-function) + (defalias 'gpg-timer-set-time 'timer-set-time))) + ;;;; Customization: ;;; Customization: Groups: @@ -227,12 +242,12 @@ 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) @@ -302,7 +317,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 @@ -323,7 +338,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 @@ -342,7 +357,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 @@ -364,7 +379,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 @@ -377,7 +392,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 @@ -781,7 +796,7 @@ evaluates BODY, like `progn'. If BODY evaluates to `nil' (or ;;; Passphrase handling: (defvar gpg-passphrase-timer - (timer-create) + (gpg-timer-create) "This timer will clear the passphrase cache periodically.") (defvar gpg-passphrase @@ -800,21 +815,25 @@ 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 + (gpg-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) - (timer-set-time gpg-passphrase-timer - (timer-relative-time (current-time) - gpg-passphrase-timeout)) - (timer-set-function gpg-passphrase-timer 'gpg-passphrase-forget) + (if (null gpg-passphrase-timer) + (setq gpg-passphrase-timer (gpg-timer-create))) + (gpg-timer-set-time gpg-passphrase-timer + (timer-relative-time (current-time) + gpg-passphrase-timeout)) + (gpg-timer-set-function gpg-passphrase-timer 'gpg-passphrase-forget) (unless (and (fboundp 'itimer-live-p) (itimer-live-p gpg-passphrase-timer)) - (timer-activate gpg-passphrase-timer)) + (gpg-timer-activate gpg-passphrase-timer)) (setq gpg-passphrase passphrase)) passphrase) @@ -1175,6 +1194,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) @@ -1309,4 +1336,5 @@ before point.") (provide 'gpg) +;;; arch-tag: c972455d-9bc5-4de1-9dc7-4f494d63053b ;;; gpg.el ends here