43 lines
903 B
Perl
43 lines
903 B
Perl
package Crypt::SSLeay::MainContext;
|
|
|
|
# maintains a single instance of the Crypt::SSLeay::CTX class
|
|
|
|
use strict;
|
|
use Carp ();
|
|
|
|
require Crypt::SSLeay::CTX;
|
|
|
|
my $ctx = &main_ctx();
|
|
|
|
sub main_ctx {
|
|
my $ssl_version = shift || 23;
|
|
|
|
my $ctx = Crypt::SSLeay::CTX->new($ssl_version);
|
|
$ctx->set_cipher_list($ENV{CRYPT_SSLEAY_CIPHER})
|
|
if $ENV{CRYPT_SSLEAY_CIPHER};
|
|
|
|
$ctx;
|
|
}
|
|
|
|
my %sub_cache = ('main_ctx' => \&main_ctx );
|
|
|
|
sub import {
|
|
my $pkg = shift;
|
|
my $callpkg = caller();
|
|
my @func = @_;
|
|
for (@func) {
|
|
s/^&//;
|
|
Carp::croak("Can't export $_ from $pkg") if /\W/;;
|
|
my $sub = $sub_cache{$_};
|
|
unless ($sub) {
|
|
my $method = $_;
|
|
$method =~ s/^main_ctx_//; # optional prefix
|
|
$sub = $sub_cache{$_} = sub { $ctx->$method(@_) };
|
|
}
|
|
no strict 'refs';
|
|
*{"${callpkg}::$_"} = $sub;
|
|
}
|
|
}
|
|
|
|
1;
|