On 32-bit Windows, I am seeing this error when trying to determine why the 
FIPS_mode_set(1) call is failing. I am building the OpenSSL FIPS module 
(OpenSSL 1.0.1e, OpenSSL FIPS 2.0.5), and I want to load it from another DLL 
which is itself loaded from an application. The application knows nothing about 
OpenSSL, only the DLL does.

I have seen the page http://www.openssl.org/support/faq.html#PROG2 describing 
what needs to be done. I have tried linking applink.c into my DLL, and I've 
tried #include'ing it from an existing source file in the DLL. In both cases, I 
get the "no OPENSSL_Applink" message. The code I'm executing looks like:

if( !FIPS_mode_set(1) ) {
   ERR_load_crypto_strings();
   FILE *f = fopen( "D:\\openssl.txt", "w" );
   ERR_print_errors_fp( f );
   fclose( f );
}

I get the "no OPENSSL_Applink" message in the ERR_print_errors_fp() call. 
Adding a call to CRYPTO_malloc_init above this changes nothing. I am not seeing 
this problem on 64-bit Windows, possibly because the FIPS_mode_set(1) call 
succeeds there.

What am I missing? I need to solve this problem so I can solve the original 
problem of why the FIPS_mode_set(1) call fails. Alternatively, if you can help 
me solve that problem, I may not need to solve this one. :-)

Graeme Perrow

Reply via email to