summaryrefslogtreecommitdiffstats
path: root/util/fipsdist.pl
diff options
context:
space:
mode:
authorDr. Stephen Henson <steve@openssl.org>2011-02-21 19:36:55 +0000
committerDr. Stephen Henson <steve@openssl.org>2011-02-21 19:36:55 +0000
commit94a0a96cd8db717381f0c57af4782f385029fa89 (patch)
treeb61bdd5b9b8934b65e5eebfc9d3e0c260d2d4bff /util/fipsdist.pl
parent83dfcd727b011ef16d20198f829c80b03cd9c309 (diff)
Initial perl script to filter out unneeded files for a fips tarball.
Diffstat (limited to 'util/fipsdist.pl')
-rw-r--r--util/fipsdist.pl44
1 files changed, 44 insertions, 0 deletions
diff --git a/util/fipsdist.pl b/util/fipsdist.pl
new file mode 100644
index 0000000000..86ceab02ab
--- /dev/null
+++ b/util/fipsdist.pl
@@ -0,0 +1,44 @@
+
+# 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;
+
+foreach (keys %cdirs) { print STDERR "CDIR: $_\n";}
+
+while (<STDIN>)
+ {
+ chomp;
+ # Skip directories but leave top level files.
+ next unless (/^(fips\/|crypto|util|test|include)/ || (!/\// && -f $_));
+ 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};
+ }
+ }
+ print "$_\n";
+ }
+exit 1;