#!/usr/local/bin/perl use ExtUtils::testlib; use SSLeay; $ssl_ctx=SSL::CTX->new("SSLv3"); $ssl_ctx->set_options("-info_callback" => sub { print STDERR $_[0]->state()."\n"; } ); $conn="localhost:4433"; $conn=$ARGV[0] if $#ARGV >= 0; $bio=BIO->new("connect"); $bio->hostname($conn) || die $ssl->error(); #$bbio=BIO->new("buffer"); #$bbio->push($cbio); #$bio=$bbio; #$bio->set_callback( # sub { # my($bio,$state,$cmd,$buf,$lart,$ret)=@_; # print STDERR "$state:$cmd\n"; # return($ret); # } # ); print STDERR "-1 ABCD\n"; $ssl=$ssl_ctx->new_ssl; print STDERR "000 ABCD\n"; $ssl->set_bio($bio); print STDERR "00 ABCD\n"; (($ret=$ssl->connect()) > 0) || die $ssl->error(); print STDERR "0 ABCD\n"; (($ret=$ssl->syswrite("GET / HTTP/1.0\r\n\r\n")) > 0) || die $ssl->error(); print STDERR "1 ABCD\n"; $data=""; while (1) { print STDERR "2 ABCD\n"; $ret=$ssl->sysread($buf,1024); print STDERR "3 ABCD\n"; last if $ret <= 0; $data.=$buf; } print STDERR "4 ABCD\n"; @a=split(/[\r]\n/,$data); ($server)=grep(/^Server:/,@a); print "$server\n"; $x509=$ssl->get_peer_certificate(); 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; print "protocol=".$ssl->get_version."\n"; print "bits=$i($a) cipher type=$v cipher=$n\n";