summaryrefslogtreecommitdiffstats
path: root/perl/OpenSSL.pm
diff options
context:
space:
mode:
Diffstat (limited to 'perl/OpenSSL.pm')
-rw-r--r--perl/OpenSSL.pm80
1 files changed, 80 insertions, 0 deletions
diff --git a/perl/OpenSSL.pm b/perl/OpenSSL.pm
new file mode 100644
index 0000000000..21c05a44cf
--- /dev/null
+++ b/perl/OpenSSL.pm
@@ -0,0 +1,80 @@
+##
+## OpenSSL.pm
+##
+
+package OpenSSL;
+
+use Exporter;
+use DynaLoader;
+
+@ISA = qw(Exporter DynaLoader);
+@EXPORT = qw();
+
+$VERSION='0.92';
+bootstrap penSSL;
+
+@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]; (div($_[0],$_[1]))[0]; },
+"%" => sub { ($_[1],$_[0])=($_[0],$_[1]) if $_[2]; mod($_[0],$_[1]); },
+"**" => sub { ($_[1],$_[0])=($_[0],$_[1]) if $_[2]; exp($_[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;