Alt-Crypt-RSA-BigInt

 view release on metacpan or  search on metacpan

lib/Crypt/RSA/Key/Private.pm  view on Meta::CPAN

package Crypt::RSA::Key::Private;
use strict;
use warnings;

## Crypt::RSA::Key::Private
##
## 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.

use vars qw($AUTOLOAD $VERSION);
use base 'Crypt::RSA::Errorhandler';
use Tie::EncryptedHash;
use Data::Dumper;
use Math::BigInt try => 'GMP, Pari';
use Math::Prime::Util qw/is_prime/;
use Carp;

$Crypt::RSA::Key::Private::VERSION = '1.99';

sub new {

    my ($class, %params) = @_;
    my $self    = { Version => $Crypt::RSA::Key::Private::VERSION };
    if ($params{Filename}) {
        bless $self, $class;
        $self = $self->read (%params);
        return bless $self, $class;
    } else {
        bless $self, $class;
        $self->Identity ($params{Identity}) if $params{Identity};
        $self->Cipher   ($params{Cipher}||"Blowfish");
        $self->Password ($params{Password}) if $params{Password};
        return $self;
    }

}


sub AUTOLOAD {

    my ($self, $value) = @_;
    my $key = $AUTOLOAD; $key =~ s/.*:://;
    if ($key =~ /^(e|n|d|p|q|dp|dq|u|phi)$/) {
        my $prikey = \$self->{private}{"_$key"};
        if (defined $value) {
          $self->{Checked} = 0;
          if (ref $value eq 'Math::BigInt') {
            $$prikey = $value;
          } elsif (ref $value eq 'Math::Pari') {
            $$prikey = Math::BigInt->new($value->pari2pv);
          } else {
            $$prikey = Math::BigInt->new("$value");
          }
        }
        if (defined $$prikey) {
          $$prikey = Math::BigInt->new("$$prikey") unless ref($$prikey) eq 'Math::BigInt';
          return $$prikey;
        }
        return $self->{private_encrypted}{"_$key"} if defined $self->{private_encrypted}{"_$key"};
        return;
    } elsif ($key =~ /^Identity|Cipher|Password$/) {
        $self->{$key} = $value if $value;
        return $self->{$key};
    } elsif ($key =~ /^Checked$/) {
        my ($package) = caller();
        $self->{Checked} = $value if ($value && $package eq "Crypt::RSA::Key::Private") ;
        return $self->{Checked};
    }
}


sub hide {

 view all matches for this distribution
 view release on metacpan -  search on metacpan

( run in 1.265 second using v1.00-cache-2.02-grep-82fe00e-cpan-2c419f77a38b )