[Mew-dist 07538] Re: mew, pgp and Mailing List

Atsushi Onoe onoe at example.com
1999年 2月 19日 (金) 10:13:17 JST


> > 圧縮の伸長機能は実装しました?
> 今は tsuchy が送りたがっている PGP2 encrypted が読めれば十分。

昨夜ようやく decrypt までたどり着いたので kazu 先生のおっしゃることが
理解できました。ZIP encrypted がでて来るのね。plain text だと思ってたよ。

そんで、確かに inflateInit() して inflate() 呼ぶとエラーを出すので、
zlib のソースをちらっと見たところ、こんなことが書いてありました。

|   /* handle undocumented nowrap option (no zlib header or check) */
|   z->state->nowrap = 0;
|   if (w < 0)
|   {
|     w = - w;
|     z->state->nowrap = 1;
|   }

手元に RFC1951 がないのですが、とりあえず PGP2 で encrypt された text は
decrypt 後以下に通すと読めるようになりました。
header がないので、inflateInit2 を使って負の bit 幅を指定するのが
ミソみたいですね。

                z_stream z;
                char zbuf[8192];        /*XXX*/

                memset(&z, 0, sizeof(z));
                z.next_in = data;
                z.avail_in = datalen;
                z.next_out = zbuf;
                z.avail_out = sizeof(zbuf);
                if (inflateInit2(&z, -15) != Z_OK) {
                        printf("inflateInit failed\n");
                        return -1;
                }
                n = inflate(&z, Z_FINISH);
                printf("inflate: %d, %s\n", n, z.msg ? z.msg : "no error");
                inflateEnd(&z);

> zlib の使い方が理解できないので、一から書こうと画策している今日この頃。

使えないと判断するなり、勉強/趣味のために自分で書きたいというならともかく、
使い方が理解できないという理由で捨てちゃうのはもったいないんじゃない?
私は圧縮や暗号には興味がないので、zlib + openssl 使っちゃいます。
# pgp コマンドは、backend としては「使えない」と判断しました。

尾上



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