openssl/perl/OpenSSL.pm
Ulf Möller 49b8142262 Make the perl module compile and eliminate some of the warnings.
Still doesn't work (the destructor on BIO and SSL is called immediately
after creating the object. Why that??)
1999-07-22 16:10:31 +00:00

90 lines
2.3 KiB
Perl

##
## OpenSSL.pm
##
package OpenSSL;
require 5.000;
use Exporter;
use DynaLoader;
@ISA = qw(Exporter DynaLoader);
@EXPORT = qw();
$VERSION = '0.94';
bootstrap OpenSSL;
@OpenSSL::BN::ISA = qw(OpenSSL::ERR);
@OpenSSL::MD::ISA = qw(OpenSSL::ERR);
@OpenSSL::Cipher::ISA = qw(OpenSSL::ERR);
@OpenSSL::SSL::CTX::ISA = qw(OpenSSL::ERR);
@OpenSSL::BIO::ISA = qw(OpenSSL::ERR);
@OpenSSL::SSL::ISA = qw(OpenSSL::ERR);
@BN::ISA = qw(OpenSSL::BN);
@MD::ISA = qw(OpenSSL::MD);
@Cipher::ISA = qw(OpenSSL::Cipher);
@SSL::ISA = qw(OpenSSL::SSL);
@SSL::CTX::ISA = qw(OpenSSL::SSL::CTX);
@BIO::ISA = qw(OpenSSL::BIO);
@OpenSSL::MD::names = qw(
md2 md5 sha sha1 ripemd160 mdc2
);
@OpenSSL::Cipher::names = qw(
des-ecb des-cfb des-ofb des-cbc
des-ede des-ede-cfb des-ede-ofb des-ede-cbc
des-ede3 des-ede3-cfb des-ede3-ofb des-ede3-cbc
desx-cbc rc4 rc4-40
idea-ecb idea-cfb idea-ofb idea-cbc
rc2-ecb rc2-cbc rc2-40-cbc rc2-cfb rc2-ofb
bf-ecb bf-cfb bf-ofb bf-cbc
cast5-ecb cast5-cfb cast5-ofb cast5-cbc
rc5-ecb rc5-cfb rc5-ofb rc5-cbc
);
sub OpenSSL::SSL::CTX::new_ssl {
OpenSSL::SSL::new($_[0]);
}
sub OpenSSL::ERR::error {
my($o) = @_;
my($s, $ret);
while (($s = $o->get_error()) != 0) {
$ret.=$s."\n";
}
return($ret);
}
@OpenSSL::Cipher::aliases = qw(
des desx des3 idea rc2 bf cast
);
package OpenSSL::BN;
sub bnfix {
(ref($_[0]) ne "OpenSSL::BN") ? OpenSSL::BN::dec2bn($_[0]) : $_[0];
}
use overload
"=" => sub { dup($_[0]); },
"+" => sub { add($_[0],$_[1]); },
"-" => sub { ($_[1],$_[0])=($_[0],$_[1]) if $_[2]; OpenSSL::BN::sub($_[0],$_[1]); },
"*" => sub { mul($_[0],$_[1]); },
"**" => sub { ($_[1],$_[0])=($_[0],$_[1]) if $_[2]; OpenSSL::BN::exp($_[0],$_[1]); },
"/" => sub { ($_[1],$_[0])=($_[0],$_[1]) if $_[2]; (div($_[0],$_[1]))[0]; },
"%" => sub { ($_[1],$_[0])=($_[0],$_[1]) if $_[2]; mod($_[0],$_[1]); },
"<<" => sub { lshift($_[0],$_[1]); },
">>" => sub { rshift($_[0],$_[1]); },
"<=>" => sub { OpenSSL::BN::cmp($_[0],$_[1]); },
'""' => sub { bn2dec($_[0]); },
'0+' => sub { dec2bn($_[0]); },
"bool" => sub { ref($_[0]) eq "OpenSSL::BN"; };
sub OpenSSL::BIO::do_accept {
OpenSSL::BIO::do_handshake(@_);
}
1;