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
|
##
## 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;
|