1 |
package OpenSSL::BN; |
2 |
|
3 |
use 5.006; |
4 |
use strict; |
5 |
use warnings; |
6 |
use Carp; |
7 |
|
8 |
require Exporter; |
9 |
require DynaLoader; |
10 |
use AutoLoader; |
11 |
use OpenSSL; |
12 |
|
13 |
our @ISA = qw(Exporter DynaLoader); |
14 |
our %EXPORT_TAGS = ( 'all' => [ qw( |
15 |
|
16 |
) ] ); |
17 |
|
18 |
our @EXPORT_OK = ( @{ $EXPORT_TAGS{'all'} } ); |
19 |
|
20 |
our @EXPORT = qw( |
21 |
|
22 |
); |
23 |
our $VERSION = '0.01'; |
24 |
|
25 |
sub o($) { |
26 |
return new OpenSSL::BN($_[0]) unless ref $_[0]; |
27 |
return $_[0] if ref($_[0]) eq __PACKAGE__; |
28 |
$_[0]->can('as_number') ? $_[0]->as_number : new OpenSSL::BN($_[0]); |
29 |
|
30 |
ref $_[0] ? $_[0] : new OpenSSL::BN($_[0]); |
31 |
} |
32 |
|
33 |
use overload |
34 |
'=' => sub { $_[0]->clone }, |
35 |
'+' => sub { $_[0]->add (o($_[1])) }, |
36 |
'++' => sub { $_[0]->inc }, |
37 |
'-' => sub { $_[0]->sub (o($_[1])) }, |
38 |
'--' => sub { $_[0]->dec }, |
39 |
'*' => sub { $_[0]->mul (o($_[1])) }, |
40 |
'**' => sub { $_[0]->exp (o($_[1])) }, |
41 |
'/' => sub { $_[0]->div(o($_[1])) }, |
42 |
'%' => sub { $_[0]->mod(o($_[1])) }, |
43 |
'<<' => sub { $_[0]->lshift(int $_[1]) }, |
44 |
'>>' => sub { $_[0]->rshift(int $_[1]) }, |
45 |
'""' => sub { $_[0]->stringify }, |
46 |
'<=>' => sub { $_[2] ? $_[1]->icmp(o($_[0])) : $_[0]->icmp(o($_[1])) }, |
47 |
'cmp' => sub { $_[2] ? $_[1] cmp $_[0]->stringify : $_[0]->stringify cmp $_[1] }, |
48 |
"bool" => sub { $_[0]->bnbool }, |
49 |
'0+' => sub { $_[0]->stringify }; |
50 |
|
51 |
|
52 |
|
53 |
1; |
54 |
__END__ |
55 |
# Below is stub documentation for your module. You better edit it! |
56 |
|
57 |
=head1 NAME |
58 |
|
59 |
OpenSSL::BN - Perl extension for blah blah blah |
60 |
|
61 |
=head1 SYNOPSIS |
62 |
|
63 |
use OpenSSL::BN; |
64 |
blah blah blah |
65 |
|
66 |
=head1 DESCRIPTION |
67 |
|
68 |
Stub documentation for OpenSSL::BN, created by h2xs. It looks like the |
69 |
author of the extension was negligent enough to leave the stub |
70 |
unedited. |
71 |
|
72 |
Blah blah blah. |
73 |
|
74 |
=head2 EXPORT |
75 |
|
76 |
None by default. |
77 |
|
78 |
|
79 |
|
80 |
=head1 SEE ALSO |
81 |
|
82 |
Mention other useful documentation such as the documentation of |
83 |
related modules or operating system documentation (such as man pages |
84 |
in UNIX), or any relevant external documentation such as RFCs or |
85 |
standards. |
86 |
|
87 |
If you have a mailing list set up for your module, mention it here. |
88 |
|
89 |
If you have a web site set up for your module, mention it here. |
90 |
|
91 |
=head1 AUTHOR |
92 |
|
93 |
root, E<lt>root@sime.comE<gt> |
94 |
|
95 |
=head1 COPYRIGHT AND LICENSE |
96 |
|
97 |
Copyright 2001 by root |
98 |
|
99 |
This library is free software; you can redistribute it and/or modify |
100 |
it under the same terms as Perl itself. |
101 |
|
102 |
=cut |