Import of old SSLeay release: SSLeay 0.9.0b
[openssl.git] / perl / ssl.pl
1 #!/usr/local/bin/perl
2
3 use ExtUtils::testlib;
4
5 use SSLeay;
6
7 $ssl_ctx=SSL::CTX->new("SSLv3");
8
9 $ssl_ctx->set_options("-info_callback" =>
10         sub     {
11                 print STDERR $_[0]->state()."\n";
12                 }
13         );
14
15 $conn="localhost:4433";
16 $conn=$ARGV[0] if $#ARGV >= 0;
17 $bio=BIO->new("connect");
18 $bio->hostname($conn) || die $ssl->error();
19
20 #$bbio=BIO->new("buffer");
21 #$bbio->push($cbio);
22 #$bio=$bbio;
23
24 #$bio->set_callback(
25 #       sub     {
26 #               my($bio,$state,$cmd,$buf,$lart,$ret)=@_;
27 #               print STDERR "$state:$cmd\n";
28 #               return($ret);
29 #               }
30 #       );
31
32 print STDERR "-1 ABCD\n";
33 $ssl=$ssl_ctx->new_ssl;
34 print STDERR "000 ABCD\n";
35 $ssl->set_bio($bio);
36
37 print STDERR "00 ABCD\n";
38 (($ret=$ssl->connect()) > 0) || die $ssl->error();
39
40 print STDERR "0 ABCD\n";
41
42 (($ret=$ssl->syswrite("GET / HTTP/1.0\r\n\r\n")) > 0) || die $ssl->error();
43
44 print STDERR "1 ABCD\n";
45 $data="";
46 while (1)
47         {
48 print STDERR "2 ABCD\n";
49         $ret=$ssl->sysread($buf,1024);
50 print STDERR "3 ABCD\n";
51         last if $ret <= 0;
52         $data.=$buf;
53         }
54
55 print STDERR "4 ABCD\n";
56 @a=split(/[\r]\n/,$data);
57 ($server)=grep(/^Server:/,@a);
58
59 print "$server\n";
60 $x509=$ssl->get_peer_certificate();
61 print "subject:".$x509->get_subject_name()."\n";
62 print "issuer:". $x509->get_issuer_name()."\n";
63
64 $c=$ssl->get_current_cipher;
65 ($i,$a)=$c->get_bits;
66 $v=$c->get_version;
67 $n=$c->get_name;
68
69 print "protocol=".$ssl->get_version."\n";
70 print "bits=$i($a) cipher type=$v cipher=$n\n";
71