Eventually I solved this problem. Here is the set of commands I need to use to 
generate the shared fips-capable openssl libraries:

su
cd fips // wherever that may be
./config
make
make install
// this installs fipscanister.o and adjacent files into /usr/local/ssl/fips-2.0/

cd openssl // still as root
./config fips shared
make depend
make
make install
// this installs libssl.so* and libcrypto.so* into /usr/local/ssl/lib

// I couldn’t get ldconfig to work for me, so I did this
export LD_LIBRARY_PATH=/usr/local/ssl/lib:$LD_LIBRARY_PATH

When I make my tiny application, I use the following directive in my Makefile:

DRIVER = encryption_driver
#export FIPSLD_CC = gcc // don't need this for .so
#export CC = fipsld // don't need this for .so
CC = gcc
CFLAGS = -Wall
INCLUDES = -I/usr/local/ssl/include/
LFLAGS = -L/usr/local/ssl/lib
LIBS = -lcrypto -lssl -ldl

$(DRIVER): $(DRIVER).c $(DRIVER).h
        $(CC) $(CFLAGS) -o $@ $(INCLUDES) $(LFLAGS) $(LIBS) $^

Subsequently, a call to FIPS_mode_set in my encryption_driver returns without 
error.

This was very difficult to debug in my actual product build sequence.  Several 
executables are generated from the build and it turns out some were linking in 
an old version of openssl in some archaic location on the build machine (boo!)  
I made a lot of calls to ldd to discover this.

Hopefully this is helpful to someone else out there...

Cassie

______________________________________________________________________
OpenSSL Project                                 http://www.openssl.org
User Support Mailing List                    openssl-users@openssl.org
Automated List Manager                           majord...@openssl.org

Reply via email to