Appreciate any help on the following.
Built OpenSSL Fips Module and then 'static binaries' of FIPS capable OSSL which 'statically link to the windows run-time'. Thus, my application binary (
FipsApp.exe
) does not depend on OSSL DLLs.Consumed these static binaries namely (
libeaycompat32.lib
,libeayfips32.lib
andssleay32.lib
) intomyapp.dll
usingmsincore.pl
.FipsApp.exe
calls functionfoo()
insidemyapp.dll
which executesFIPS_mode_set()
which returns(100:error:2D06B06F:lib(45):func(107): reason (111):/FIPS/FIPS.c:232)
Result
On executing 64-bit
FipsApp.exe
, the FIPS mode gets set and working with 64-bitmyapp.dll
But on executing 32-bit
FipsApp.exe
which uses 32-bitmyapp.dll
with same configuration,FIPS_mode_set()
fails with reason111
(Fingerprint mismatch
)
Attempted
Since above 32-bit myapp.dll did not work, some additional configuration changes were made.
ReBuilt 32-bit myapp.dll with above LFLAGS "
/DynamicBase:No /Fixed
". Here default base address gets used for myapp.dllReBuilt 32-bit myapp.dll with base address of
0xFB00000
. (OSSL does same thing for FIPS dlls)Checking out following http://openssl.6102.n7.nabble.com/FIPS-Static-Library-linked-into-Win32-Dll-builds-but-fails-self-test-td63011.html
But 32-bit myapp DLL does always fail with fingerprint mismatch.
Question
How do I get 32-bit myapp.dll
working in FIPS mode? FIPS_mode_set()
returns (100:error:2D06B06F:lib(45):func(107): reason (111):/FIPS/FIPS.c:232)
Thanks.