なかだです。

At Fri, 06 Jul 2001 18:18:20 +0900,
Akinori MUSHA <knu / iDaemons.org> wrote:
>  展開後、 test.sh を実行すると:
> 
> a) 付属の md5.[ch], sha1.[ch], rmd160.[ch], rmd160hl.c [*]
> 
> b) システム(libc, libmd, libcrypt, libssl 等)から検出された
>    MD5/SHA1/RMD160 関数
> 
> の組み込んでそれぞれビルドし、文字列 "a" に対するダイジェストを
> 算出して出力します。
> 
>  スクリプトでは両者の結果を比較するようになっていませんが、
> 同じ値になっているかどうかは目で確認してください。 ;)

  RedHat Linux 7.1 だと、。

creating Makefile
gcc -fPIC -g -O2 -fPIC  -DHAVE_CONFIG_H -DHAVE_RMD160END -Dlint -I/usr/lib/ruby/1.6/i686-linux -I/usr/include    -c digest.c
gcc -fPIC -g -O2 -fPIC  -DHAVE_CONFIG_H -DHAVE_RMD160END -Dlint -I/usr/lib/ruby/1.6/i686-linux -I/usr/include    -c md5.c
gcc -fPIC -g -O2 -fPIC  -DHAVE_CONFIG_H -DHAVE_RMD160END -Dlint -I/usr/lib/ruby/1.6/i686-linux -I/usr/include    -c sha1.c
gcc -fPIC -g -O2 -fPIC  -DHAVE_CONFIG_H -DHAVE_RMD160END -Dlint -I/usr/lib/ruby/1.6/i686-linux -I/usr/include    -c rmd160.c
gcc -fPIC -g -O2 -fPIC  -DHAVE_CONFIG_H -DHAVE_RMD160END -Dlint -I/usr/lib/ruby/1.6/i686-linux -I/usr/include    -c rmd160hl.c
gcc -shared  -L/usr/lib  -o digest.so digest.o md5.o sha1.o rmd160.o rmd160hl.o -L. -lruby -lc 
0cc175b9c0f1b6a831c399e269772661
86f7e437faa5a7fce15d1ddcb9eaeaea377667b8
0bdc9d2d256b3ee9daae347be6f4dc835a467ffe
checking for md5.h... yes
checking for MD5_Init()... no
checking for MD5Init()... no
checking for main() in -lmd... no
checking for () in -lcrypto... yes
checking for main() in -lssl... yes
checking for md5.h... yes
checking for MD5_Init()... yes
checking for MD5End()... no
checking for sha1.h... no
checking for sha.h... yes
checking for SHA1Init()... no
checking for SHA1_Init()... yes
checking for SHA1End()... no
checking for ripemd.h... yes
checking for RMD160Init()... no
checking for RMD160_Init()... no
checking for RIPEMD160_Init()... yes
checking for RMD160End()... no
creating Makefile
gcc -fPIC -g -O2 -fPIC  -DHAVE_CONFIG_H -DHAVE_MD5 -DHAVE_SHA1 -DHAVE_RMD160 -I/usr/lib/ruby/1.6/i686-linux -I/usr/include -DHAVE_MD5_H -DHAVE_MD5_H -DHAVE_MD5_INIT -DHAVE_SHA_H -DHAVE_SHA1_INIT -DHAVE_RIPEMD_H -DHAVE_RIPEMD160_INIT   -I/usr/include/openssl -c digest.c
In file included from digest.h:18,
                 from digest.c:31:
/usr/include/md5.h:27: parse error before `UINT4'
/usr/include/md5.h:27: warning: no semicolon at end of struct or union
/usr/include/md5.h:28: warning: data definition has no type or storage class
/usr/include/md5.h:30: parse error before `}'
/usr/include/md5.h:30: warning: data definition has no type or storage class
/usr/include/md5.h:32: parse error before `PROTO_LIST'
/usr/include/md5.h:33: parse error before `PROTO_LIST'
/usr/include/md5.h:35: parse error before `PROTO_LIST'
/usr/include/md5.h:37: parse error before `PROTO_LIST'
digest.c:250: parse error before `*'
digest.c: In function `MD5End':
digest.c:255: `pctx' undeclared (first use in this function)
digest.c:255: (Each undeclared identifier is reported only once
digest.c:255: for each function it appears in.)
digest.c:258: `hexdigest' undeclared (first use in this function)
make: *** [digest.o] エラー 1

  digest.h の #include <md5.h> の前に #include <md5global.h>を
追加したところ、MD5が一致しません。

gcc -fPIC -g -O2 -fPIC  -DHAVE_CONFIG_H -DHAVE_MD5 -DHAVE_SHA1 -DHAVE_RMD160 -I/usr/lib/ruby/1.6/i686-linux -I/usr/include -DHAVE_MD5_H -DHAVE_MD5_H -DHAVE_MD5_INIT -DHAVE_SHA_H -DHAVE_SHA1_INIT -DHAVE_RIPEMD_H -DHAVE_RIPEMD160_INIT   -I/usr/include/openssl -c digest.c
gcc -shared  -L/usr/lib -L/usr/lib  -o digest.so digest.o -L. -lruby -lssl -lcrypto -lc 
0422baef86ce8a1b7853244f1b5ec48e
86f7e437faa5a7fce15d1ddcb9eaeaea377667b8
0bdc9d2d256b3ee9daae347be6f4dc835a467ffe

  各バージョンはこんな感じ。

cyrus-sasl-devel-1.5.24-17
	/usr/include/md5.h		
openssl-devel-0.9.6-3
	/usr/include/openssl/sha.h	
	/usr/include/openssl/ripemd.h
	/usr/lib/libcrypto.so
	/usr/lib/libssl.so

-- 
--- 僕の前にBugはない。
--- 僕の後ろにBugはできる。
    中田 伸悦