use strict; use warnings; use blib; use Net::mbedTLS; use IO::Socket::INET; use constant PEM => <new(); my $socket = IO::Socket::INET->new( Listen => 1, LocalAddr => "localhost:0", ) or die; printf "Listening on port %d; do:\n", $socket->sockport(); printf "openssl s_client -debug -connect localhost:%d\n", $socket->sockport(); my $peer = $socket->accept(); printf "Got connection!\n"; my $tlsserver = $tls->create_server( $peer, key_and_certs => [ PEM ], servername_cb => sub { my $obj = shift; $obj->set_own_key_and_certs(PEM); return; }, ); print "Made server; now type something into OpenSSL …\n"; my $output = "\0" x 100; my $got = $tlsserver->read($output); print substr($output, 0, $got); $tlsserver->close_notify();