;;; pgg-pgp5.el --- PGP 5.* support for PGG.
-;; Copyright (C) 1999 Daiki Ueno
+;; Copyright (C) 1999,2000 Daiki Ueno
;; Author: Daiki Ueno <ueno@ueda.info.waseda.ac.jp>
;; Created: 1999/11/02
:type 'string)
(eval-and-compile
- (luna-define-class pgg-scheme-pgp5 (pgg-scheme))
- )
-
+ (luna-define-class pgg-scheme-pgp5 (pgg-scheme)))
+
(defvar pgg-pgp5-user-id nil
"GnuPG ID of your default identity.")
(erase-buffer))
(when passphrase
(setenv "PGPPASSFD" "0"))
- (setq process
- (apply #'start-process-shell-command "*PGP*" output-buffer
- program args))
- (set-process-sentinel process 'ignore)
+ (as-binary-process
+ (setq process
+ (apply #'start-process-shell-command "*PGP*" output-buffer
+ program args)))
+ (set-process-sentinel process #'ignore)
(when passphrase
(process-send-string process (concat passphrase "\n")))
(process-send-region process start end)
(delete-file errors-file-name)
(if (and process (eq 'run (process-status process)))
- (interrupt-process process))
- )
- ))
+ (interrupt-process process)))))
-(luna-define-method lookup-key-string ((scheme pgg-scheme-pgp5)
- string &optional type)
+(luna-define-method pgg-scheme-lookup-key-string ((scheme pgg-scheme-pgp5)
+ string &optional type)
(let ((args (list "+language=en" "-l" string)))
(with-current-buffer (get-buffer-create pgg-output-buffer)
(buffer-disable-undo)
(erase-buffer)
- (apply #'call-process pgg-pgp5-pgpk-program nil t args)
+ (apply #'call-process pgg-pgp5-pgpk-program nil t nil args)
(goto-char (point-min))
(when (re-search-forward "^sec" nil t)
(substring
(nth 2 (split-string
- (buffer-substring (match-end 0)
- (progn (end-of-line)(point)))
- ))
- 2)))
- ))
-
-(luna-define-method encrypt-region ((scheme pgg-scheme-pgp5)
- start end recipients)
- (let* ((pgg-pgp5-user-id pgg-default-user-id)
+ (buffer-substring (match-end 0)(progn (end-of-line)(point)))))
+ 2)))))
+
+(luna-define-method pgg-scheme-encrypt-region ((scheme pgg-scheme-pgp5)
+ start end recipients)
+ (let* ((pgg-pgp5-user-id (or pgg-pgp5-user-id pgg-default-user-id))
(args
`("+NoBatchInvalidKeys=off" "-fat" "+batchmode=1"
,@(if recipients
(concat "\"" rcpt "\"")))
(append recipients
(if pgg-encrypt-for-me
- (list pgg-pgp5-user-id)))))))
- ))
- (pgg-pgp5-process-region start end nil
- pgg-pgp5-pgpe-program args)
- (pgg-process-when-success nil)
- ))
-
-(luna-define-method decrypt-region ((scheme pgg-scheme-pgp5)
- start end)
- (let* ((pgg-pgp5-user-id pgg-default-user-id)
+ (list pgg-pgp5-user-id)))))))))
+ (pgg-pgp5-process-region start end nil pgg-pgp5-pgpe-program args)
+ (pgg-process-when-success nil)))
+
+(luna-define-method pgg-scheme-decrypt-region ((scheme pgg-scheme-pgp5)
+ start end)
+ (let* ((pgg-pgp5-user-id (or pgg-pgp5-user-id pgg-default-user-id))
(passphrase
(pgg-read-passphrase
(format "PGP passphrase for %s: " pgg-pgp5-user-id)
scheme pgg-pgp5-user-id 'encrypt)))
(args
'("+verbose=1" "+batchmode=1" "+language=us" "-f")))
- (pgg-pgp5-process-region start end passphrase
- pgg-pgp5-pgpv-program args)
- (pgg-process-when-success nil)
- ))
-
-(luna-define-method sign-region ((scheme pgg-scheme-pgp5)
- start end &optional clearsign)
- (let* ((pgg-pgp5-user-id pgg-default-user-id)
+ (pgg-pgp5-process-region start end passphrase pgg-pgp5-pgpv-program args)
+ (pgg-process-when-success nil)))
+
+(luna-define-method pgg-scheme-sign-region ((scheme pgg-scheme-pgp5)
+ start end &optional clearsign)
+ (let* ((pgg-pgp5-user-id (or pgg-pgp5-user-id pgg-default-user-id))
(passphrase
(pgg-read-passphrase
(format "PGP passphrase for %s: " pgg-pgp5-user-id)
(list (if clearsign "-fat" "-fbat")
"+verbose=1" "+language=us" "+batchmode=1"
"-u" pgg-pgp5-user-id)))
- (pgg-pgp5-process-region start end passphrase
- pgg-pgp5-pgps-program args)
+ (pgg-pgp5-process-region start end passphrase pgg-pgp5-pgps-program args)
(pgg-process-when-success
(when (re-search-forward "^-+BEGIN PGP SIGNATURE" nil t);XXX
(let ((packet
(progn (beginning-of-line 2)
(point))
(point-max))))))
- (pgg-add-passphrase-cache
- (cdr (assq 'key-identifier packet))
- passphrase))))
- ))
+ (if pgg-cache-passphrase
+ (pgg-add-passphrase-cache
+ (cdr (assq 'key-identifier packet))
+ passphrase)))))))
-(luna-define-method verify-region ((scheme pgg-scheme-pgp5)
- start end &optional signature)
+(luna-define-method pgg-scheme-verify-region ((scheme pgg-scheme-pgp5)
+ start end &optional signature)
(let* ((basename (expand-file-name "pgg" temporary-file-directory))
(orig-file (make-temp-name basename))
- (args '("+verbose=1" "+batchmode=1" "+language=us")))
- (write-region-as-binary start end orig-file)
+ (args '("+verbose=1" "+batchmode=1" "+language=us"))
+ (orig-mode (default-file-modes)))
+ (unwind-protect
+ (progn
+ (set-default-file-modes 448)
+ (write-region-as-binary start end orig-file))
+ (set-default-file-modes orig-mode))
(when (stringp signature)
(copy-file signature (setq signature (concat orig-file ".asc")))
- (setq args (append args (list signature)))
- )
- (pgg-pgp5-process-region (point-min)(point-max) nil
- pgg-pgp5-pgpv-program args)
+ (setq args (append args (list signature))))
+ (pgg-pgp5-process-region (point)(point) nil pgg-pgp5-pgpv-program args)
(delete-file orig-file)
(if signature (delete-file signature))
- (pgg-process-when-success nil)
- ))
+ (pgg-process-when-success nil)))
-(luna-define-method insert-key ((scheme pgg-scheme-pgp5))
- (let* ((pgg-pgp5-user-id pgg-default-user-id)
+(luna-define-method pgg-scheme-insert-key ((scheme pgg-scheme-pgp5))
+ (let* ((pgg-pgp5-user-id (or pgg-pgp5-user-id pgg-default-user-id))
(args
(list "+verbose=1" "+batchmode=1" "+language=us" "-x"
(concat "\"" pgg-pgp5-user-id "\""))))
- (pgg-pgp5-process-region (point)(point) nil
- pgg-pgp5-pgpk-program args)
- (insert-buffer-substring pgg-output-buffer)
- ))
-
-(luna-define-method snarf-keys-region ((scheme pgg-scheme-pgp5)
- start end)
- (let* ((pgg-pgp5-user-id pgg-default-user-id)
+ (pgg-pgp5-process-region (point)(point) nil pgg-pgp5-pgpk-program args)
+ (insert-buffer-substring pgg-output-buffer)))
+
+(luna-define-method pgg-scheme-snarf-keys-region ((scheme pgg-scheme-pgp5)
+ start end)
+ (let* ((pgg-pgp5-user-id (or pgg-pgp5-user-id pgg-default-user-id))
(basename (expand-file-name "pgg" temporary-file-directory))
(key-file (make-temp-name basename))
(args
(list "+verbose=1" "+batchmode=1" "+language=us" "-a"
key-file)))
(write-region-as-raw-text-CRLF start end key-file)
- (pgg-pgp5-process-region start end nil
- pgg-pgp5-pgpk-program args)
+ (pgg-pgp5-process-region start end nil pgg-pgp5-pgpk-program args)
(delete-file key-file)
- (pgg-process-when-success nil)
- ))
+ (pgg-process-when-success nil)))
(provide 'pgg-pgp5)