cro-tls
Cro::TLS
The Cro::TLS
module contains a number of classes enabling the use of TLS in
Cro pipelines.
Cro::TLS::Listener
The Cro::TLS::Listener
class is a Cro::Source
. It is constructed with the
port
named argument, and an optional host
named argument (which defaults
to localhost
). Any further named arguments will be passed along to
IO::Socket::Async::SSL.listen
, providing full access to that module's
feature set.
Typically, the keys private-key-file
and certificate-file
should be passed,
which indicate the files containing the private key and certificate for the
server. The alpn
key may be passed to configure protocols available for
Application Level Protocol Negotiation.
my $listener = Cro::TLS::Listener.new(
port => 443,
host => '127.0.0.1',
private-key-file => 'certs-and-keys/server-key.pem',
certificate-file => 'certs-and-keys/server-crt.pem'
);
This source produces Cro::TLS::ServerConnection
objects.
Cro::TLS::ServerConnection
The Cro::TLS::ServerConnection
class does the Cro::Connection
role and
represents an incoming TLS connection. It produces Cro::TCP::Message
objects
when data is received over the network, making it easy to write transforms
that can be hosted with both TCP and TLS endpoints.
The class also implements Cro::Replyable
, with the replier being a sink that
consumes Cro::TCP::Message
and send them to the client.
The class has a method alpn-result
, which - if ALPN was used - indicates the
outcome of the protocol negotiation.
Cro::TLS::Connector
The Cro::TLS::Connector
class does the Cro::Connector
role, and is used
for establishing an TLS connection. The establish
method takes the port
named argument (which is required) and the host
named argument. Any further
named arguments will be passed along to IO::Socket::Async::SSL.connect
,
making the full range of functionality of that module available.
The connector consumes and produces Cro::TCP::Message
instances, allowing it
to be used as a drop-in replacement for Cro::TCP::Connector
.