| |
| # 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)/); |
| } |
| 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/; |
| } |
| print "$_\n"; |
| } |
| exit 1; |