More structuring and sorting of the SSL API documentation.
[openssl.git] / perl / ss.pl
1 #!/usr/local/bin/perl
2
3 use ExtUtils::testlib;
4
5 use SSLeay;
6
7 $ssl_ctx=SSL::CTX->new("SSLv3_client");
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
18 print $ssl_ctx."\n";
19 $bio=BIO->new_buffer_ssl_connect($ssl_ctx);
20 $bio->hostname($conn) || die $bio->error();
21
22 #$bio->set_callback(
23 #       sub     {
24 #               my($bio,$state,$cmd,$buf,$lart,$ret)=@_;
25 #               print STDERR "$state:$cmd\n";
26 #               return($ret);
27 #               }
28 #       );
29
30 #$b=$bio;
31 #do     {
32 #       print STDERR $b->type."\n";
33 #       } while ($b=$b->next_bio);
34
35 (($ret=$bio->syswrite("GET / HTTP/1.0\r\n\r\n")) > 0) || die $bio->error();
36 $bio->flush;
37
38 $data="";
39 while (1)
40         {
41         $ret=$bio->getline;
42         $ret =~ s/[\r\n]//g;
43         print STDERR "$ret\n";
44         last if $ret eq "";
45         $server=$1 if $ret=~ /^Server: (.*)/;
46         }
47
48
49 print "server is $server\n";
50 $x509=$ssl->get_peer_certificate();
51 print "version     :".$x509->get_version()."\n";
52 print "serialNumber:".$x509->get_serialNumber()->bn2hex."\n";
53 print "subject     :".$x509->get_subject_name()."\n";
54 print "issuer      :". $x509->get_issuer_name()."\n";
55
56 $c=$ssl->get_current_cipher;
57 ($i,$a)=$c->get_bits;
58 $v=$c->get_version;
59 $n=$c->get_name;
60
61 $ssl=$bio->get_ssl();
62 print "protocol=".$ssl->get_version."\n";
63 print "bits=$i($a) cipher type=$v cipher=$n\n";
64