File: //usr/lib/x86_64-linux-gnu/perl5/5.34/Crypt/SSLeay/MainContext.pm
package Crypt::SSLeay::MainContext;
# maintains a single instance of the Crypt::SSLeay::CTX class
use strict;
use Carp ();
use Exporter qw ( import );
use vars qw( @EXPORT @EXPORT_OK );
@EXPORT = ();
@EXPORT_OK = qw( main_ctx );
require Crypt::SSLeay::CTX;
# The following list is taken, with appreciation, from
# Ristic, I (2013) "OpenSSL Cookbook", Feisty Duck Ltd
# http://amzn.to/1z8rDdj
#
use constant CRYPT_SSLEAY_DEFAULT_CIPHER_LIST => join(
    q{:}, qw(
        kEECDH+ECDSA
        kEECDH
        kEDH
        HIGH
        +SHA
        +RC4
        RC4
        !aNULL
        !eNULL
        !LOW
        !3DES
        !MD5
        !EXP
        !DSS
        !PSK
        !SRP
        !kECDH
        !CAMELLIA
    )
);
sub main_ctx {
    my $ctx = Crypt::SSLeay::CTX->new(
        $ENV{CRYPT_SSLEAY_ALLOW_SSLv3} ? 1 : 0
    );
    if ($ENV{CRYPT_SSLEAY_CIPHER}) {
        $ctx->set_cipher_list($ENV{CRYPT_SSLEAY_CIPHER});
    }
    else {
        $ctx->set_cipher_list(
            CRYPT_SSLEAY_DEFAULT_CIPHER_LIST
        );
    }
    $ctx;
}
1;