NAME
Protocol::TLS::Server - pure Perl TLS Server
SYNOPSIS
# Create server object.
# Load X509 certificate and private key
my
$server
= Protocol::TLS::Server->new(
cert_file
=>
'server.crt'
,
key_file
=>
'server.key'
,
);
# You must create tcp server yourself
my
$cv
= AE::cv;
tcp_server
undef
, 4443,
sub
{
my
(
$fh
,
$host
,
$port
) =
@_
or
do
{
warn
"Client error\n"
;
$cv
->
send
;
return
;
};
# Create new TLS-connection object
my
$con
=
$server
->new_connection(
# Callback executed when TLS-handshake finished
on_handshake_finish
=>
sub
{
my
(
$tls
) =
@_
;
# send application data
$tls
->
send
(
"hello"
);
},
# Callback executed when application data received
on_data
=>
sub
{
my
(
$tls
,
$data
) =
@_
;
$data
;
# send close notify and close application level connection
$tls
->
close
;
}
);
# socket handling
my
$h
;
$h
= AnyEvent::Handle->new(
fh
=>
$fh
,
on_error
=>
sub
{
$_
[0]->destroy;
"connection error\n"
;
$cv
->
send
;
},
on_eof
=>
sub
{
$h
->destroy;
"that's all folks\n"
;
$cv
->
send
;
},
);
# low level socket operations (read/write)
$h
->on_read(
sub
{
my
$handle
=
shift
;
# read TLS records from socket and put them to $con object
$con
->feed(
$handle
->{rbuf} );
$handle
->{rbuf} =
''
;
# write TLS records to socket
while
(
my
$record
=
$con
->next_record ) {
$handle
->push_write(
$record
);
}
# Terminate connection if all done
$handle
->push_shutdown
if
$con
->
shutdown
;
();
}
);
()
};
# finish
$cv
->
recv
;
DESCRIPTION
Protocol::TLS::Server is TLS server library. It's intended to make TLS-server implementations on top of your favorite event loop.
LICENSE
Copyright (C) Vladimir Lettiev.
This library is free software; you can redistribute it and/or modify it under the same terms as Perl itself.
AUTHOR
Vladimir Lettiev <thecrux@gmail.com>