X-Git-Url: http://vcs.maemo.org/git/?a=blobdiff_plain;f=dev%2Farm%2Flibio-socket-ssl-perl%2Flibio-socket-ssl-perl-1.16%2Ft%2Fstartssl.t;fp=dev%2Farm%2Flibio-socket-ssl-perl%2Flibio-socket-ssl-perl-1.16%2Ft%2Fstartssl.t;h=fe44ecf9e4cbd9dced6a1c007008e8a93995a835;hb=f477fa73365d491991707e7ed9217b48d6994551;hp=0000000000000000000000000000000000000000;hpb=da95c414033799c3a62606f299c3c00b5c77ca11;p=dh-make-perl diff --git a/dev/arm/libio-socket-ssl-perl/libio-socket-ssl-perl-1.16/t/startssl.t b/dev/arm/libio-socket-ssl-perl/libio-socket-ssl-perl-1.16/t/startssl.t new file mode 100644 index 0000000..fe44ecf --- /dev/null +++ b/dev/arm/libio-socket-ssl-perl/libio-socket-ssl-perl-1.16/t/startssl.t @@ -0,0 +1,118 @@ +#!perl -w +# Before `make install' is performed this script should be runnable with +# `make test'. After `make install' it should work as `perl t/nonblock.t' + + +use Net::SSLeay; +use Socket; +use IO::Socket::SSL; +use IO::Select; +use Errno qw(EAGAIN EINPROGRESS ); +use strict; + +use vars qw( $SSL_SERVER_ADDR ); +do "t/ssl_settings.req" || do "ssl_settings.req"; + +if ( ! eval "use 5.006; use IO::Select; return 1" ) { + print "1..0 # Skipped: no support for nonblocking sockets\n"; + exit; +} +if ( grep { $^O =~m{$_} } qw( MacOS VOS vmesa riscos amigaos ) ) { + print "1..0 # Skipped: fork not implemented on this platform\n"; + exit +} + +$|=1; +print "1..9\n"; + + +my $server = IO::Socket::INET->new( + LocalAddr => $SSL_SERVER_ADDR, + Listen => 2, + ReuseAddr => 1, +); + +print "not ok\n", exit if !$server; +ok("Server Initialization"); + +print "not " if (!defined fileno($server)); +ok("Server Fileno Check"); + +my ($SSL_SERVER_PORT) = unpack_sockaddr_in( $server->sockname ); + + +defined( my $pid = fork() ) || die $!; +if ( $pid == 0 ) { + + close($server); + + my %extra_options = $Net::SSLeay::VERSION>=1.16 ? + ( + SSL_key_file => "certs/server-key.enc", + SSL_passwd_cb => sub { return "bluebell" }, +# SSL_verify_callback => \&verify_sub + ) : ( + SSL_key_file => "certs/server-key.pem" + ); + + my $client = IO::Socket::INET->new( "$SSL_SERVER_ADDR:$SSL_SERVER_PORT" ) + || print "not "; + ok( "client tcp connect" ); + + unless ( IO::Socket::SSL->start_SSL( $client, + SSL_version => 'TLSv1', + SSL_cipher_list => 'HIGH', + %extra_options + )) { + #DEBUG( $SSL_ERROR ); + print "not "; + } + ok( "sslify client" ); + + UNIVERSAL::isa( $client,'IO::Socket::SSL' ) || print "not "; + ok( 'client reblessed as IO::Socket::SSL' ); + + print $client "hannibal\n"; + + exit; +} + +my $csock = $server->accept || print "not "; +ok( "tcp accept" ); + +my %extra_options = $Net::SSLeay::VERSION>=1.16 ? + ( + SSL_key_file => "certs/client-key.enc", + SSL_passwd_cb => sub { return "opossum" } + ) : ( + SSL_key_file => "certs/client-key.pem" + ); + +IO::Socket::SSL->start_SSL( $csock, + SSL_server => 1, + SSL_verify_mode => 0x00, + SSL_ca_file => "certs/test-ca.pem", + SSL_use_cert => 1, + SSL_cert_file => "certs/client-cert.pem", + SSL_version => 'TLSv1', + SSL_cipher_list => 'HIGH', + %extra_options +) || print "not "; +#DEBUG( $IO::Socket::SSL::ERROR ); +ok( 'sslify server' ); + +UNIVERSAL::isa( $csock,'IO::Socket::SSL' ) || print "not "; +ok( 'server reblessed as IO::Socket::SSL' ); + +my $l = <$csock>; +#DEBUG($l); +print "not " if $l ne "hannibal\n"; +ok( "received client message" ); + + +wait; + + + +sub ok { print "ok #$_[0]\n"; } +