[mew-dist 26147] mew-pgp-fetch-key 関係

SHIGENO Kazutaka shigeno at example.com
2005年 3月 24日 (木) 01:38:03 JST


重野です。

CVS の mew を追いかけて使っています。

昔ながらの PGP メッセージを C-cC-z で検証する際、
公開鍵が無いと X-Mew: フィールドに key ID が表示されますが、
PGP に pgp263i を使ってると以下ように 0x 付きで表示され、

 X-Mew: <body> No his/her public key ID = 0xXXXXXXXX

GnuPG 1.2.x だと以下のように 0x なしで表示されます。

 X-Mew: <body> No his/her public key ID = XXXXXXXX

ここからが問題なのですが、この状態から C-uC-cC-f で
X-Mew: にある key ID から key server にある公開鍵を入手しようとすると、
どちらの場合も A PGP key is not fetched と言われて失敗します。

mew-pgp.el の下記コードで 0x があることを期待してるのと、
"key ID" でなく "key. ID" と間に . が入ってるのが原因のようです。

      (cond
       ((and xmew
             (string-match "key. ID = \\(0x[0-9a-fA-F]+\\)" xmew nil)
             (setq keyid (mew-match-string 1 xmew)))

pgp.mit.edu で試した限りでは 0x 付きで検索しないと公開鍵が出てこないので、
GnuPG の場合は 0x を補間して検索するような動作が必要そうです。

あと mew の info を読むと、以下のように "key. ID" と書かれていました。
どちらか片方に統一した方がよさそうです。

================================================================
X-Mew: フィールドは他にもさまざまな結果を伝えてくれます。たとえば、署名
を検証するための公開鍵がないとか、復号化に失敗したなどです。以下の例は、
鍵 ID が 0x1B8BF431 である公開鍵がないことを示しています。

     X-Mew: <body multi> No his/her public key. ID = 0x1B8BF431

この場合、`C-cC-f' と入力すると、Mew は
`mew-pgp-keyserver-url-template' で指定された URL を使ってこの公開鍵の
入手を試みます。もし、X-Mew: フィールドがない場合は、`C-cC-f' は From:
を ID と考えます。また、`C-uC-cC-f' は、X-Mew: フィールドに加えて
`mew-x-pgp-key-list' に指定されたフィールドも鍵 ID を切り出す対象とし、
公開鍵の入手を試みます。
================================================================

ちなみに上の info (PGP/MIME を表示する) の
mew-pgp-keyserver-url-template は mew-pgp-pks-servers に
変更されてると思います。

-- shigeno



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