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