[Mew-dist 05344] select PGP userid (was Re: PGP version)
Mito
mit at example.com
1998年 7月 3日 (金) 18:58:47 JST
※ "石" こと ishizuka at example.com さんの
『[Mew-dist 05089] Re: PGP version』より
石> Windows の MUA によっては可能かもしれませんが、現行の mew で
石> は同一アドレスに対して複数の key を作成しても、署名時等に選択す
石> る手段がないので、この方法を使うには Diffie-Hellman の署名と RSA
石> の署名を使い分けるためには、アドレスを変えないと駄目です。
5.0i が使えるようになったのでやってみました。
普通に C-c C-s などした場合はいままで通り From などから
userid を決定し、C-u C-c C-s などとした場合は、
mew-pgp-optional-userid という変数を見るようにします。
mew-pgp-optional-userid が文字列ならその userid で署名を行い、
リストの場合はどれを使うかを問い合わせます。
具体的には、
(setq mew-pgp-optional-userid '(("RSA" "0x428B2419")
("DSS/Diffie-Hellman" "0xE36C9E37")
("private" "other at example.com")))
とした場合は C-u C-c C-s で、RSA か DSS/Diffie-Hellman か
private かをたずねてきます。
(setq mew-pgp-optional-userid "0x428B2419")
とした場合は C-u C-c C-s で何も聞かず RSA で署名します。
マルチパートの場合は、C-u C-c C-m で同様に mew-pgp-userid を
参照に行きますが、パート毎での変更はできません。
公開キーの配布(添付領域でp)は、補完はできませんが、userid を
指定することで可能ですのでいじっていません。
こんな感じでどうでしょうか?
--
7/3 18:56頃
NECソフトウェア新潟 水戸
mailto:mit at example.com \n
-------------- next part --------------
--- mew-encode.el 1998/07/03 07:33:30 1.1
+++ mew-encode.el 1998/07/03 07:31:19
@@ -52,10 +52,10 @@
(buffer-substring (match-beginning 0) (match-end 0)))
(mew-header-insert (read-string "Subject: "))))))
-(defun mew-draft-make-message ()
+(defun mew-draft-make-message (&optional arg)
"Make a MIME message. Charset guess, mapping directory structure
to multipart, and so on."
- (interactive)
+ (interactive "P")
(mew-draft-ask-subject)
(if mew-config-insert-when-composed
(mew-draft-insert-config))
@@ -65,7 +65,8 @@
(message "%s already exists!" mew-ct:))
(message "Making a MIME letter ...")
(if (mew-attach-p)
- (let ((mew-inherit-signer (or (mew-header-get-address "From:")
+ (let ((mew-inherit-signer (or (and arg (mew-pgp-ask-userid))
+ (mew-header-get-address "From:")
mew-mail-address)))
(mew-draft-make-multi))
(mew-draft-make-single))
--- mew-pgp.el 1998/07/03 04:33:51 1.1
+++ mew-pgp.el 1998/07/03 09:45:01
@@ -438,24 +438,38 @@
;; shortcut methods
;;
-(defun mew-pgp-sign-letter ()
+(defvar mew-pgp-optional-userid nil)
+(defun mew-pgp-ask-userid ()
+ (if mew-pgp-userid
+ (if (stringp 'mew-pgp-optional-userid)
+ mew-pgp-optional-userid
+ (let ((completion-ignore-case t)
+ uid)
+ (setq uid (completing-read "PGP user ID: "
+ mew-pgp-optional-userid nil t))
+ (car (cdr (assoc uid mew-pgp-optional-userid)))))))
+
+(defun mew-pgp-sign-letter (arg)
"Sign the single part draft with PGP. Input your passphrase."
- (interactive)
- (let ((mew-inherit-signer (or (mew-header-get-address "From:")
+ (interactive "P")
+ (let ((mew-inherit-signer (or (and arg (mew-pgp-ask-userid))
+ (mew-header-get-address "From:")
mew-mail-address)))
(mew-pgp-encode-letter (list (list mew-ct-mls mew-ct-pgs)))))
-(defun mew-pgp-encrypt-letter ()
+(defun mew-pgp-encrypt-letter (arg)
"Encrypt the single part draft with PGP."
- (interactive)
- (let ((mew-inherit-signer (or (mew-header-get-address "From:")
+ (interactive "P")
+ (let ((mew-inherit-signer (or (and arg (mew-pgp-ask-userid))
+ (mew-header-get-address "From:")
mew-mail-address)))
(mew-pgp-encode-letter (list (list mew-ct-mle mew-ct-pge)))))
-(defun mew-pgp-sign-encrypt-letter ()
+(defun mew-pgp-sign-encrypt-letter (arg)
"Sign then encrypt the single part draft with PGP. Input your passphrase."
- (interactive)
- (let ((mew-inherit-signer (or (mew-header-get-address "From:")
+ (interactive "P")
+ (let ((mew-inherit-signer (or (and arg (mew-pgp-ask-userid))
+ (mew-header-get-address "From:")
mew-mail-address)))
(mew-pgp-encode-letter (list (list mew-ct-mls mew-ct-pgs)
(list mew-ct-mle mew-ct-pge)))))
Mew-dist メーリングリストの案内