e3411948d7be6265258a35ffa3b14cb662e91b3f
[openssl.git] / perl / r.pl
1 #!/usr/local/bin/perl
2
3 use ExtUtils::testlib;
4
5 use SSLeay;
6
7 $bits=512;
8 $bits=$ARGV[0] if $#ARGV >= 0;
9
10 $q=SSLeay::BN::dec2bn("334533373942443239443435463034324139443635374634423531423146313742443038394230324138363038393539303745363034393946353346323345374537463935433635374238353245344341444241344138413244373443323338334431414134363244443532423243423133433537");
11
12 $p=SSLeay::BN::dec2bn("3338413942343132463534373734353742343636444439363131313131353843334536434330363934313646414132453044434138413630434631334134443046313735313632344131433437443642434436423642453234383046393732383538444139393131314339303743393939363744443235443332393332394543384630304634323646333735");
13 $pp=SSLeay::BN::generate_prime($bits/2,0,sub {print STDERR $_[0]?"+":"."});
14
15 printf $pp->is_prime."\n";
16 printf $p->is_prime."\n";
17 printf $q->is_prime."\n";
18 printf "p->length=%d\n",$p->num_bits;
19 printf "q->length=%d\n",$q->num_bits;
20 $bits=$p->num_bits+$q->num_bits;
21 $e=SSLeay::BN::hex2bn("10001");
22
23 $t1=$p-1;
24 $t2=$q-1;
25
26 ($t1->gcd($e) == 1) || die "p failed the gcd test\n";
27 ($t2->gcd($e) == 1) || die "q failed the gcd test\n";
28
29 ($q,$p)=($p,$q) if ($p < $q);
30 $n=$p*$q;
31 $t=($p-1)*($q-1);
32 ($t->gcd($e) == 1) || die "t failed the gcd test\n";
33
34 $d=$e->mod_inverse($t);
35
36 $dmp1=$d%($p-1);
37 $dmq1=$d%($q-1);
38 $iqmp=$q->mod_inverse($p);
39
40 print "n   =$n\n";
41 print "e   =$e\n";
42 print "d   =$d\n";
43 print "dmp1=$dmp1\n";
44 print "dmq1=$dmq1\n";
45 print "iqmp=$iqmp\n";
46
47 $a=SSLeay::BN::bin2bn("This is an RSA test");
48 print "Test with\n'".$a->bn2bin."' or\n$a\n";
49
50 print "<$a>\n";
51 $t1=$a->mod_exp($e,$n);
52 print ">$t1>\n";
53 $t2=$t1->mod_exp($d,$n);
54 print "<$t2>\n";
55
56