diff options
Diffstat (limited to 'Master/tlpkg/tlperl/lib/Crypt/SSLeay/MainContext.pm')
-rwxr-xr-x | Master/tlpkg/tlperl/lib/Crypt/SSLeay/MainContext.pm | 42 |
1 files changed, 42 insertions, 0 deletions
diff --git a/Master/tlpkg/tlperl/lib/Crypt/SSLeay/MainContext.pm b/Master/tlpkg/tlperl/lib/Crypt/SSLeay/MainContext.pm new file mode 100755 index 00000000000..fd019364e81 --- /dev/null +++ b/Master/tlpkg/tlperl/lib/Crypt/SSLeay/MainContext.pm @@ -0,0 +1,42 @@ +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; |