BEGIN { $| = 1; print "1..83\n"; } use Crypt::Spritz; my $n = 0; my $c1 = new Crypt::Spritz; for ( # emacs!spritz! [ABC => "779a8e01f9e9cbc0", "028a8bfb39d4c846b302f9c1b13b05c6c578077485b528d2faab09e388a9a091"], [spam => "f0609a1df143cebf", "acb7908ee9002d2ba0adb3ff46c675f84b0aa8ff7e3aec3807626b09b5516368"], [arcfour => "1afa8b5ee337dbc7", "ff1cbe5195b2dbb6398995603a125f56780b73821cd35dee5454969c3a02f753"], ) { my ($a, $r, $h) = @$_; $c1->absorb ($a); my $s = unpack "H*", $c1->squeeze (0.5 * length $r); print $s eq $r ? "" : "not ", "ok ", ++$n, " # AS1 $a => $s (= $r)\n"; $c1->init; my $c2 = new Crypt::Spritz; $c2->absorb ($_) for split //, $a; my $s = unpack "H*", join "", map $c2->squeeze (1), 1 .. 0.5 * length $r; print $s eq $r ? "" : "not ", "ok ", ++$n, " # AS2 $a => $s (= $r)\n"; my $h1 = new Crypt::Spritz::HASH; $h1->add ($a); $h1 = unpack "H*", $h1->finish (32); print $h eq $h1 ? "" : "not ", "ok ", ++$n, " # H $a => $h1 (= $h)\n"; }