pgg-scheme-sign-region について

中川 誠 Makoto.Nakagawa @ hp.com
2005年 3月 29日 (火) 19:48:52 JST


中川@日本HP(株)です。

In message "Re: pgg-scheme-sign-region について"
    on 05/03/26, Daiki Ueno <ueno @ unixuser.org> wrote:

  >> pgg-gpg では署名対象の領域の行末を CRLF に変換してから、
  >> binary-to-text-funcall を使って gpg コマンドを呼び出しています。

  >> pgg-{pgp,pgp5} では署名対象の領域 binary-func で pgp コマンドを呼び出し
  >> た後で、出力結果の行末について LF に変換しています。smime も同様の処理と
  >> なっています。

  >> 行末の正規化という意味では pgg-gpg の方式が正しいように思われるのですが、
  >> 何故 pgg-pgp などは現在の実装方法になっているのでしょうか。

  >> これが原因かどうかは分っていませんが、pgp で証明をおこなったメールについ
  >> て gpg で検証をおこなうと、bad signature となってしまいます。

  > pgg-{pgp,pgp5} のバグだと思います。

  > 昔の PGP には行末正規化の機能があったので、開発の経緯で「なんとなく動作
  > してしまった」のではないでしょうか。

なるほど。今(?)の PGP にも行末正規化の機能は存在しているように思えます。
手許の環境で試した限りでは、以下のことが確認できました。

利用したのは以下のバージョンです。

$ pgp -v
Pretty Good Privacy(tm) 2.6.3ia - Public-key encryption for the masses.
(c) 1990-96 Philip Zimmermann, Phil's Pretty Good Software. 1996-03-04
Current time: 2005/03/29 10:48 GMT

Invalid arguments.

For a usage summary, type:  pgp -h
For more detailed help, consult the PGP User's Guide.

$ gpg --version
gpg (GnuPG) 1.2.5
Copyright (C) 2004 Free Software Foundation, Inc.
This program comes with ABSOLUTELY NO WARRANTY.
This is free software, and you are welcome to redistribute it
under certain conditions. See the file COPYING for details.

Home: ~/.gnupg
Supported algorithms:
Pubkey: RSA, RSA-E, RSA-S, ELG-E, DSA, ELG
Cipher: IDEA, 3DES, CAST5, BLOWFISH, AES, AES192, AES256, TWOFISH
Hash: MD5, SHA1, RIPEMD160, SHA256
Compression: Uncompressed, ZIP, ZLIB, BZIP2

pgp -t で分離署名を実施した場合、署名対象のファイルの行末を CRLF <-> LF 
に変更したとしても、検証には成功します。ところが -t を付けないと、署名対
象のファイルの行末を変更した時点で、検証には失敗するようになります。

これは pgp での分離署名を gpg で検証する場合にもあてはまります。

ところが、pgg-pgp にて署名を実施した場合には、どうやっても pgg-gpg での
検証に成功しません。pgp/gpg のソースを追えば理由が判明するかもしれません
が、そこまでは手が出ていません。

pgg-pgp.el について、pgp に行末の正規化をまかせないようにするためのパッ
チを添付します。このパッチを適用後では、pgg-pgp で実施した署名を pgg-gpg 
で検証することができています。

また、パッチ適用後においても pgg-pgp で実施した署名を pgg-pgp で検証する
ことができています。

-------------- next part --------------
--- /usr/share/emacs21/site-lisp/semi/pgg-pgp.el	Thu Aug 12 00:12:56 2004
+++ ./pgg-pgp.el	Tue Mar 29 19:14:06 2005
@@ -171,10 +171,11 @@
 	   (format "PGP passphrase for %s: " pgg-pgp-user-id)
 	   (pgg-scheme-lookup-key scheme pgg-pgp-user-id 'sign)))
 	 (args
-	  (list (if clearsign "-fast" "-fbast")
+	  (list (if clearsign "-fast" "-fbas")
 		"+verbose=1" "+language=us" "+batchmode"
 		"-u" pgg-pgp-user-id)))
-    (pgg-pgp-process-region start end passphrase pgg-pgp-program args)
+    (pgg-as-lbt start end 'CRLF
+      (pgg-pgp-process-region start end passphrase pgg-pgp-program args))
     (pgg-process-when-success
       (goto-char (point-min))
       (when (re-search-forward "^-+BEGIN PGP" nil t);XXX

-------------- next part --------------
-- 
/***   Hewlett-Packard Japan, Ltd.                                ***/
/***   Manufacturing Accounts #3 Practice                         ***/
/***   Consulting & Integration                                   ***/
/***   Nakagawa, Makoto(中川 誠)                               ***/
/***   PGP: 0B33 EAC3 F2F6 3D10 D9E9  AE7F 8EDA 44F9 1D29 D44A    ***/
-------------- next part --------------
テキスト形式以外の添付ファイルを保管しました...
ファイル名: 無し
型:         application/pgp-signature
サイズ:     286 バイト
説明:       無し
URL:        <http://lists.chise.org/pipermail/emacs-mime-ja/attachments/20050329/3a912cc1/attachment.pgp>


More information about the Emacs-mime-ja mailing list