Я создаю пару ключей RSA со следующим кодом (библиотека C и OpenSSL):
void rsa_gen_keys_ca() {
RSA *keypair = NULL;
unsigned char *pub_key = NULL;
BIGNUM *bne = NULL;
unsigned long e = RSA_F4;
int success = 0;
bne = BN_new();
success = BN_set_word(bne, e);
if (!success) {
errx(1, "\nrsa_gen_keys_ca failed at BN_set_word result.");
goto free_all;
}
keypair = RSA_new();
success = RSA_generate_key_ex(keypair, RSA_KEY_SIZE, bne, NULL);
if (!success) {
errx(1, "\nrsa_gen_keys_ca failed at RSA_generate_key_ex result.");
goto free_all;
}
success = i2d_RSAPublicKey(keypair, &pub_key);
if (success < 0) {
errx(1, "\nrsa_gen_keys_ca failed at i2d_RSAPublicKey result.");
goto free_all;
}
printf("==========RSA Public Key successfully extracted: %s", pub_key);
free_all:
RSA_free(keypair);
BN_free(bne);
}
Когда я запускаю его, я получаю следующее предупреждение:
random: неинициализированное случайное чтение (чтение 32 байта)
Я думаю, что оставить код с этим предупреждением было бы проблемой безопасности, поскольку в прошлом я читал кое-что о генераторе urandom
.
Может кто-нибудь объяснить это предупреждение и как его избежать?