mirror of https://github.com/openssl/openssl.git
				
				
				
			
		
			
				
	
	
		
			91 lines
		
	
	
		
			2.3 KiB
		
	
	
	
		
			Perl
		
	
	
	
			
		
		
	
	
			91 lines
		
	
	
		
			2.3 KiB
		
	
	
	
		
			Perl
		
	
	
	
| ##
 | |
| ##  OpenSSL.pm
 | |
| ##
 | |
| 
 | |
| package OpenSSL;
 | |
| 
 | |
| require 5.000;
 | |
| use Exporter;
 | |
| use DynaLoader;
 | |
| 
 | |
| @ISA    = qw(Exporter DynaLoader);
 | |
| @EXPORT = qw();
 | |
| 
 | |
| $VERSION = '0.922';
 | |
| 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;
 |