Skip to content

Commit

Permalink
TEST: make and use a fipsinstall script
Browse files Browse the repository at this point in the history
We have copies of the exact same fipsinstall call in several test
recipes.  This refactors those calls into a single simple script.

Reviewed-by: Paul Dale <paul.dale@oracle.com>
(Merged from openssl#11565)
  • Loading branch information
levitte committed Apr 19, 2020
1 parent c0bfc47 commit ae6b654
Show file tree
Hide file tree
Showing 4 changed files with 56 additions and 19 deletions.
53 changes: 53 additions & 0 deletions test/fipsinstall.pl
Original file line number Diff line number Diff line change
@@ -0,0 +1,53 @@
#! /usr/bin/env perl

use strict;
use warnings;

use File::Spec;

use if $^O eq "VMS", "VMS::Filespec";

my $bldtop_dir;

# First script argument MUST be the build top directory
BEGIN {
$bldtop_dir = $ARGV[0];
# 'use lib' needs Unix-ish paths
$bldtop_dir = VMS::Filespec::unixpath($bldtop_dir) if $^O eq "VMS";
}

use lib $bldtop_dir;
use FindBin;
use lib "$FindBin::Bin/../Configurations";
use platform;

my @providers = ($bldtop_dir, 'providers');
my $fips_cnf = File::Spec->catfile(@providers, 'fipsinstall.cnf');
my $fips_module = File::Spec->catfile(@providers, platform->dso('fips'));
my $openssl = File::Spec->catfile($bldtop_dir, 'apps',
platform->bin('openssl'));

# We create the command like this to make it readable, then massage it with
# a space replacement regexp to make it usable with system()
my $cmd = <<_____;
$openssl fipsinstall \
-out "{fips_cnf}" \
-module "{fips_module}" \
-provider_name "fips" \
-mac_name "HMAC" -macopt "digest:SHA256" -macopt "hexkey:00" \
-section_name "fips_sect"
_____
$cmd =~ s|\s+| |gm;
$cmd =~ s|{fips_cnf}|$fips_cnf|;
$cmd =~ s|{fips_module}|$fips_module|;

my $exit = 0;
system($cmd);
die "Failed to run '$cmd'\n" if $? == -1;
# If there was a signal, use it as exit code with high bit set.
$exit = (($? & 255) | 128) if ($? & 255) != 0;
# Otherwise, just return fipsinstall's exit code
$exit = ($? >> 8);

exit($exit);

8 changes: 1 addition & 7 deletions test/recipes/30-test_evp.t
Original file line number Diff line number Diff line change
Expand Up @@ -79,16 +79,10 @@ plan tests =>
+ scalar(@defltfiles);

unless ($no_fips) {
my $infile = bldtop_file('providers', platform->dso('fips'));
$ENV{OPENSSL_MODULES} = bldtop_dir("providers");
$ENV{OPENSSL_CONF_INCLUDE} = bldtop_dir("providers");

ok(run(app(['openssl', 'fipsinstall',
'-out', bldtop_file('providers', 'fipsinstall.cnf'),
'-module', $infile,
'-provider_name', 'fips', '-mac_name', 'HMAC',
'-macopt', 'digest:SHA256', '-macopt', 'hexkey:00',
'-section_name', 'fips_sect'])),
ok(run(perltest(['fipsinstall.pl', bldtop_dir()])),
"fipsinstall");
}

Expand Down
7 changes: 1 addition & 6 deletions test/recipes/30-test_evp_fetch_prov.t
Original file line number Diff line number Diff line change
Expand Up @@ -47,12 +47,7 @@ my @testdata = (

unless ($no_fips) {
push @setups, {
cmd => app(['openssl', 'fipsinstall',
'-out', bldtop_file('providers', 'fipsinstall.cnf'),
'-module', bldtop_file('providers', platform->dso('fips')),
'-provider_name', 'fips', '-mac_name', 'HMAC',
'-macopt', 'digest:SHA256', '-macopt', 'hexkey:00',
'-section_name', 'fips_sect']),
cmd => perltest(['fipsinstall.pl', bldtop_dir()]),
message => "fipsinstall"
};
push @testdata, (
Expand Down
7 changes: 1 addition & 6 deletions test/recipes/90-test_sslprovider.t
Original file line number Diff line number Diff line change
Expand Up @@ -30,12 +30,7 @@ SKIP: {
skip "Skipping FIPS installation", 1
if disabled("fips");

ok(run(app(['openssl', 'fipsinstall',
'-out', bldtop_file('providers', 'fipsinstall.cnf'),
'-module', bldtop_file('providers', platform->dso('fips')),
'-provider_name', 'fips', '-mac_name', 'HMAC',
'-macopt', 'digest:SHA256', '-macopt', 'hexkey:00',
'-section_name', 'fips_sect'])),
ok(run(perltest(['fipsinstall.pl', bldtop_dir()])),
"fipsinstall");
}

Expand Down

0 comments on commit ae6b654

Please sign in to comment.