Skip to content

Instantly share code, notes, and snippets.

@rsimoes
Created February 20, 2012 17:31
Show Gist options
  • Save rsimoes/1870211 to your computer and use it in GitHub Desktop.
Save rsimoes/1870211 to your computer and use it in GitHub Desktop.
Net::GnuTLS high-level bindings
use IO::Socket::IP;
use Socket qw(SOCK_STREAM)
use Net::GnuTLS::Client;
use Net::GnuTLS::Credentials;
# Connect to server:
my $socket = IO::Socket::IP->new(
PeerHost => "metacpan.org",
PeerPort => "https",
Type => SOCK_STREAM ) or die "Cannot construct socket - $@";
# Perform TLS handshake:
my $client = Net::GnuTLS::Client->new;
my $creds = Net::GnuTLS::Credentials->new( x509_file => "ca.pem" );
$client->credentials($creds);
$client->transport($socket);
$client->handshake or die "Handshake error: " . Net::GnuTLS::strerr($!);
# Send and receive:
$client->send("GET / HTTP/1.0\r\n\r\n");
my $response = $client->recv(1024) or die "Error: " . Net::GnuTLS::strerr($!);
print $response->buffer, "\n";
# Upon losing interest:
$client->bye;
$socket->shutdown;
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment