| 
									
										
										
										
											1999-02-10 17:38:31 +08:00
										 |  |  | ## | 
					
						
							|  |  |  | ##  OpenSSL.pm | 
					
						
							|  |  |  | ## | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | package OpenSSL; | 
					
						
							| 
									
										
										
										
											1998-12-21 18:56:39 +08:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											1999-03-08 19:25:49 +08:00
										 |  |  | require 5.000; | 
					
						
							| 
									
										
										
										
											1998-12-21 18:56:39 +08:00
										 |  |  | use Exporter; | 
					
						
							|  |  |  | use DynaLoader; | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											1999-03-08 19:25:49 +08:00
										 |  |  | @ISA    = qw(Exporter DynaLoader); | 
					
						
							| 
									
										
										
										
											1998-12-21 18:56:39 +08:00
										 |  |  | @EXPORT = qw(); | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											1999-03-22 22:57:24 +08:00
										 |  |  | $VERSION = '0.922'; | 
					
						
							| 
									
										
										
										
											1999-03-08 19:25:49 +08:00
										 |  |  | 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 | 
					
						
							|  |  |  | ); | 
					
						
							| 
									
										
										
										
											1998-12-21 18:56:39 +08:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											1999-02-10 17:38:31 +08:00
										 |  |  | package OpenSSL::BN; | 
					
						
							| 
									
										
										
										
											1998-12-21 18:56:39 +08:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											1999-03-08 19:25:49 +08:00
										 |  |  | sub bnfix {  | 
					
						
							|  |  |  |     (ref($_[0]) ne "OpenSSL::BN") ? OpenSSL::BN::dec2bn($_[0]) : $_[0];  | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											1998-12-21 18:56:39 +08:00
										 |  |  | use overload | 
					
						
							| 
									
										
										
										
											1999-03-08 19:25:49 +08:00
										 |  |  | "="    => 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]); }, | 
					
						
							| 
									
										
										
										
											1999-02-10 17:38:31 +08:00
										 |  |  | "bool" => sub { ref($_[0]) eq "OpenSSL::BN"; }; | 
					
						
							| 
									
										
										
										
											1998-12-21 18:56:39 +08:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											1999-03-08 19:25:49 +08:00
										 |  |  | sub OpenSSL::BIO::do_accept {  | 
					
						
							|  |  |  |     OpenSSL::BIO::do_handshake(@_); | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											1998-12-21 18:56:39 +08:00
										 |  |  | 1; |