Initial Commit
This commit is contained in:
132
database/perl/vendor/lib/Crypt/RSA/Errorhandler.pm
vendored
Normal file
132
database/perl/vendor/lib/Crypt/RSA/Errorhandler.pm
vendored
Normal file
@@ -0,0 +1,132 @@
|
||||
package Crypt::RSA::Errorhandler;
|
||||
use strict;
|
||||
use warnings;
|
||||
|
||||
## Crypt::RSA::Errorhandler -- Base class that provides error
|
||||
## handling functionality.
|
||||
##
|
||||
## 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.
|
||||
|
||||
sub new {
|
||||
bless {}, shift
|
||||
}
|
||||
|
||||
|
||||
sub error {
|
||||
my ($self, $errstr, @towipe) = @_;
|
||||
$$self{errstr} = "$errstr\n";
|
||||
for (@towipe) {
|
||||
my $var = $_;
|
||||
if (ref($var) =~ /Crypt::RSA/) {
|
||||
$var->DESTROY();
|
||||
} elsif (ref($var) eq "SCALAR") {
|
||||
$$var = "";
|
||||
} elsif (ref($var) eq "ARRAY") {
|
||||
@$var = ();
|
||||
} elsif (ref($var) eq "HASH") {
|
||||
%$var = ();
|
||||
}
|
||||
}
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
sub errstr {
|
||||
my $self = shift;
|
||||
return $$self{errstr};
|
||||
}
|
||||
|
||||
sub errstrrst {
|
||||
my $self = shift;
|
||||
$$self{errstr} = "";
|
||||
}
|
||||
|
||||
1;
|
||||
|
||||
|
||||
=head1 NAME
|
||||
|
||||
Crypt::RSA::Errorhandler - Error handling mechanism for Crypt::RSA.
|
||||
|
||||
=head1 SYNOPSIS
|
||||
|
||||
package Foo;
|
||||
|
||||
use Crypt::RSA::Errorhandler;
|
||||
@ISA = qw(Crypt::RSA::Errorhandler);
|
||||
|
||||
sub alive {
|
||||
..
|
||||
..
|
||||
return
|
||||
$self->error ("Awake, awake! Ring the alarum bell. \
|
||||
Murther and treason!", $dagger)
|
||||
if $self->murdered($king);
|
||||
}
|
||||
|
||||
|
||||
package main;
|
||||
|
||||
use Foo;
|
||||
my $foo = new Foo;
|
||||
$foo->alive($king) or print $foo->errstr();
|
||||
# prints "Awake, awake! ... "
|
||||
|
||||
=head1 DESCRIPTION
|
||||
|
||||
Crypt::RSA::Errorhandler encapsulates the error handling mechanism used
|
||||
by the modules in Crypt::RSA bundle. Crypt::RSA::Errorhandler doesn't
|
||||
have a constructor and is meant to be inherited. The derived modules use
|
||||
its two methods, error() and errstr(), to communicate error messages to
|
||||
the caller.
|
||||
|
||||
When a method of the derived module fails, it calls $self->error() and
|
||||
returns undef to the caller. The error message passed to error() is made
|
||||
available to the caller through the errstr() accessor. error() also
|
||||
accepts a list of sensitive data that it wipes out (undef'es) before
|
||||
returning.
|
||||
|
||||
The caller should B<never> call errstr() to check for errors. errstr()
|
||||
should be called only when a method indicates (usually through an undef
|
||||
return value) that an error has occurred. This is because errstr() is
|
||||
never overwritten and will always contain a value after the occurence of
|
||||
first error.
|
||||
|
||||
=head1 METHODS
|
||||
|
||||
=over 4
|
||||
|
||||
=item B<new()>
|
||||
|
||||
Barebones constructor.
|
||||
|
||||
=item B<error($mesage, ($wipeme, $wipemetoo))>
|
||||
|
||||
The first argument to error() is $message which is placed in $self-
|
||||
>{errstr} and the remaining arguments are interpreted as
|
||||
variables containing sensitive data that are wiped out from the
|
||||
memory. error() always returns undef.
|
||||
|
||||
=item B<errstr()>
|
||||
|
||||
errstr() is an accessor method for $self->{errstr}.
|
||||
|
||||
=item B<errstrrst()>
|
||||
|
||||
This method sets $self->{errstr} to an empty string.
|
||||
|
||||
=back
|
||||
|
||||
=head1 AUTHOR
|
||||
|
||||
Vipul Ved Prakash, E<lt>mail@vipul.netE<gt>
|
||||
|
||||
=head1 SEE ALSO
|
||||
|
||||
Crypt::RSA(3)
|
||||
|
||||
=cut
|
||||
|
||||
|
||||
Reference in New Issue
Block a user