(require 'pgg-parse)
(eval-when-compile
+ (require 'cl)
(ignore-errors
(require 'w3)
(require 'url)))
(set-buffer standard-output)
(insert-buffer-substring pgg-errors-buffer)))))
-(defvar pgg-passphrase-cache-expiry 16)
(defvar pgg-passphrase-cache (make-vector 7 0))
-(defvar pgg-read-passphrase nil)
(defun pgg-read-passphrase (prompt &optional key)
- (if (not pgg-read-passphrase)
- (if (functionp 'read-passwd)
- (setq pgg-read-passphrase 'read-passwd)
- (if (load "passwd" t)
- (setq pgg-read-passphrase 'read-passwd)
- (autoload 'ange-ftp-read-passwd "ange-ftp")
- (setq pgg-read-passphrase 'ange-ftp-read-passwd))))
(or (and pgg-cache-passphrase
key (setq key (pgg-truncate-key-identifier key))
(symbol-value (intern-soft key pgg-passphrase-cache)))
- (funcall pgg-read-passphrase prompt)))
+ (read-passwd prompt)))
(defun pgg-add-passphrase-cache (key passphrase)
(setq key (pgg-truncate-key-identifier key))
If optional arguments START and END are specified, only encrypt within
the region."
(interactive (list (split-string (read-string "Recipients: ") "[ \t,]+")))
- (pgg-encrypt-region (or start (point-min)) (or end (point-max)) rcpts sign))
+ (let* ((start (or start (point-min)))
+ (end (or end (point-max)))
+ (status (pgg-encrypt-region start end rcpts sign)))
+ (when (interactive-p)
+ (pgg-display-output-buffer start end status))
+ status))
;;;###autoload
(defun pgg-decrypt-region (start end)
(interactive "r")
(let* ((buf (current-buffer))
(packet (cdr (assq 1 (with-temp-buffer
- (insert-buffer buf)
+ (insert-buffer-substring buf)
(pgg-decode-armor-region
(point-min) (point-max))))))
(key (cdr (assq 'key-identifier packet)))
If optional arguments START and END are specified, only decrypt within
the region."
(interactive "")
- (pgg-decrypt-region (or start (point-min)) (or end (point-max))))
+ (let* ((start (or start (point-min)))
+ (end (or end (point-max)))
+ (status (pgg-decrypt-region start end)))
+ (when (interactive-p)
+ (pgg-display-output-buffer start end status))
+ status))
;;;###autoload
(defun pgg-sign-region (start end &optional cleartext)
"Make the signature from text between START and END.
If the optional 3rd argument CLEARTEXT is non-nil, it does not create
-a detached signature."
+a detached signature.
+If this function is called interactively, CLEARTEXT is enabled
+and the the output is displayed."
(interactive "r")
(let ((status (pgg-save-coding-system start end
(pgg-invoke "sign-region" (or pgg-scheme pgg-default-scheme)
If the optional argument CLEARTEXT is non-nil, it does not create a
detached signature.
If optional arguments START and END are specified, only sign data
-within the region."
+within the region.
+If this function is called interactively, CLEARTEXT is enabled
+and the the output is displayed."
(interactive "")
- (pgg-sign-region (or start (point-min)) (or end (point-max)) cleartext))
+ (let* ((start (or start (point-min)))
+ (end (or end (point-max)))
+ (status (pgg-sign-region start end (or (interactive-p) cleartext))))
+ (when (interactive-p)
+ (pgg-display-output-buffer start end status))
+ status))
;;;###autoload
(defun pgg-verify-region (start end &optional signature fetch)
If optional arguments START and END are specified, only verify data
within the region."
(interactive "")
- (pgg-verify-region (or start (point-min)) (or end (point-max))
- signature fetch))
+ (let* ((start (or start (point-min)))
+ (end (or end (point-max)))
+ (status (pgg-verify-region start end signature fetch)))
+ (when (interactive-p)
+ (let ((temp-buffer-show-function
+ (function pgg-temp-buffer-show-function)))
+ (with-output-to-temp-buffer pgg-echo-buffer
+ (set-buffer standard-output)
+ (insert-buffer-substring (if status pgg-output-buffer
+ pgg-errors-buffer)))))))
;;;###autoload
(defun pgg-insert-key ()