Commit ff81ee92 authored by Dr. Stephen Henson's avatar Dr. Stephen Henson
Browse files

Tidy up fipsalgtest.pl and add initial support for generation.

parent 87863a0c
Loading
Loading
Loading
Loading
+61 −37
Original line number Diff line number Diff line
@@ -304,12 +304,10 @@ my %fips_tests = (

my %verify_special = (
    "PQGGen"        => "fips_dssvs pqgver",

    "KeyPair"       => "fips_dssvs keyver",
    "SigGen"        => "fips_dssvs sigver",
    "SigGen15"      => "fips_rsavtest",
    "SigGenRSA"     => "fips_rsavtest -x931",
    "SigGenPSS(0)"  => "fips_rsavtest -saltlen 0",
    "SigGenPSS(62)" => "fips_rsavtest -saltlen 62",
);

@@ -326,7 +324,6 @@ my $verify = 1;
my $rspdir         = "rsp";
my $ignore_missing = 0;
my $ignore_bogus   = 1;
my $rspignore      = 0;
my $bufout         = '';

foreach (@ARGV) {
@@ -360,9 +357,6 @@ foreach (@ARGV) {
    elsif (/--rspdir=(.*)$/) {
        $rspdir = $1;
    }
    elsif (/--rspignore$/) {
        $rspignore = 1;
    }
    elsif (/--tprefix=(.*)$/) {
        $tprefix = $1;
    }
@@ -401,7 +395,6 @@ else {
    }
}


sanity_check_exe( $win32, $tprefix, $shwrap_prefix );

my $cmd_prefix = $win32 ? "" : "${shwrap_prefix}shlib_wrap.sh ";
@@ -424,7 +417,7 @@ exit (0) if $notest;
run_tests( $verify, $win32, $tprefix, $filter, $tvdir );

if ($verify) {
    print "TEST SUMMARY REPORT:\n";
    print "ALGORITHM TEST VERIFY SUMMARY REPORT:\n";
    print "Tests skipped due to missing files:        $skipcnt\n";
    print "Algorithm test program execution failures: $runerr\n";
    print "Test comparisons successful:               $cmpok\n";
@@ -440,6 +433,18 @@ if ($verify) {
        print "***ALL TESTS SUCCESSFUL***\n";
    }
}
else {
    print "ALGORITHM TEST SUMMARY REPORT:\n";
    print "Tests skipped due to missing files:        $skipcnt\n";
    print "Algorithm test program execution failures: $runerr\n";

    if ($runerr) {
        print "***TEST FAILURE***\n";
    }
    else {
        print "***ALL TESTS SUCCESSFUL***\n";
    }
}

#--------------------------------
sub Help {
@@ -457,7 +462,7 @@ $cmd: generate run CMVP algorithm tests
	--ignore-missing            Ignore missing test files
	--quiet                     Shhh....
	--generate                  Generate algorithm test output
	--win32                     Generate script for Win32 environment
	--win32                     Win32 environment
EOF
}

@@ -508,7 +513,8 @@ sub find_files {
                        $fips_files{$testname}->[1] = $_;
                    }
                    else {
                        print STDERR "WARNING: duplicate response file $_ for test $testname\n";
                        print STDERR
"WARNING: duplicate response file $_ for test $testname\n";
                        $nbogus++;
                    }
                }
@@ -525,7 +531,8 @@ sub find_files {
                        $fips_files{$testname}->[0] = $_;
                    }
                    else {
                        print STDERR "WARNING: duplicate request file $_ for test $testname\n";
                        print STDERR
"WARNING: duplicate request file $_ for test $testname\n";
                        $nbogus++;
                    }

@@ -588,7 +595,8 @@ sub sanity_check_files {
        exit(1) unless $ignore_missing;
    }
    if ($nbogus) {
	print STDERR "ERROR: $nbogus bogus or duplicate request and response files\n";
        print STDERR
          "ERROR: $nbogus bogus or duplicate request and response files\n";
        exit(1) unless $ignore_bogus;
    }
    if ( $debug && !$nbogus && !$bad ) {
@@ -618,6 +626,20 @@ sub run_tests {
            $skipcnt++;
            next;
        }
        elsif ( !$verify ) {
            if ( $rsp ne "" ) {
                print STDERR "WARNING: Response file for $tname deleted\n";
                unlink $rsp;
            }
            $out = $req;
            $out =~ s|/req/(\S+)\.req|/$rspdir/$1.rsp|;
            my $outdir = $out;
            $outdir =~ s|/[^/]*$||;
            if ( !-d $outdir ) {
                print STDERR "DEBUG: Creating directory $outdir\n" if $debug;
                mkdir($outdir) || die "Can't create directory $outdir";
            }
        }
        my $tcmd = $fips_tests{$tname};
        my $cmd  = "$cmd_prefix$tprefix$tcmd ";
        if ( $tcmd =~ /-f$/ ) {
@@ -626,9 +648,11 @@ sub run_tests {
        else {
            $cmd .= "<$req >$out";
        }
        print STDERR "DEBUG: running test $tname\n" if ( $debug && !$verify );
        system($cmd);
        if ( $? != 0 ) {
            print STDERR "WARNING: error executing test $tname\n";
            print STDERR
              "WARNING: error executing test $tname for command: $cmd\n";
            $runerr++;
            next;
        }