1#
2# a test client for testing IO::Socket::SSL-class's behavior
3# (marko.asplund at kronodoc.fi).
4#
5# $Id: ssl_client.pl,v 1.7 2002/01/04 08:45:12 aspa Exp $.
6#
7
8
9use strict;
10use IO::Socket::SSL;
11
12my ($v_mode, $sock, $buf);
13
14if($ARGV[0] eq "DEBUG") { $IO::Socket::SSL::DEBUG = 1; }
15
16# Check to make sure that we were not accidentally run in the wrong
17# directory:
18unless (-d "certs") {
19    if (-d "../certs") {
20	chdir "..";
21    } else {
22	die "Please run this example from the IO::Socket::SSL distribution directory!\n";
23    }
24}
25
26if(!($sock = IO::Socket::SSL->new( PeerAddr => 'localhost',
27				   PeerPort => '9000',
28				   Proto    => 'tcp',
29				   SSL_use_cert => 1,
30				   SSL_verify_mode => 0x01,
31				   SSL_passwd_cb => sub { return "opossum" },
32				 ))) {
33    warn "unable to create socket: ", &IO::Socket::SSL::errstr, "\n";
34    exit(0);
35} else {
36    warn "connect ($sock).\n" if ($IO::Socket::SSL::DEBUG);
37}
38
39# check server cert.
40my ($subject_name, $issuer_name, $cipher);
41if( ref($sock) eq "IO::Socket::SSL") {
42    $subject_name = $sock->peer_certificate("subject");
43    $issuer_name = $sock->peer_certificate("issuer");
44    $cipher = $sock->get_cipher();
45}
46warn "cipher: $cipher.\n", "server cert:\n",
47    "\t '$subject_name' \n\t '$issuer_name'.\n\n";
48
49my ($buf) = $sock->getlines;
50
51$sock->close();
52
53print "read: '$buf'.\n";
54