# # a test client for testing IO::Socket::SSL-class's behavior # (marko.asplund at kronodoc.fi). # # $Id: ssl_client.pl,v 1.7 2002/01/04 08:45:12 aspa Exp $. # use strict; use IO::Socket::SSL; my ($v_mode, $sock, $buf); if($ARGV[0] eq "DEBUG") { $IO::Socket::SSL::DEBUG = 1; } # Check to make sure that we were not accidentally run in the wrong # directory: unless (-d "certs") { if (-d "../certs") { chdir ".."; } else { die "Please run this example from the IO::Socket::SSL distribution directory!\n"; } } if(!($sock = IO::Socket::SSL->new( PeerAddr => 'localhost', PeerPort => '9000', Proto => 'tcp', SSL_use_cert => 1, SSL_verify_mode => 0x01, SSL_passwd_cb => sub { return "opossum" }, ))) { warn "unable to create socket: ", &IO::Socket::SSL::errstr, "\n"; exit(0); } else { warn "connect ($sock).\n" if ($IO::Socket::SSL::DEBUG); } # check server cert. my ($subject_name, $issuer_name, $cipher); if( ref($sock) eq "IO::Socket::SSL") { $subject_name = $sock->peer_certificate("subject"); $issuer_name = $sock->peer_certificate("issuer"); $cipher = $sock->get_cipher(); } warn "cipher: $cipher.\n", "server cert:\n", "\t '$subject_name' \n\t '$issuer_name'.\n\n"; my ($buf) = $sock->getlines; $sock->close(); print "read: '$buf'.\n";