X-Git-Url: http://cgit.sxemacs.org/?a=blobdiff_plain;f=lisp%2Fpgg.el;h=abb49a96193b6310cdfde2374f5bf42de4391d3c;hb=cfa19eef67aaccbfd493edd7db4a7adcd2c345d9;hp=40d21401b358d121f4c1162d9823d796b65659bb;hpb=9d980e091ee4ca825de67a69d7f7bd256acb327d;p=gnus diff --git a/lisp/pgg.el b/lisp/pgg.el index 40d21401b..abb49a961 100644 --- a/lisp/pgg.el +++ b/lisp/pgg.el @@ -1,37 +1,42 @@ ;;; pgg.el --- glue for the various PGP implementations. -;; Copyright (C) 1999,2000 Free Software Foundation, Inc. +;; Copyright (C) 1999, 2000, 2003, 2004 Free Software Foundation, Inc. ;; Author: Daiki Ueno ;; Created: 1999/10/28 ;; Keywords: PGP -;; This file is part of SEMI (Secure Emacs MIME Interface). +;; This file is part of GNU Emacs. -;; This program is free software; you can redistribute it and/or -;; modify it under the terms of the GNU General Public License as -;; published by the Free Software Foundation; either version 2, or (at -;; your option) any later version. +;; GNU Emacs is free software; you can redistribute it and/or modify +;; it under the terms of the GNU General Public License as published by +;; the Free Software Foundation; either version 2, or (at your option) +;; any later version. -;; This program is distributed in the hope that it will be useful, but -;; WITHOUT ANY WARRANTY; without even the implied warranty of -;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -;; General Public License for more details. +;; GNU Emacs is distributed in the hope that it will be useful, +;; but WITHOUT ANY WARRANTY; without even the implied warranty of +;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +;; GNU General Public License for more details. ;; You should have received a copy of the GNU General Public License ;; along with GNU Emacs; see the file COPYING. If not, write to the ;; Free Software Foundation, Inc., 59 Temple Place - Suite 330, ;; Boston, MA 02111-1307, USA. - ;;; Commentary: -;; ;;; Code: (require 'pgg-def) (require 'pgg-parse) +(require 'password) +;; Don't merge these two `eval-when-compile's. +(eval-when-compile + (require 'cl)) +;; Fixme: This would be better done with an autoload for +;; `url-insert-file-contents', and the url stuff rationalized. +;; (`locate-library' can say whether the url code is available.) (eval-when-compile (ignore-errors (require 'w3) @@ -66,7 +71,8 @@ ,@body))) (defun pgg-temp-buffer-show-function (buffer) - (let ((window (split-window-vertically))) + (let ((window (or (get-buffer-window buffer 'visible) + (split-window-vertically)))) (set-window-buffer window buffer) (shrink-window-if-larger-than-buffer window))) @@ -82,27 +88,17 @@ (set-buffer standard-output) (insert-buffer-substring pgg-errors-buffer))))) -(defvar pgg-passphrase-cache (make-vector 7 0)) - (defun pgg-read-passphrase (prompt &optional key) - (or (and pgg-cache-passphrase - key (setq key (pgg-truncate-key-identifier key)) - (symbol-value (intern-soft key pgg-passphrase-cache))) - (read-passwd prompt))) + (when pgg-cache-passphrase + (password-read prompt (setq key (pgg-truncate-key-identifier key))))) (defun pgg-add-passphrase-cache (key passphrase) - (setq key (pgg-truncate-key-identifier key)) - (set (intern key pgg-passphrase-cache) - passphrase) - (run-at-time pgg-passphrase-cache-expiry nil - #'pgg-remove-passphrase-cache - key)) + (let ((password-cache-expiry pgg-passphrase-cache-expiry)) + (password-cache-add (setq key (pgg-truncate-key-identifier key)) + passphrase))) (defun pgg-remove-passphrase-cache (key) - (let ((passphrase (symbol-value (intern-soft key pgg-passphrase-cache)))) - (when passphrase - (fillarray passphrase ?_) - (unintern key pgg-passphrase-cache)))) + (password-cache-remove key)) (defmacro pgg-convert-lbt-region (start end lbt) `(let ((pgg-conversion-end (set-marker (make-marker) ,end))) @@ -186,15 +182,6 @@ the region." "Decrypt the current region between START and END." (interactive "r") (let* ((buf (current-buffer)) - (packet (cdr (assq 1 (with-temp-buffer - (insert-buffer buf) - (pgg-decode-armor-region - (point-min) (point-max)))))) - (key (cdr (assq 'key-identifier packet))) - (pgg-default-user-id - (if key - (concat "0x" (pgg-truncate-key-identifier key)) - pgg-default-user-id)) (status (pgg-save-coding-system start end (pgg-invoke "decrypt-region" (or pgg-scheme pgg-default-scheme) @@ -389,4 +376,5 @@ within the region." (provide 'pgg) +;;; arch-tag: 9cc705dd-1e6a-4c90-8dce-c3561f9a2cf4 ;;; pgg.el ends here