1 | BEGIN { $| = 1; print "1..83\n"; } |
1 | BEGIN { $| = 1; print "1..100\n"; } |
2 | |
2 | |
3 | use Crypt::Spritz; |
3 | use Crypt::Spritz; |
4 | |
4 | |
5 | my $n = 0; |
5 | my $n = 0; |
|
|
6 | |
6 | my $c1 = new Crypt::Spritz; |
7 | my $c1 = new Crypt::Spritz; |
7 | |
8 | |
|
|
9 | for (1..3) { |
8 | for ( |
10 | for ( |
9 | # emacs!spritz! |
11 | [ABC => "779a8e01f9e9cbc0", "028fa2b48b934a18", "eb4765b22caa38ab", "a25b6e57fb35481b", "75ea088baadc803e"], |
10 | [ABC => "779a8e01f9e9cbc0", "028a8bfb39d4c846b302f9c1b13b05c6c578077485b528d2faab09e388a9a091"], |
12 | [spam => "f0609a1df143cebf", "acbba0813f300d3a", "433a025805dbb3b1", "e1eed00911069b9d", "782cf66ae9d1fdea"], |
11 | [spam => "f0609a1df143cebf", "acb7908ee9002d2ba0adb3ff46c675f84b0aa8ff7e3aec3807626b09b5516368"], |
13 | [arcfour => "1afa8b5ee337dbc7", "ff8cf268094c87b9", "c72e6cfc08b27d4a", "cac713dfba93cd79", "413397b795a75abf"], |
12 | [arcfour => "1afa8b5ee337dbc7", "ff1cbe5195b2dbb6398995603a125f56780b73821cd35dee5454969c3a02f753"], |
14 | ) { |
13 | ) { |
15 | my ($a, $r, $h, $m, $ec, $em) = @$_; |
14 | my ($a, $r, $h) = @$_; |
|
|
15 | |
16 | |
16 | $c1->absorb ($a); |
17 | $c1->absorb ($a); |
17 | my $s = unpack "H*", $c1->squeeze (0.5 * length $r); |
18 | my $s = unpack "H*", $c1->squeeze (0.5 * length $r); |
18 | print $s eq $r ? "" : "not ", "ok ", ++$n, " # AS1 $a => $s (= $r)\n"; |
19 | print $s eq $r ? "" : "not ", "ok ", ++$n, " # AS1 $a => $s (= $r)\n"; |
19 | |
20 | |
20 | $c1->init; |
21 | $c1->init; |
21 | |
22 | |
22 | my $c2 = new Crypt::Spritz; |
23 | my $c2 = $c1->clone; |
|
|
24 | $c2->absorb ($_) for split //, $a; |
|
|
25 | my $s = unpack "H*", join "", map $c2->squeeze (1), 1 .. 0.5 * length $r; |
|
|
26 | print $s eq $r ? "" : "not ", "ok ", ++$n, " # AS2 $a => $s (= $r)\n"; |
23 | |
27 | |
24 | $c2->absorb ($_) for split //, $a; |
28 | my $rng = new Crypt::Spritz::PRNG $a; |
25 | my $s = unpack "H*", join "", map $c2->squeeze (1), 1 .. 0.5 * length $r; |
29 | $rng = unpack "H*", $rng->get (0.5 * length $r); |
26 | print $s eq $r ? "" : "not ", "ok ", ++$n, " # AS2 $a => $s (= $r)\n"; |
30 | print $rng eq $r ? "" : "not ", "ok ", ++$n, " # R $a => $rng (= $r)\n"; |
27 | |
31 | |
28 | my $h1 = new Crypt::Spritz::HASH; |
32 | my $h1 = new Crypt::Spritz::Hash; |
29 | $h1->add ($a); |
33 | $h1->add ($a); |
30 | $h1 = unpack "H*", $h1->finish (32); |
34 | $h1 = unpack "H*", substr $h1->finish (32), 0, 0.5 * length $h; |
|
|
35 | print $h eq $h1 ? "" : "not ", "ok ", ++$n, " # H $a => $h1 (= $h)\n"; |
31 | |
36 | |
|
|
37 | my $mac1 = new Crypt::Spritz::MAC $a; |
|
|
38 | $mac1->add ("schmorp"); |
|
|
39 | $mac1 = unpack "H*", substr $mac1->finish (13), -8; |
32 | print $h eq $h1 ? "" : "not ", "ok ", ++$n, " # H $a => $h1 (= $h)\n"; |
40 | print $m eq $mac1 ? "" : "not ", "ok ", ++$n, " # M $a => $mac1 (= $m)\n"; |
|
|
41 | |
|
|
42 | my $ci = new Crypt::Spritz::Cipher $a; |
|
|
43 | my $ci1 = $ci->encrypt ($m); |
|
|
44 | my $ci = new Crypt::Spritz::Cipher $a; |
|
|
45 | $ci1 = $ci->decrypt ($ci1); |
|
|
46 | print $m eq $ci1 ? "" : "not ", "ok ", ++$n, " # CI1 $a => $ci1 (= $m)\n"; |
|
|
47 | |
|
|
48 | my $cx1 = new Crypt::Spritz::Cipher::XOR $a; |
|
|
49 | $cx1 = unpack "H*", $cx1->crypt ("12345678") ^ "12345678"; |
|
|
50 | print $r eq $cx1 ? "" : "not ", "ok ", ++$n, " # CX1 $a => $cx1 (= $r)\n"; |
|
|
51 | |
|
|
52 | my $cx2 = "98765432"; |
|
|
53 | Crypt::Spritz::Cipher::XOR->new ($a)->crypt_inplace ($cx2); |
|
|
54 | $cx2 = unpack "H*", $cx2 ^ "98765432"; |
|
|
55 | print $r eq $cx2 ? "" : "not ", "ok ", ++$n, " # CX2 $a => $cx2 (= $r)\n"; |
|
|
56 | |
|
|
57 | my $ae = new Crypt::Spritz::AEAD $a; $ae->nonce (45); $ae->associated_data (67); |
|
|
58 | my $ar1 = $ae->encrypt ($m); |
|
|
59 | my $ae = new Crypt::Spritz::AEAD $a; $ae->nonce (45); $ae->associated_data (67); |
|
|
60 | $ar1 = $ae->decrypt ($ar1); |
|
|
61 | print $m eq $ar1 ? "" : "not ", "ok ", ++$n, " # AR1 $a => $ar1 (= $m)\n"; |
|
|
62 | |
|
|
63 | my $ae = new Crypt::Spritz::AEAD::XOR $a; |
|
|
64 | $ae->nonce (12); |
|
|
65 | $ae->associated_data (34); |
|
|
66 | my $ar = unpack "H*", $ae->crypt ("A2345678") ^ "A2345678"; |
|
|
67 | print $ec eq $ar ? "" : "not ", "ok ", ++$n, " # AE1 $a => $ar (= $ec)\n"; |
|
|
68 | $ae = unpack "H*", $ae->finish (8); |
|
|
69 | print $em eq $ae ? "" : "not ", "ok ", ++$n, " # AE2 $a => $ae (= $em)\n"; |
|
|
70 | } |
33 | } |
71 | } |
34 | |
72 | |
|
|
73 | print "ok 100\n"; |
35 | |
74 | |