| #!/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"; |
| |