[mew-dist 28322] smime 検証時の X-Mew 出力

Hideyuki SHIRAI ( 白井秀行 ) shirai at example.com
2008年 4月 14日 (月) 11:00:33 JST


白井です。

# cmew は順調 ;-p

ぼく自身は(あいかわらず) smime って三井住友銀行からのメールの確
認しか使っていないのですが、そのメールをわざと壊して実験したとこ
ろ、二つほど気づいた点があります。

(1) smime の チェックが BAD のときに、x-mew のワーニングも存在す
  ると、"X-Mew:" の入る位置がおかしくなる。

pgp/gpg でも同じですが、下記の様に次の X-Mew: がつながってしまいます。

X-Mew: <body> BAD S/MIME signX-Mew: From: has encoded-words in quoted text.

mew-decode-syntax-insert-warning() は行頭で call されるのを期待
しているのだけど、mew-decode-syntax-insert-privacy() で BAD だと、
(match-end 0)にポイントがある状態で *-insert-warning() が call
されるからです。いろいろやり方はあると思うけど、

(defun mew-decode-syntax-insert-privacy ()
  (save-excursion
    (when (mew-xinfo-get-pri-result)
      (let ((beg (point)))
	(insert (mew-xinfo-get-pri-result))
  ....

と一番外で save-excursion() しちゃうのがお手軽かしら。

ちなみに、gpg で署名を壊すと

X-Mew: <body multi> BAD PGP signX-Mew: From: has encoded-words in quoted text.
 "Foo BAR <hoge at example.com>" COMPLETE

になって、わけわかめ状態。


(2) application/x-pkcs7-signature の部分を壊すと、

X-Mew: <body> S/MIME NEED TO HACK

となりますが、mew-decode-syntax-insert-privacy() の
(re-search-forward "BAD.*sign" nil t) にひっかからないので
mew-face-header-xmew-bad が使われないため、ぱっと見でわかりにく
いです。下記の様に、積極的に "BAD S/MIME sign" を付けると良いか
な?と思われます。

(defun mew-smime-verify-check ()
  (goto-char (point-min))
  (if (search-forward "Good sign" nil t)
      (if (re-search-forward "aka \"\\(.*\\)\"\\|EMail=\\([^ \"]*\\)" nil t)
	  (format "Good S/MIME sign <%s>" (or (mew-match-string 1)
					      (mew-match-string 2)))
	"Good S/MIME sign")
    (if (search-forward "invalid sign" nil t)
	"BAD S/MIME sign"
      (if (search-forward "certificate has expired" nil t)
	  "BAD S/MIME sign - certificate has expired"
	(if (re-search-forward "invalid certification chain: Not trusted" nil t)
	    "BAD S/MIME sign - root is not trusted"
	  (if (re-search-forward "invalid certification chain:" nil t)
	      "BAD S/MIME sign - CRL is not available"
	    (if (re-search-forward "no signature value available" nil t)
		"BAD S/MIME sign - no signature"
	      "BAD S/MIME sign - NEED TO HACK")))))))

-- 
白井秀行 (mailto:shirai at example.com)



Mew-dist メーリングリストの案内