src/rough に入れてある ext/digest ですが、先ほどの更新で、当初
からの目標であった各クラスの重複処理の共通化を達成しましたので、
みなさんのレビューをお願いします。

 digest モジュールとは、 ext/md5 と ext/sha1 を統合して新たに
RMD160 を加えたもので、それぞれのアルゴリズムに従ってメッセージ
ダイジェストを計算するためのモジュールです。今のところは、単に
三つのクラスを別個に提供しているだけです。(一回で複数計算できる
ものも、もし需要があれば将来的に入れたいと思います)

 ということで、すべてのプラットフォームでのビルドと動作が確認
され次第、 ext/md5 と ext/sha1 を廃止して ext/digest を標準導入
したいと思います。互換性を考慮し、ダミーの lib/{md5,sha1}.rb を
用意してあります。(中身は単に require 'digest' しているだけ)

 手元では FreeBSD と Debian GNU/Linux についてテストし、共に
うまく動くことが確認できました。(NetBSD 環境は壊れてしまったので
復旧中... ;)

 特に他の環境をお持ちの方はテストに協力して頂けると幸いです。
物は、 CVS や CVSup、もしくは CVSweb で取れます。

tar+gz形式:
	http://www.ruby-lang.org/cgi-bin/cvsweb.cgi/rough/ext/digest/digest.tar.gz?tarball=1

zip形式:
	http://www.ruby-lang.org/cgi-bin/cvsweb.cgi/rough/ext/digest/digest.zip?tarball=1


 展開後、 test.sh を実行すると:

a) 付属の md5.[ch], sha1.[ch], rmd160.[ch], rmd160hl.c [*]

b) システム(libc, libmd, libcrypt, libssl 等)から検出された
   MD5/SHA1/RMD160 関数

の組み込んでそれぞれビルドし、文字列 "a" に対するダイジェストを
算出して出力します。

 スクリプトでは両者の結果を比較するようになっていませんが、
同じ値になっているかどうかは目で確認してください。 ;)

 コンパイルエラーやウォーニングの類が出た場合は、もらさず報告
してくださるようお願いします。コーディングに変なところや改善
できるところがあれば遠慮なくご指摘ください。


[*] rmd160* については、アルゴリズム考案者による参照実装(照会
    したところ BSDL でよいという返答でした)を元に *BSD で保守
    されてきたものを持ってきました。全体として BSDL で扱えます。
    md5.[ch] と sha1.[ch] についてはパブリックドメインです。

-- 
                     /
                    /__  __            Akinori.org / MUSHA.org
                   / )  )  ) )  /     FreeBSD.org / Ruby-lang.org
Akinori MUSHA aka / (_ /  ( (__(  @ iDaemons.org / and.or.jp

"Freeze this moment a little bit longer, make each impression
  a little bit stronger..  Experience slips away -- Time stand still"