PKCS#8 support for alternative PRFs.
[openssl.git] / util / fipsdist.pl
1
2 # FIPS distribution filter. 
3 # Takes tarball listing and removes unnecessary files and directories.
4 #
5
6
7 my $objs = "";
8 foreach (split / /, "FIPS_EX_OBJ AES_ENC BN_ASM DES_ENC SHA1_ASM_OBJ MODES_ASM_OBJ")
9         {
10         $objs .= " $ENV{$_}";
11         }
12
13 my $noec2m = 0;
14
15
16 my @objlist = split / /, $objs;
17
18 foreach (@objlist) { $tarobjs{"$1.c"} = 1 if /([^\/]+).o$/};
19
20 $tarobjs{"ncbc_enc.c"} = 1;
21 $tarobjs{"mem_clr.c"} = 1;
22 $tarobjs{"ppccap.c"} = 1;
23 $tarobjs{"sparcv9cap.c"} = 1;
24 $tarobjs{"armcap.c"} = 1;
25
26 foreach (split / /, $ENV{LINKDIRS} ) { $cdirs{$_} = 1 };
27
28 $cdirs{perlasm} = 1;
29
30 $noec2m = 1 if (exists $ENV{NOEC2M});
31
32 if ($noec2m)
33         {
34         delete $tarobjs{"bn_gf2m.c"};
35         delete $tarobjs{"ec2_mult.c"};
36         delete $tarobjs{"ec2_smpl.c"};
37         }
38
39 my %keep = 
40         (
41         "Makefile.fips" => 1,
42         "Makefile.shared" => 1,
43         "README.FIPS" => 1,
44         "README.ECC" => 1,
45         "e_os.h" => 1,
46         "e_os2.h" => 1,
47         "Configure" => 1,
48         "config" => 1,
49         );
50
51 while (<STDIN>)
52         {
53         chomp;
54         # Keep top level files in list
55         if (!/\// && -f $_)
56                 {
57                 next unless exists $keep{$_};
58                 }
59         else
60                 {
61                 next unless (/^(fips\/|crypto|util|test|include|ms)/);
62                 }
63         if (/^crypto\/([^\/]+)/)
64                 {
65                 # Skip unused directories under crypto/
66                 next if -d "crypto/$1" && !exists $cdirs{$1};
67                 # Skip GF2m assembly language perl scripts
68                 next if $noec2m && /gf2m\.pl/;
69                 next if /vpaes-\w*\.pl/;
70                 # Keep assembly language dir, Makefile or certain extensions
71                 if (!/\/asm\// && !/\/Makefile$/ && !/\.(in|pl|h|S)$/)
72                         {
73                         # If C source file must be on list.
74                         next if !/(\w+\.c)$/ || !exists $tarobjs{$1};
75                         }
76                 }
77         if (/^test\//)
78                 {
79                 next unless /Makefile/ || /dummytest.c/;
80                 }
81         print "$_\n";
82         }
83 exit 1;