Creating openssl generates a deterministic key ...
, . OpenSSL md_rand, . rand_seed rand_add, ( / ). md_rand crypto/rand/md_rand.c.
FIPS enabled, NIST SP 800-90. , , , md_rand. , . crypto/rand/rand_lib.c.
, . my_rand. . , .
, RSA_generate_key_ex PRNG, OpenSSL ENGINE. OpenSSL " 1" : Engine Engine 2: MD5 Engine OpenSSL.
, . , ENGINE_METHOD_RAND, .
ENGINE* eng = ENGINE_by_id("my_rand");
unsigned long err = ERR_get_error();
if(NULL == eng) {
fprintf(stderr, "ENGINE_by_id failed, err = 0x%lx\n", err);
abort();
}
int rc = ENGINE_init(eng);
err = ERR_get_error();
if(0 == rc) {
fprintf(stderr, "ENGINE_init failed, err = 0x%lx\n", err);
abort();
}
rc = ENGINE_set_default(eng, ENGINE_METHOD_RAND);
err = ERR_get_error();
if(0 == rc) {
fprintf(stderr, "ENGINE_set_default failed, err = 0x%lx\n", err);
abort();
}
ENGINE, rdrand crypto/engine/eng_rdrand.c. , /. Makefile crypto/engine/Makefile.