const RAND_METHOD *RAND_get_rand_method(void) { #ifdef OPENSSL_FIPS if(FIPS_mode() && default_RAND_meth != FIPS_rand_check()) { RANDerr(RAND_F_RAND_GET_RAND_METHOD,RAND_R_NON_FIPS_METHOD); return 0; } #endif if (!default_RAND_meth) { #ifndef OPENSSL_NO_ENGINE ENGINE *e = ENGINE_get_default_RAND(); if(e) { default_RAND_meth = ENGINE_get_RAND(e); if(!default_RAND_meth) { ENGINE_finish(e); e = NULL; } } if(e) funct_ref = e; else #endif default_RAND_meth = RAND_SSLeay(); } return default_RAND_meth; }
const RAND_METHOD *eng_RAND_get_rand_method(const RAND_METHOD **pmeth) { if (!*pmeth) { ENGINE *e = ENGINE_get_default_RAND(); if(e) { *pmeth = ENGINE_get_RAND(e); if(!*pmeth) { ENGINE_finish(e); e = NULL; } } if(e) funct_ref = e; else if(FIPS_mode()) *pmeth=FIPS_rand_method(); else *pmeth = RAND_SSLeay(); } if(FIPS_mode() && *pmeth != FIPS_rand_check()) { RANDerr(RAND_F_ENG_RAND_GET_RAND_METHOD,RAND_R_NON_FIPS_METHOD); return 0; } return *pmeth; }
static const RAND_METHOD *fips_RAND_get_rand_method(const RAND_METHOD **pmeth) { if (!*pmeth) { if(FIPS_mode()) *pmeth=FIPS_rand_method(); else *pmeth = RAND_SSLeay(); } if(FIPS_mode() && *pmeth != FIPS_rand_check()) { RANDerr(RAND_F_FIPS_RAND_GET_RAND_METHOD,RAND_R_NON_FIPS_METHOD); return 0; } return *pmeth; }