#!/usr/local/bin/perl use ExtUtils::testlib; use SSLeay; $ssl_ctx=SSL::CTX->new("SSLv3_client"); #$ssl_ctx->set_options("-info_callback" => # sub { # print STDERR $_[0]->state()."\n"; # } # ); $conn="localhost:4433"; $conn=$ARGV[0] if $#ARGV >= 0; print $ssl_ctx."\n"; $bio=BIO->new_buffer_ssl_connect($ssl_ctx); $bio->hostname($conn) || die $bio->error(); #$bio->set_callback( # sub { # my($bio,$state,$cmd,$buf,$lart,$ret)=@_; # print STDERR "$state:$cmd\n"; # return($ret); # } # ); #$b=$bio; #do { # print STDERR $b->type."\n"; # } while ($b=$b->next_bio); (($ret=$bio->syswrite("GET / HTTP/1.0\r\n\r\n")) > 0) || die $bio->error(); $bio->flush; $data=""; while (1) { $ret=$bio->getline; $ret =~ s/[\r\n]//g; print STDERR "$ret\n"; last if $ret eq ""; $server=$1 if $ret=~ /^Server: (.*)/; } print "server is $server\n"; $x509=$ssl->get_peer_certificate(); print "version :".$x509->get_version()."\n"; print "serialNumber:".$x509->get_serialNumber()->bn2hex."\n"; print "subject :".$x509->get_subject_name()."\n"; print "issuer :". $x509->get_issuer_name()."\n"; $c=$ssl->get_current_cipher; ($i,$a)=$c->get_bits; $v=$c->get_version; $n=$c->get_name; $ssl=$bio->get_ssl(); print "protocol=".$ssl->get_version."\n"; print "bits=$i($a) cipher type=$v cipher=$n\n";