summaryrefslogtreecommitdiffstats
path: root/util/fipsdist.pl
blob: 621f90493ea59fa26303f3a152b1b0701560a720 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
# FIPS distribution filter. 
# Takes tarball listing and removes unnecessary files and directories.
#


my $objs = "";
foreach (split / /, "FIPS_EX_OBJ AES_ENC BN_ASM DES_ENC SHA1_ASM_OBJ MODES_ASM_OBJ")
	{
	$objs .= " $ENV{$_}";
	}


my @objlist = split / /, $objs;

foreach (@objlist) { $tarobjs{"$1.c"} = 1 if /([^\/]+).o$/};

$tarobjs{"ncbc_enc.c"} = 1;

foreach (split / /, $ENV{LINKDIRS} ) { $cdirs{$_} = 1 };

$cdirs{perlasm} = 1;

my %keep = 
	(
	"Makefile.fips" => 1,
	"Makefile.shared" => 1,
	"README.FIPS" => 1,
	"e_os.h" => 1,
	"e_os2.h" => 1,
	"Configure" => 1,
	"config" => 1,
	);

while (<STDIN>)
	{
	chomp;
	# Keep top level files in list
	if (!/\// && -f $_)
		{
		next unless exists $keep{$_};
		}
	else
		{
		next unless (/^(fips\/|crypto|util|test|include|ms)/);
		}
	if (/^crypto\/([^\/]+)/)
		{
		# Skip unused directories under crypto/
		next if -d "crypto/$1" && !exists $cdirs{$1};
		# Keep assembly language dir, Makefile or certain extensions
		if (!/\/asm\// && !/\/Makefile$/ && !/\.(in|pl|h)$/)
			{
			# If C source file must be on list.
			next if !/(\w+\.c)$/ || !exists $tarobjs{$1};
			}
		}
	if (/^test\//)
		{
		next unless /Makefile/ || /dummytest.c/;
		}
	print "$_\n";
	}
exit 1;