I am having trouble loading the OpenSSL FIPS DLLs (2.0.5, using OpenSSL 1.0.1e) in my 32-bit Windows application. Most of the time I get a "fingerprint does not match" error from FIPS_mode_set but now and again, with no code changes, it succeeds. I have a feeling it has to do with "rebasing" and where the DLL is loaded into memory.
Running dumpbin on libeay32.dll shows an image base of "FB00000" which I believe is correct. My application executable loads a DLL which loads a second DLL, and that second DLL is the one that loads the FIPS DLLs. My DLLs are built with /FIXED:NO and /BASE: with a specific address. I have made no changes to the OpenSSL build procedure. My problem is that I don't understand rebasing well enough to know if I need to build my DLLs differently, or if I need to tweak the OpenSSL build procedure. I was seeing a similar problem on 64-bit Windows for a while but that error just "magically" went away and I haven't seen it since. I'm worried that the 64-bit problem is still there and I'm just getting lucky. Thanks for any pointers Graeme Perrow