forked from openssl/openssl
-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathfipsdist.pl
83 lines (69 loc) · 1.62 KB
/
fipsdist.pl
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
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
# 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 $noec2m = 0;
my @objlist = split / /, $objs;
foreach (@objlist) { $tarobjs{"$1.c"} = 1 if /([^\/]+).o$/};
$tarobjs{"ncbc_enc.c"} = 1;
$tarobjs{"mem_clr.c"} = 1;
$tarobjs{"ppccap.c"} = 1;
$tarobjs{"sparcv9cap.c"} = 1;
$tarobjs{"armcap.c"} = 1;
foreach (split / /, $ENV{LINKDIRS} ) { $cdirs{$_} = 1 };
$cdirs{perlasm} = 1;
$noec2m = 1 if (exists $ENV{NOEC2M});
if ($noec2m)
{
delete $tarobjs{"bn_gf2m.c"};
delete $tarobjs{"ec2_mult.c"};
delete $tarobjs{"ec2_smpl.c"};
}
my %keep =
(
"Makefile.fips" => 1,
"Makefile.shared" => 1,
"README.FIPS" => 1,
"README.ECC" => 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|c6x|iOS)/);
}
if (/^crypto\/([^\/]+)/)
{
# Skip unused directories under crypto/
next if -d "crypto/$1" && !exists $cdirs{$1};
# Skip GF2m assembly language perl scripts
next if $noec2m && /gf2m\.pl/;
next if /vpaes-\w*\.pl/;
# Keep assembly language dir, Makefile or certain extensions
if (!/\/asm\// && !/\/Makefile$/ && !/\.(in|pl|h|S)$/)
{
# If C source file must be on list.
next if !/(\w+\.c)$/ || !exists $tarobjs{$1};
}
}
if (/^test\//)
{
next unless /Makefile/ || /dummytest.c/ || /fips_algvs.c/ ;
}
print "$_\n";
}
exit 1;