Changes between 1.0.1 and 1.1.0 [xx XXX xxxx]
+ *) Modify fipscanisteronly build option to only build the necessary object
+ files by filtering FIPS_EX_OBJ through a perl script in crypto/Makefile.
+ [Steve Henson]
+
*) Add experimental option FIPSSYMS to give all symbols in
fipscanister.o and FIPS or fips prefix. This will avoid
conflicts with future versions of OpenSSL. Add perl script
# dirs in crypto to build
SDIRS= \
sha hmac des aes modes \
- bn ec rsa dsa ecdsa dh ecdh \
- buffer rand evp cmac
+ bn ec rsa dsa ecdsa dh \
+ buffer rand evp # ecdh cmac
# keep in mind that the above list is adjusted by ./Configure
# according to no-xxx arguments...
else \
AS='$(CC) -c' ; \
fi ; export AS ; \
- dir=crypto; target=all; $(BUILD_ONE_CMD)
+ dir=crypto; target=fips; $(BUILD_ONE_CMD)
build_ssl:
@dir=ssl; target=all; $(BUILD_ONE_CMD)
build_engines:
all: shared
+fips: cryptlib.o thr_id.o uid.o $(CPUID_OBJ)
+ [ -n "$(SDIRS)" ] && for i in $(SDIRS) ; do \
+ ( obj=`$(PERL) $(TOP)/util/fipsobj.pl $$i` && \
+ cd $$i && echo "making fips in $(DIR)/$$i..." && \
+ $(MAKE) -e TOP=../.. DIR=$$i INCLUDES='$(INCLUDES)' $$obj ) || exit 1; \
+ done;
+
buildinf.h: ../Makefile
( echo "#ifndef MK1MF_BUILD"; \
echo ' /* auto-generated by crypto/Makefile for crypto/cversion.c */'; \
--- /dev/null
+
+# Filter script. Take all FIPS object files from the environment
+# and print out only those in the given directory.
+
+my $dir = $ARGV[0];
+
+my $asmobjs = "";
+
+# Add any needed assembly languagr files.
+
+$asmobjs = $ENV{AES_ENC} if $dir eq "aes";
+$asmobjs = $ENV{BN_ASM} if $dir eq "bn";
+$asmobjs = $ENV{DES_ENC} if $dir eq "des";
+$asmobjs = $ENV{SHA1_ASM_OBJ} if $dir eq "sha";
+$asmobjs = $ENV{MODES_ASM_OBJ} if $dir eq "modes";
+
+# Get all other FIPS object files, filtered by directory.
+
+my @objlist = grep {/crypto\/$dir\//} split / /, $ENV{FIPS_EX_OBJ};
+
+push @objlist, split / /, $asmobjs;
+
+# Fatal error if no matches
+die "No objects in $dir!" if (scalar @objlist == 0);
+
+# Output all matches removing pathname.
+foreach (@objlist)
+ {
+ s|../crypto/$dir/||;
+ print "$_\n";
+ }