/** * If using an Intel chipset with RDRAND, the high-performance hardware * random number generator will be used. */ static ENGINE * openssl_rand_init(void) { locks_setup(); dlsym_ENGINE_load_rdrand(); ENGINE *eng = dlsym_ENGINE_by_id("rdrand"); int ret = -1; do { if (NULL == eng) { break; } int rc = dlsym_ENGINE_init(eng); if (0 == rc) { break; } rc = dlsym_ENGINE_set_default(eng, ENGINE_METHOD_RAND); if (0 == rc) { break; } ret = 0; } while(0); if (ret == -1) { openssl_rand_clean(eng, 0); } return eng; }
/** * If using an Intel chipset with RDRAND, the high-performance hardware * random number generator will be used. */ static ENGINE * openssl_rand_init(JNIEnv *env) { if (dlsym_OpenSSL_version_num() < VERSION_1_1_X) { locks_setup(env); static void (*dlsym_ENGINE_load_rdrand) (void); dlsym_ENGINE_load_rdrand = do_dlsym(env, openssl, "ENGINE_load_rdrand"); dlsym_ENGINE_load_rdrand(); } ENGINE *eng = dlsym_ENGINE_by_id("rdrand"); int ret = -1; do { if (NULL == eng) { break; } int rc = dlsym_ENGINE_init(eng); if (0 == rc) { break; } rc = dlsym_ENGINE_set_default(eng, ENGINE_METHOD_RAND); if (0 == rc) { break; } ret = 0; } while(0); if (ret == -1) { openssl_rand_clean(env, eng, 0); } return eng; }