On 05.03.2018 10:46, Alan Dean wrote:
The optimal location for inserting the FIPS_mode_set(1) call is probably OPENSSL_init() (openssl-1.0.2/crypto/o_fips.c), see code snippet below. void OPENSSL_init(void) { static int done = 0; if (done) return; done = 1; #ifdef OPENSSL_FIPS FIPS_set_locking_callbacks(CRYPTO_lock, CRYPTO_add_lock); # ifndef OPENSSL_NO_DEPRECATED FIPS_crypto_set_id_callback(CRYPTO_thread_id); # endif FIPS_set_error_callbacks(ERR_put_error, ERR_add_error_vdata); FIPS_set_malloc_callbacks(CRYPTO_malloc, CRYPTO_free); RAND_init_fips(); FIPS_mode_set(1); <<< ENABLE FIPS MODE HERE <<< #endif #if 0 fprintf(stderr, "Called OPENSSL_init\n"); #endif However, I am sceptical whether this approach will be accepted, because there are (at least) two potential problems: * Normally, it is mandatory to check the result of FIPS_mode_set() or FIPS_mode() to ensure that the FIPS initialization succeeded. However, an application which is not FIPS-aware won't check the result. * It can happen that applications which have their own configuration and enable/disable FIPS mode explicitely, call FIPS_mode_set(0) afterwards. HTH, Matthias |
-- openssl-users mailing list To unsubscribe: https://mta.openssl.org/mailman/listinfo/openssl-users