660b443c |
1 | use Catacomb qw(:const); |
2 | |
3 | package EV; |
4 | @ISA = qw(Catacomb::MP::Prime::Gen::Proc); |
5 | sub pgen_begin { my ($me, $ev) = @_; print $ev->name(), ": "; } |
6 | sub pgen_pass { print "*"; } |
7 | sub pgen_fail { print "."; } |
8 | sub pgen_done { print "*\n"; } |
9 | sub new { my $me = bless { FLUSH => $| }, $_[0]; $| = 1; return $me; } |
10 | sub DESTROY { my $me = shift; $| = $me->{FLUSH}; } |
11 | |
12 | package main; |
13 | |
14 | $mm = Catacomb::MP->factorial(16); |
15 | $mm2 = $mm; |
16 | $mm++; |
17 | print join(", ", $mm2->gcd(19)), "\n"; |
18 | |
19 | $md5 = Catacomb::HashClass->find("md5"); |
20 | $h = $md5->init(); |
21 | $h->hash("abc"); |
22 | $hh = $h->done(); |
23 | print length($hh), "\n"; |
24 | print unpack("H*", $hh), "\n"; |
25 | |
26 | foreach $i (Catacomb::CipherClass->list()) { |
27 | print $i->name(), "\n"; |
28 | } |
29 | |
30 | $p = Catacomb::MP::Prime::gen("p", $Catacomb::random->mp(512, 3), |
31 | 0, Catacomb::MP::Prime::Filter->stepper(4), |
32 | 5, Catacomb::MP::Prime::Rabin->tester(), |
33 | EV->new()); |
34 | $q = Catacomb::MP::Prime::gen("q", $Catacomb::random->mp(512, 3), |
35 | 0, Catacomb::MP::Prime::Filter->stepper(4), |
36 | 5, Catacomb::MP::Prime::Rabin->tester(), |
37 | EV->new()); |
38 | |
39 | print "p = $p\nq = $q\n"; |