Much wider support for Catacomb in all its glory.
[catacomb-perl] / t / share.t
1 # -*-mode: perl; comment-column: 68-*-
2 use Test;
3 BEGIN { plan tests => 11; }
4 use Catacomb qw(:const $random);
5
6 $sec = $random->mp(256);
7 $sh = Catacomb::Share::Prime->new(3);
8 ok $sh->t == 3; #t 1
9 ok !defined $sh->p; #t 2
10 @sh = ();
11 $sh->mkshares($sec);
12 $p = $sh->p();
13 ok defined $p; #t 3
14 for (my $i = 0; $i < 5; $i++) {
15 $sh[$i] = $sh->get($i);
16 }
17 $sh = Catacomb::Share::Prime->new(3, $p);
18 ok $sh->p == $p; #t 4
19 $sh->add(2, $sh[2]);
20 ok $sh->add(4, $sh[4]) == 1; #t 5
21 ok $sh->i == 2; #t 6
22 $sh->add(1, $sh[1]);
23 $r = $sh->combine();
24 ok $r == $sec; #t 7
25 undef $sec;
26 undef $sh;
27 undef @sh;
28 undef $p;
29 undef $r;
30
31 $sec = $random->fill(16);
32 $sh = Catacomb::Share::GF->new(3, 16);
33 ok $sh->t == 3; #t 8
34 ok $sh->sz == 16; #t 9
35 @sh = ();
36 $sh->mkshares($sec);
37 for (my $i = 0; $i < 5; $i++) {
38 $sh[$i] = $sh->get($i);
39 }
40 $sh = Catacomb::Share::GF->new(3, 16);
41 $sh->add(2, $sh[2]);
42 ok $sh->add(3, $sh[3]) == 1; #t 10
43 $sh->add(0, $sh[0]);
44 $r = $sh->combine();
45 ok $r, $sec; #t 11
46 undef $sec;
47 undef $sh;
48 undef @sh;
49 undef $r;