[Mew-dist 09614] Re: 1.94b39
Kazu Yamamoto ( 山本和彦 )
kazu at example.com
1999年 7月 14日 (水) 11:48:00 JST
From: HEO SeonMeyong <seirios at example.com>
Subject: Re: [Mew-dist 09611] 1.94b39
Date: Wed, 14 Jul 1999 02:38:12 +0900
> o mew-protect-privacy-encrypted を優先する
> 実装にして欲しいという点が挙げられる。
あれー。単なる順番ミスですね。訂正しました。
> という変数を準備しておき、
> o t ならばcacheしておいたpass phraseをpgp(encrypt|sign|decrypt)に利用
> o nil ならば cache しない
> という機構があれば、嬉しいユーザーもいると思う。
作りました。以下のパッチを当てて、mew-use-pgp-cached-passphrase を t
にして下さい。
パスフレーズをキャッシュできると、prefetch の際に暗号メールの解析を中
断する必要はない気もします。しかし、世の中の暗号メールは PGP/MIME だけ
ではないし(PGP/MIME のパスフレーズだけを管理すればよいのではない)、暗
号メールが勝手に復号されるのはやっぱり恐い(気の性かも)ので、解析を中断
する仕様はそのままにします。
さて、キャッシュしたパスフレーズをタイマーで消す機能を実装しようとして
います。いろいろ調べた結果、Emacs/XEmacs のタイマーは扱いづらいので、
「パスフレーズを入力してから 1 時間後」のようなニートなタイマーは管理
しにくいです。よって、Mew を起動してから、たとえば 1 時間ごとにパスフ
レーズを消すようにしますが、いいですか?
パスフレーズを入力したタイミングによっては、たとえば 2 分後に消える可
能性もあるということです。
--かず
-------------- next part --------------
Index: mew-encode.el
===================================================================
RCS file: /home/kazu/cvsroot/Mew/mew/mew-encode.el,v
retrieving revision 1.85
retrieving revision 1.86
diff -c -r1.85 -r1.86
*** mew-encode.el 1999/07/13 12:03:26 1.85
--- mew-encode.el 1999/07/14 02:29:55 1.86
***************
*** 100,114 ****
(mew-draft-make-backup (not multip))
;; save syntax before setting privacy
(if (or (mew-syntax-get-privacy mew-encode-syntax) ;; specified
! mew-draft-privacy-error) ;; bypass
()
(cond
(privacy
(setq type privacy))
- (mew-protect-privacy-always
- (setq type mew-protect-privacy-always-type))
((and mew-protect-privacy-encrypted mew-draft-encrypted-p)
! (setq type mew-protect-privacy-encrypted-type)))
(mew-syntax-set-privacy
mew-encode-syntax
(nth 1 (assoc type mew-privacy-database)))
--- 100,114 ----
(mew-draft-make-backup (not multip))
;; save syntax before setting privacy
(if (or (mew-syntax-get-privacy mew-encode-syntax) ;; specified
! (and (null privacy) mew-draft-privacy-error)) ;; bypass
()
(cond
(privacy
(setq type privacy))
((and mew-protect-privacy-encrypted mew-draft-encrypted-p)
! (setq type mew-protect-privacy-encrypted-type))
! (mew-protect-privacy-always
! (setq type mew-protect-privacy-always-type)))
(mew-syntax-set-privacy
mew-encode-syntax
(nth 1 (assoc type mew-privacy-database)))
Index: mew-pgp.el
===================================================================
RCS file: /home/kazu/cvsroot/Mew/mew/mew-pgp.el,v
retrieving revision 1.68
retrieving revision 1.69
diff -c -r1.68 -r1.69
*** mew-pgp.el 1999/07/13 09:18:59 1.68
--- mew-pgp.el 1999/07/14 02:29:55 1.69
***************
*** 139,144 ****
--- 139,146 ----
(defmacro mew-pgp-get (list)
(` (nth mew-pgp-ver (, list))))
+ (defvar mew-pgp-cached-passphrase nil)
+
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;
;; PGP version check
***************
*** 377,382 ****
--- 379,393 ----
;; PGP process functions
;;
+ (defun mew-pgp-passphrase ()
+ (if mew-use-pgp-cached-passphrase
+ (if mew-pgp-cached-passphrase
+ mew-pgp-cached-passphrase
+ (setq mew-pgp-cached-passphrase
+ (mew-input-passwd mew-pgp-prompt-enter-pass)))
+ (setq mew-pgp-cached-passphrase nil) ;; cancel anyway
+ (mew-input-passwd mew-pgp-prompt-enter-pass)))
+
(defun mew-pgp-process-sentinel (process event)
(let ((decrypted "PGP decrypted. ")
(msg ""))
***************
*** 440,448 ****
;; pass phrase for sign or decrypt
((string-match (mew-pgp-get mew-pgp-msg-enter-pass) string)
! (process-send-string
! process
! (format "%s\n" (mew-input-passwd mew-pgp-prompt-enter-pass)))
(set-process-filter process 'mew-pgp-process-filter2))
;; just in case
--- 451,457 ----
;; pass phrase for sign or decrypt
((string-match (mew-pgp-get mew-pgp-msg-enter-pass) string)
! (process-send-string process (format "%s\n" (mew-pgp-passphrase)))
(set-process-filter process 'mew-pgp-process-filter2))
;; just in case
***************
*** 458,471 ****
;; re-enter pass phrase
((string-match (mew-pgp-get mew-pgp-msg-reenter-pass) string)
(setq mew-pgp-string nil)
! (process-send-string
! process
! (format "%s\n" (mew-input-passwd mew-pgp-prompt-reenter-pass)))
(set-process-filter process 'mew-pgp-process-filter2))
;; pass phrases were wrong three times
((string-match (mew-pgp-get mew-pgp-msg-bad-pass) string)
(setq mew-pgp-failure mew-pgp-err-pass)
(set-process-filter process 'mew-pgp-process-filter3))
;; no pubring for verify
--- 467,480 ----
;; re-enter pass phrase
((string-match (mew-pgp-get mew-pgp-msg-reenter-pass) string)
(setq mew-pgp-string nil)
! (setq mew-pgp-cached-passphrase nil) ;; cancel anyway
! (process-send-string process (format "%s\n" (mew-pgp-passphrase)))
(set-process-filter process 'mew-pgp-process-filter2))
;; pass phrases were wrong three times
((string-match (mew-pgp-get mew-pgp-msg-bad-pass) string)
(setq mew-pgp-failure mew-pgp-err-pass)
+ (setq mew-pgp-cached-passphrase nil) ;; cancel anyway
(set-process-filter process 'mew-pgp-process-filter3))
;; no pubring for verify
Index: mew-vars.el
===================================================================
RCS file: /home/kazu/cvsroot/Mew/mew/mew-vars.el,v
retrieving revision 1.145
retrieving revision 1.146
diff -c -r1.145 -r1.146
*** mew-vars.el 1999/07/13 11:33:00 1.145
--- mew-vars.el 1999/07/14 02:29:55 1.146
***************
*** 914,919 ****
--- 914,923 ----
\"f\" and \"F\" are used. Otherwise, symbolic links are
created (if the feature is provided).")
+ (defvar mew-use-pgp-cached-passphrase nil
+ "*if non-nil, PGP passphrase which you inputed is cached to be used
+ for further PGP processes.")
+
;;
;; X face
;;
Mew-dist メーリングリストの案内