1#! /usr/bin/env perl
2# Copyright 2015-2023 The OpenSSL Project Authors. All Rights Reserved.
3#
4# Licensed under the Apache License 2.0 (the "License").  You may not use
5# this file except in compliance with the License.  You can obtain a copy
6# in the file LICENSE in the source distribution or at
7# https://www.openssl.org/source/license.html
8
9
10use strict;
11use warnings;
12
13use OpenSSL::Test qw/:DEFAULT srctop_file srctop_dir bldtop_file bldtop_dir data_dir/;
14use OpenSSL::Test::Utils;
15use Cwd qw(abs_path);
16
17BEGIN {
18    setup("test_defltfips");
19}
20
21use lib srctop_dir('Configurations');
22use lib bldtop_dir('.');
23
24plan skip_all => "Configuration loading is turned off"
25    if disabled("autoload-config");
26
27my $no_fips = disabled('fips') || ($ENV{NO_FIPS} // 0);
28
29plan tests =>
30    ($no_fips ? 1 : 5);
31
32unless ($no_fips) {
33    $ENV{OPENSSL_CONF} = abs_path(srctop_file("test", "fips.cnf"));
34    ok(run(test(["defltfips_test", "fips"])), "running defltfips_test fips");
35
36    #Test an alternative way of configuring fips
37    $ENV{OPENSSL_CONF} = abs_path(srctop_file("test", "fips-alt.cnf"));
38    ok(run(test(["defltfips_test", "fips"])), "running defltfips_test fips");
39
40    #Configured to run FIPS but the module-mac is bad
41    $ENV{OPENSSL_CONF} = abs_path(srctop_file("test", "fips.cnf"));
42    $ENV{OPENSSL_CONF_INCLUDE} = srctop_dir("test", "recipes", "30-test_defltfips");
43    ok(run(test(["defltfips_test", "badfips"])), "running defltfips_test badfips");
44
45    #Test an alternative way of configuring fips (but still with bad module-mac)
46    $ENV{OPENSSL_CONF} = abs_path(srctop_file("test", "fips-alt.cnf"));
47    ok(run(test(["defltfips_test", "badfips"])), "running defltfips_test badfips");
48}
49
50$ENV{OPENSSL_CONF} = abs_path(srctop_file("test", "default.cnf"));
51ok(run(test(["defltfips_test"])), "running defltfips_test");
52