aboutsummaryrefslogtreecommitdiffstats
path: root/misc/xs/Botan.pm
blob: ac4ad91fb65b6ae33af816d53d79e410b6b52cc6 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
package Botan;

use strict;
use vars qw($VERSION @ISA @EXPORT @EXPORT_OK %EXPORT_TAGS $AUTOLOAD);

require DynaLoader;
require AutoLoader;
use Carp;

@ISA = qw(DynaLoader);
$VERSION = '0.01';

@EXPORT_OK = qw(
	NONE
	IGNORE_WS
	FULL_CHECK
);

%EXPORT_TAGS = (
	'all'	=> [ @EXPORT_OK ],
	'decoder_checking'	=> [ qw(
	    NONE
	    IGNORE_WS
	    FULL_CHECK
	)],

);


sub AUTOLOAD
{
    # This AUTOLOAD is used to 'autoload' constants from the constant()
    # XS function.  If a constant is not found then control is passed
    # to the AUTOLOAD in AutoLoader.

    my $constname = $AUTOLOAD;
    $constname =~ s/.*:://;
    croak '& not defined' if $constname eq 'constant';
#    my $val = constant($constname, @_ ? $_[0] : 0);
    my $val = constant($constname);
    if ($! != 0) {
        if ( $! =~ /Invalid/ )
	{
            $AutoLoader::AUTOLOAD = $AUTOLOAD;
            goto &AutoLoader::AUTOLOAD;
        }
        else
	{
	    croak "Your vendor has not defined Botan symbol $constname";
        }
    }
    no strict 'refs';
    *$AUTOLOAD = sub { $val };
    goto &$AUTOLOAD;
}


bootstrap Botan $VERSION;

# to setup inheritance...

package Botan::Filter;
use vars qw(@ISA);
@ISA = qw();

package Botan::Chain;
use vars qw(@ISA);
@ISA = qw( Botan::Filter );

package Botan::Fork;
use vars qw(@ISA);
@ISA = qw( Botan::Filter );

package Botan::Hex_Encoder;
use vars qw(@ISA);
@ISA = qw( Botan::Filter );

package Botan::Hex_Decoder;
use vars qw(@ISA);
@ISA = qw( Botan::Filter );

package Botan::Base64_Decoder;
use vars qw(@ISA);
@ISA = qw( Botan::Filter );

package Botan::Base64_Encoder;
use vars qw(@ISA);
@ISA = qw( Botan::Filter );


package Botan;

1;
__END__

=head1 NAME

Botan - Perl extension for access to Botan ...

=head1 SYNOPSIS

  use Botan;
  blah blah blah

=head1 DESCRIPTION

Blah blah blah.

=head1 AUTHOR

Vaclav Ovsik <vaclav.ovsik@i.cz>

=head1 SEE ALSO

Bla

=cut