X-Git-Url: https://git.distorted.org.uk/~mdw/catacomb-perl/blobdiff_plain/f9952aec1cf6c64a5681308eea817b6113a37433..fcd15e0b7a3d0f0ca2f30953573f8d1f6b8e8bd2:/t/share.t diff --git a/t/share.t b/t/share.t new file mode 100644 index 0000000..f4c7293 --- /dev/null +++ b/t/share.t @@ -0,0 +1,49 @@ +# -*-mode: perl; comment-column: 68-*- +use Test; +BEGIN { plan tests => 11; } +use Catacomb qw(:const $random); + +$sec = $random->mp(256); +$sh = Catacomb::Share::Prime->new(3); +ok $sh->t == 3; #t 1 +ok !defined $sh->p; #t 2 +@sh = (); +$sh->mkshares($sec); +$p = $sh->p(); +ok defined $p; #t 3 +for (my $i = 0; $i < 5; $i++) { + $sh[$i] = $sh->get($i); +} +$sh = Catacomb::Share::Prime->new(3, $p); +ok $sh->p == $p; #t 4 +$sh->add(2, $sh[2]); +ok $sh->add(4, $sh[4]) == 1; #t 5 +ok $sh->i == 2; #t 6 +$sh->add(1, $sh[1]); +$r = $sh->combine(); +ok $r == $sec; #t 7 +undef $sec; +undef $sh; +undef @sh; +undef $p; +undef $r; + +$sec = $random->fill(16); +$sh = Catacomb::Share::GF->new(3, 16); +ok $sh->t == 3; #t 8 +ok $sh->sz == 16; #t 9 +@sh = (); +$sh->mkshares($sec); +for (my $i = 0; $i < 5; $i++) { + $sh[$i] = $sh->get($i); +} +$sh = Catacomb::Share::GF->new(3, 16); +$sh->add(2, $sh[2]); +ok $sh->add(3, $sh[3]) == 1; #t 10 +$sh->add(0, $sh[0]); +$r = $sh->combine(); +ok $r, $sec; #t 11 +undef $sec; +undef $sh; +undef @sh; +undef $r;