summaryrefslogtreecommitdiff
path: root/Master/tlpkg/tlperl/lib/Crypt/SSLeay/MainContext.pm
diff options
context:
space:
mode:
Diffstat (limited to 'Master/tlpkg/tlperl/lib/Crypt/SSLeay/MainContext.pm')
-rwxr-xr-xMaster/tlpkg/tlperl/lib/Crypt/SSLeay/MainContext.pm42
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;