diff options
Diffstat (limited to 'perl/s.pl')
-rw-r--r-- | perl/s.pl | 72 |
1 files changed, 72 insertions, 0 deletions
diff --git a/perl/s.pl b/perl/s.pl new file mode 100644 index 0000000000..4f8f417e17 --- /dev/null +++ b/perl/s.pl @@ -0,0 +1,72 @@ +#!/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; +$cbio=BIO->new("connect"); +$cbio->hostname($conn) || die $ssl->error(); + +$bbio=BIO->new("buffer"); + +$sbio=BIO->new("ssl"); +$ssl=$ssl_ctx->new_ssl; +$ssl->set_options(-connect_state); +$sbio->set_ssl($ssl); + +$sbio->push($cbio); +$bbio->push($sbio); +$bio=$bbio; + +#$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; + +print "protocol=".$ssl->get_version."\n"; +print "bits=$i($a) cipher type=$v cipher=$n\n"; + |