diff options
Diffstat (limited to 'perl/ssl.pl')
-rw-r--r-- | perl/ssl.pl | 71 |
1 files changed, 71 insertions, 0 deletions
diff --git a/perl/ssl.pl b/perl/ssl.pl new file mode 100644 index 0000000000..d38b84d68e --- /dev/null +++ b/perl/ssl.pl @@ -0,0 +1,71 @@ +#!/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"; + |