home *** CD-ROM | disk | FTP | other *** search
- #!/usr/bin/perl -sw
- ##
- ## 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.
- ##
- ## $Id: Errorhandler.pm,v 1.5 2001/06/22 23:27:35 vipul Exp $
-
- package Crypt::RSA::Errorhandler;
- use strict;
-
- 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 occured. This is because errstr() is
- never overwritten and will always contain a value after the occurance of
- first error.
-
- =head1 METHODS
-
- =over 4
-
- =item B<error($mesage, ($wipeme, $wipemetoo))>
-
- The first argument to error() is $message which is placed in
- $self->{errstr} and the remaining arguments are interpretted 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}.
-
- =back
-
- =head1 AUTHOR
-
- Vipul Ved Prakash, E<lt>mail@vipul.netE<gt>
-
- =head1 SEE ALSO
-
- Crypt::RSA(3)
-
- =cut
-
-
-