Commit 25be5f44 authored by Richard Levitte's avatar Richard Levitte
Browse files

Adapt the libssl test harness testing scripts to new testing framework



This involves adding $TOP/util as perl library in test/run_tests.pl.

Reviewed-by: default avatarRich Salz <rsalz@openssl.org>
parent 53520ebe
Loading
Loading
Loading
Loading
+16 −4
Original line number Diff line number Diff line
@@ -53,18 +53,30 @@
# Hudson (tjh@cryptsoft.com).

use strict;
use OpenSSL::Test qw/:DEFAULT cmdstr top_file top_dir/;
use TLSProxy::Proxy;

my $test_name = "test_sslextension";
setup($test_name);

plan skip_all => "$test_name can only be performed with OpenSSL configured shared"
    unless (map { chomp; s/^SHARED_LIBS=\s*//; $_ }
	    grep { /^SHARED_LIBS=/ }
	    do { local @ARGV = ( top_file("Makefile") ); <> })[0] ne "";

$ENV{OPENSSL_ENGINES} = top_dir("engines");
$ENV{OPENSSL_ia32cap} = '~0x200000200000000';
my $proxy = TLSProxy::Proxy->new(
    \&extension_filter,
    @ARGV
    cmdstr(app(["openssl"])),
    top_file("apps", "server.pem")
);

plan tests => 1;

#Test 1: Sending a zero length extension block should pass
$proxy->start();
TLSProxy::Message->success or die "FAILED: Zero extension length test\n";

print "SUCCESS: Extension test\n";
ok(TLSProxy::Message->success, "Zero extension length test");

sub extension_filter
{
+16 −4
Original line number Diff line number Diff line
@@ -53,21 +53,33 @@
# Hudson (tjh@cryptsoft.com).

use strict;
use OpenSSL::Test qw/:DEFAULT cmdstr top_file top_dir/;
use TLSProxy::Proxy;

my $test_name = "test_sslskewith0p";
setup($test_name);

plan skip_all => "$test_name can only be performed with OpenSSL configured shared"
    unless (map { chomp; s/^SHARED_LIBS=\s*//; $_ }
	    grep { /^SHARED_LIBS=/ }
	    do { local @ARGV = ( top_file("Makefile") ); <> })[0] ne "";

$ENV{OPENSSL_ENGINES} = top_dir("engines");
$ENV{OPENSSL_ia32cap} = '~0x200000200000000';
my $proxy = TLSProxy::Proxy->new(
    \&ske_0_p_filter,
    @ARGV
    cmdstr(app(["openssl"])),
    top_file("apps", "server.pem")
);

plan tests => 1;

#We must use an anon DHE cipher for this test
$proxy->cipherc('ADH-AES128-SHA:@SECLEVEL=0');
$proxy->ciphers('ADH-AES128-SHA:@SECLEVEL=0');

$proxy->start();
TLSProxy::Message->fail or die "FAILED: ServerKeyExchange with 0 p\n";

print "SUCCESS: ServerKeyExchange with 0 p\n";
ok(TLSProxy::Message->fail, "ServerKeyExchange with 0 p");

sub ske_0_p_filter
{
+17 −5
Original line number Diff line number Diff line
@@ -53,24 +53,36 @@
# Hudson (tjh@cryptsoft.com).

use strict;
use OpenSSL::Test qw/:DEFAULT cmdstr top_file top_dir/;
use TLSProxy::Proxy;

my $test_name = "test_sslextension";
setup($test_name);

plan skip_all => "$test_name can only be performed with OpenSSL configured shared"
    unless (map { chomp; s/^SHARED_LIBS=\s*//; $_ }
	    grep { /^SHARED_LIBS=/ }
	    do { local @ARGV = ( top_file("Makefile") ); <> })[0] ne "";

$ENV{OPENSSL_ENGINES} = top_dir("engines");
$ENV{OPENSSL_ia32cap} = '~0x200000200000000';
my $proxy = TLSProxy::Proxy->new(
    \&vers_tolerance_filter,
    @ARGV
    cmdstr(app(["openssl"])),
    top_file("apps", "server.pem")
);

plan tests => 2;

#Test 1: Asking for TLS1.3 should pass
my $client_version = TLSProxy::Record::VERS_TLS_1_3;
$proxy->start();
TLSProxy::Message->success or die "FAILED: Version tolerance test\n";
ok(TLSProxy::Message->success(), "Version tolerance test, TLS 1.3");

#Test 2: Testing something below SSLv3 should fail
$client_version = TLSProxy::Record::VERS_SSL_3_0 - 1;
$proxy->restart();
TLSProxy::Message->success and die "FAILED: Version tolerance test\n";

print "SUCCESS: Version tolerance test\n";
ok(TLSProxy::Message->fail(), "Version tolerance test, SSL < 3.0");

sub vers_tolerance_filter
{
+3 −1
Original line number Diff line number Diff line
@@ -10,15 +10,17 @@ use Test::Harness qw/runtests $switches/;
my $top = $ENV{TOP};
my $recipesdir = catdir($top, "test", "recipes");
my $testlib = catdir($top, "test", "testlib");
my $utillib = catdir($top, "util");

# It seems that $switches is getting interpretted with 'eval' or something
# like that, and that we need to take care of backslashes or they will
# disappear along the way.
$testlib =~ s|\\|\\\\|g if $^O eq "MSWin32";
$utillib =~ s|\\|\\\\|g if $^O eq "MSWin32";

# Test::Harness provides the variable $switches to give it
# switches to be used when it calls our recipes.
$switches = "-w \"-I$testlib\"";
$switches = "-w \"-I$testlib\" \"-I$utillib\"";

my @tests = ( "alltests" );
if (@ARGV) {