1#!/usr/bin/perl 2 3# Adapted from http://gist.github.com/212780 4 5use strict; 6use warnings; 7 8use Test::More tests => 7; 9use Digest::Whirlpool; 10#use Digest::MD5; 11 12my @digesters; 13 14for ( 1..5 ){ 15 push @digesters, { 16 whirlpool => Digest::Whirlpool->new(), 17 #md5 => Digest::MD5->new() 18 }; 19} 20 21# seeing that its constant accross instances. 22 23for ( @digesters ) { 24 my $hex = $_->{whirlpool}->hexdigest(); 25 my $hexd = $_->{whirlpool}->hexdigest(); 26 27 is($hex, $hexd, "Whirlpool: Two digest with no input added are the same"); 28 29 #$hex = $_->{md5}->hexdigest(); 30 #$hexd = $_->{md5}->hexdigest(); 31 32 #is($hex, $hexd, "MD5: Two digest with no input added are the same"); 33} 34 35sub some_key 36{ 37 my $hash = shift; 38 if (my @keys = keys %$hash) { 39 return $keys[0]; 40 } 41 return; 42} 43 44my $tests = 1000; 45 46 47# seeing that within a single digester, the same empty value results in a pseudorandom sequence generation. 48{ 49 my (%whirl, %md5); 50 51 $digesters[0]->{whirlpool}->reset(); 52 #$digesters[0]->{md5}->reset(); 53 54 for ( 1..$tests ) { 55 my $digest = $digesters[0]->{whirlpool}->hexdigest; 56 $whirl{$digest} = 1; 57 } 58 59 is_deeply({ some_key(\%whirl) => 1 }, \%whirl, "Whirlpool: Should only have one digest"); 60 61 #for ( 1..$tests ){ 62 # my $digest = $digesters[0]->{md5}->hexdigest; 63 # $md5{ $digest } = 1; 64 #} 65 66 #is_deeply({ some_key(\%md5) => 1 }, \%md5, "MD5: Should only have one digest"); 67} 68 69 70# seeing that the digester doesn't conform to the specification that the rest conform to 71# with regard to hexdigest resetting the state. 72{ 73 my (%whirl, %md5); 74 75 $digesters[0]->{whirlpool}->reset(); 76 #$digesters[0]->{md5}->reset(); 77 78 for ( 1..$tests ) { 79 $digesters[0]->{whirlpool}->add('hello'); 80 my $digest = $digesters[0]->{whirlpool}->hexdigest; 81 $whirl{$digest} = 1; 82 } 83 84 is_deeply({ some_key(\%whirl) => 1 }, \%whirl, "Whirlpool: Should only have one digest"); 85 86 #for ( 1..$tests ){ 87 # $digesters[0]->{md5}->add('hello'); 88 # my $digest = $digesters[0]->{md5}->hexdigest; 89 # $md5{ $digest } = 1; 90 #} 91 92 #is_deeply({ some_key(\%md5) => 1 }, \%md5, "MD5: Should only have one digest"); 93} 94