UniEvent-HTTP
view release on metacpan or search on metacpan
clib/tests/lib/test.cc view on Meta::CPAN
string cert = path + "/" + cert_name + ".pem";
string key = path + "/" + cert_name + ".key";
int err;
err = SSL_CTX_use_certificate_file(ctx, cert.c_str(), SSL_FILETYPE_PEM);
assert(err);
err = SSL_CTX_use_PrivateKey_file(ctx, key.c_str(), SSL_FILETYPE_PEM);
assert(err);
err = SSL_CTX_check_private_key(ctx);
assert(err);
return r;
}
string TServer::uri () const {
string uri = secure ? string("https://") : string("http://");
uri += sockaddr()->ip();
uri += ":";
uri += to_string(sockaddr()->port());
uri += "/";
clib/tests/lib/test.cc view on Meta::CPAN
err = SSL_CTX_load_verify_locations(ctx, ca.c_str(), nullptr);
assert(err);
err = SSL_CTX_use_certificate_file(ctx, cert.c_str(), SSL_FILETYPE_PEM);
assert(err);
err = SSL_CTX_use_PrivateKey_file(ctx, key.c_str(), SSL_FILETYPE_PEM);
assert(err);
SSL_CTX_check_private_key(ctx);
assert(err);
SSL_CTX_set_verify(ctx, SSL_VERIFY_PEER, nullptr);
SSL_CTX_set_verify_depth(ctx, 4);
return r;
}
TClientSP TPool::request (const RequestSP& req) {
lib/UniEvent/HTTP/Request.pod view on Meta::CPAN
Get/set ssl context. By default, ssl context is autocreated when HTTPS location is requested, but for more precise control (validating server's certificate,
authorizing via ssl, etc) ssl context can be created by hand via L<Net::SSLeay> module and passed here.
After creating context via L<Net::SSLeay> and passing to this method, you can release context via C<CTX_free()> function from C<Net::SSLeay> as it is refcounted
and held by request object.
my $ctx = Net::SSLeay::CTX_new();
Net::SSLeay::CTX_use_certificate_file($ctx, "cert/ca.pem", Net::SSLeay::FILETYPE_PEM);
Net::SSLeay::CTX_use_PrivateKey_file($ctx, "cert/ca.key", Net::SSLeay::FILETYPE_PEM);
Net::SSLeay::CTX_check_private_key($ctx) or die "wtf?";
$request->ssl_ctx($ctx);
Net::SSLeay::CTX_free($ctx);
=head2 proxy([$url])
Get/set socks5 proxy url as string or L<URI::XS> object. Url scheme must be C<socks5>.
t/client/redirect.t view on Meta::CPAN
use Net::SSLeay;
variate_catch('[client-redirect]', 'ssl');
subtest "redirect with SSL" => sub {
my $SERVER_CERT = "t/cert/ca127.pem";
my $serv_ctx = Net::SSLeay::CTX_new_with_method(Net::SSLeay::SSLv23_server_method()) or sslerr();
Net::SSLeay::CTX_use_certificate_file($serv_ctx, $SERVER_CERT, &Net::SSLeay::FILETYPE_PEM) or sslerr();
Net::SSLeay::CTX_use_PrivateKey_file($serv_ctx, ($SERVER_CERT =~ s/.pem$/.key/r), &Net::SSLeay::FILETYPE_PEM) or sslerr();
Net::SSLeay::CTX_check_private_key($serv_ctx) or sslerr();
Net::SSLeay::CTX_load_verify_locations($serv_ctx, $SERVER_CERT, undef) or sslerr();
Net::SSLeay::CTX_set_verify($serv_ctx, &Net::SSLeay::VERIFY_PEER | &Net::SSLeay::VERIFY_FAIL_IF_NO_PEER_CERT, undef );
Net::SSLeay::CTX_set_verify_depth($serv_ctx, 4);
my $client_ctx = Net::SSLeay::CTX_new_with_method(Net::SSLeay::SSLv23_client_method()) or sslerr();
Net::SSLeay::CTX_load_verify_locations($client_ctx, $SERVER_CERT, undef) or sslerr();
Net::SSLeay::CTX_use_certificate_file($client_ctx, 't/cert/01-alice-127.pem', &Net::SSLeay::FILETYPE_PEM) or sslerr();
Net::SSLeay::CTX_use_PrivateKey_file($client_ctx, 't/cert/01-alice-127.key', &Net::SSLeay::FILETYPE_PEM) or sslerr();
Net::SSLeay::CTX_check_private_key($client_ctx) or sslerr();
Net::SSLeay::CTX_set_verify($client_ctx, &Net::SSLeay::VERIFY_PEER);
Net::SSLeay::CTX_set_verify_depth($client_ctx, 4);
my $server_cfg = { locations => [{host => "localhost", ssl_ctx => $serv_ctx}]};
my $test = UE::Test::Async->new(["connect", "redirect"]);
my $server = MyTest::make_server($test->loop, $server_cfg);
my $client = MyTest::TClient->new($test->loop);
$client->{sa} = $server->sockaddr;
( run in 0.279 second using v1.01-cache-2.11-cpan-4d50c553e7e )