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

