The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.
#!/usr/bin/perl -s
##
## 08-secretkey.t
##
## Copyright (c) 2001, Vipul Ved Prakash.  All rights reserved.
## This code is free software; you can redistribute it and/or modify
## it under the same terms as Perl itself.
##
## $Id$

use FindBin qw($Bin);
use lib "$Bin/../lib";
use Crypt::RSA::Key::Private;
use Math::Pari qw(PARI);
use Data::Dumper;

print "1..9\n";
my $i = 0;
my $keyfile = "./rsa-secret-key";
my $n = PARI('90323071930747658587680108508312228275784837926947082008548691733142705211489057935389756600126815968792421058507821141460115569139868202311230475972964057619586895938810033730091286963807334963647271206191891975955352543611579505094807268518669728893837266971976327030260763032999438640559854194396431791831');
my $d = PARI('67127971444083894698111525475904660003183729815338076558133285445567873761935968153242120858787811852723994880704646906893782886401506943100433385617516203000465715740516516951676123755998421450101326454304488576875788190219482423178600060734811018449586201620558124277217738976109970655234934905138718729177');

my $key = new Crypt::RSA::Key::Private ( Password => 'a day so foul and fair' );
$key->n ($n);
$key->d ($d);

$key->hide();

print $key->n =~ m/^Blowfish/ ? "ok" : "not ok"; print " ", ++$i, "\n";
print $key->d =~ m/^Blowfish/ ? "ok" : "not ok"; print " ", ++$i, "\n";

$key->reveal ( Password => 'a day so foul and fair' );

print $key->n == $n ? "ok" : "not ok"; print " ", ++$i, "\n";
print $key->d == $d ? "ok" : "not ok"; print " ", ++$i, "\n";

$key->write(Filename => $keyfile);
$key->DESTROY();

print !($key->n) ? "ok" : "not ok"; print " ", ++$i, "\n";

my $pkey = new Crypt::RSA::Key::Private (Filename => $keyfile);
print $pkey->n =~ m/^Blowfish/ ? "ok" : "not ok"; print " ", ++$i, "\n";
print $pkey->d =~ m/^Blowfish/ ? "ok" : "not ok"; print " ", ++$i, "\n";

$pkey->reveal ( Password => 'a day so foul and fair' );

print $pkey->n == $n ? "ok" : "not ok"; print " ", ++$i, "\n";
print $pkey->d == $d ? "ok" : "not ok"; print " ", ++$i, "\n";

unlink $keyfile;