Would you elaborate what is meant by 'strict binding' please.

I have tried compiling with '-z now', I have tried RTLD_LAZY and 
RTLD_NOW as flags to dlopen and the env var LD_BIND_NOW also had 
no effect. I have reproduced the same issue of the shared lib
Failing on both x86 and mips.

Has anyone created and used a shared library?

-Matt Bancroft

> -----Original Message-----
> From: owner-openssl-us...@openssl.org 
> [mailto:owner-openssl-us...@openssl.org] On Behalf Of Kyle Hamilton
> Sent: 18 January 2010 20:43
> To: openssl-users
> Subject: Re: FIPS linked as a shared library
> 
> The way that the FIPS module verifies its signature is that it forces
> itself to load (via a pre-main() section) and then calculate the
> checksum of the image in-core.  Probably the reason why you're running
> into issues is because of the fixup step of the dynamic linker.
> 
> If you expect to use FIPS, you should link it as a hard dependency
> (also known as 'strict binding', as opposed to 'lazy binding') so that
> it can be loaded as early as possible, to minimize the chances of the
> linker needing to run fixups after application-code memory allocation.
>  As you've found, the image in-core *must* match the original image
> in-core when the signature was generated, and the linker changes the
> pointers of where things are located when it has to.
> 
> -Kyle H
> 
> On Mon, Jan 18, 2010 at 2:48 AM, Bancroft, Matthew
> <matt.bancr...@siemens-enterprise.com> wrote:
> > Hello,
> >
> > I have generated the fipscanister.o and all associated 
> files as described in
> > the user guide. All the checks ran ok. I have created an 
> application using
> > the fipscanister.o which works fine. When I create the 
> shared library the
> > run time check called when FIPS_mode_set() is called fails. 
> I have found
> > that depending on where I am loading the library in my code 
> the signature
> > generated is different.
> >
> > Hence my question, Is it really possible to create a shared 
> library, and not
> > an application, using the FIPS module?
> >
> > The make file for the shared lib looks like this:
> >
> > CC = gcc
> > LIBOBJS= $(BIN)/fipsShared.o
> >
> > libfipsShared.so: fipsShared.o
> >  FIPSLD_CC=$(CC) /openssl-fips-1.2/fips/fipsld -shared -o $@ $^
> > -DDEBUG_FINGERPRINT_PREMAIN /openssl-fips-1.2/libcrypto.a
> >
> > The build platform is a native MIPS, gcc-3.4.4, make 3.81, 
> uclibc.0.9.28.
> >
> > Regards,
> >
> > Matt Bancroft
> >
> > matt.bancr...@siemens-enterprise.com
> ______________________________________________________________________
> OpenSSL Project                                 http://www.openssl.org
> User Support Mailing List                    openssl-users@openssl.org
> Automated List Manager                           majord...@openssl.org
> ______________________________________________________________________
OpenSSL Project                                 http://www.openssl.org
User Support Mailing List                    openssl-users@openssl.org
Automated List Manager                           majord...@openssl.org

Reply via email to