11 use Digest::MD5 qw(md5 md5_hex md5_base64);
14 # This is the output of: 'md5sum Changes README MD5.pm MD5.xs rfc1321.txt'
18 if (ord "A" == 193) { # EBCDIC
20 23cafa2de11474f0df8f808cc588bcc9 Changes
21 3519f3d02c7c91158f732f0f00064657 README
22 0268931475ae2a2e843ff58504cfa3f0 MD5.pm
23 1be293491bba726810f8e87671ee0328 MD5.xs
24 754b9db19f79dbc4992f7166eb0f37ce rfc1321.txt
28 23cafa2de11474f0df8f808cc588bcc9 Changes
29 3519f3d02c7c91158f732f0f00064657 README
30 0268931475ae2a2e843ff58504cfa3f0 MD5.pm
31 1be293491bba726810f8e87671ee0328 MD5.xs
32 754b9db19f79dbc4992f7166eb0f37ce rfc1321.txt
36 if (!(-f "README") && -f "../README") {
37 chdir("..") or die "Can't chdir: $!";
43 eval { require MIME::Base64; };
45 print "# $@: Will not test base64 methods\n";
49 for (split /^/, $EXPECT) {
50 my($md5hex, $file) = split ' ';
51 if ($ENV{PERL_CORE}) {
52 if ($file eq 'rfc1321.txt') { # Don't have it in core.
53 print "ok ", ++$testno, " # Skip: PERL_CORE\n";
57 my @path = qw(ext Digest MD5);
58 my $path = File::Spec->updir;
60 $path = File::Spec->catdir($path, shift @path);
62 $file = File::Spec->catfile($path, $file);
64 # print "# file = $file\n";
65 my $md5bin = pack("H*", $md5hex);
68 $md5b64 = MIME::Base64::encode($md5bin, "");
69 chop($md5b64); chop($md5b64); # remove padding
74 if (digest_file($file, 'digest') ne $md5bin) {
75 print "$file: Bad digest\n";
79 if (($got = digest_file($file, 'hexdigest')) ne $md5hex) {
80 print "$file: Bad hexdigest: got $got expected $md5hex\n";
84 if ($B64 && digest_file($file, 'b64digest') ne $md5b64) {
85 print "$file: Bad b64digest\n";
89 my $data = cat_file($file);
90 if (md5($data) ne $md5bin) {
91 print "$file: md5() failed\n";
94 if (md5_hex($data) ne $md5hex) {
95 print "$file: md5_hex() failed\n";
98 if ($B64 && md5_base64($data) ne $md5b64) {
99 print "$file: md5_base64() failed\n";
103 if (Digest::MD5->new->add($data)->digest ne $md5bin) {
104 print "$file: MD5->new->add(...)->digest failed\n";
107 if (Digest::MD5->new->add($data)->hexdigest ne $md5hex) {
108 print "$file: MD5->new->add(...)->hexdigest failed\n";
111 if ($B64 && Digest::MD5->new->add($data)->b64digest ne $md5b64) {
112 print "$file: MD5->new->add(...)->b64digest failed\n";
116 my @data = split //, $data;
117 if (md5(@data) ne $md5bin) {
118 print "$file: md5(\@data) failed\n";
121 if (Digest::MD5->new->add(@data)->digest ne $md5bin) {
122 print "$file: MD5->new->add(\@data)->digest failed\n";
125 my $md5 = Digest::MD5->new;
129 if ($md5->digest ne $md5bin) {
130 print "$file: $md5->add()-loop failed\n";
134 print "not " if $failed;
135 print "ok ", ++$testno, "\n";
141 my($file, $method) = @_;
142 $method ||= "digest";
143 #print "$file $method\n";
145 open(FILE, $file) or die "Can't open $file: $!";
147 my $digest = Digest::MD5->new->addfile(*FILE)->$method();
157 open(FILE, $file) or die "Can't open $file: $!";