2008年4月14日

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

白井です。

# 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@xxxxx>" 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@xxxxx)

投稿者 xml-rpc : 2008年4月14日 11:00
役に立ちました?:
過去のフィードバック 平均:(0) 総合:(0) 投票回数:(0)
本記事へのTrackback: http://hoop.euqset.org/blog/mt-tb2006.cgi/72113
トラックバック
コメント
コメントする




画像の中に見える文字を入力してください。