Я пишу функцию C ++ для создания пары ключей RSA и сохранения личного ключа в файле PEM.Я использую код, как в следующем примере:
static unsigned char passphrase[] = "0123456789";
int keySize = 2048;
int keyExponent = 65537;
BIGNUM *bn;
. . .
bn = BN_new();
BN_set_word(bn, keyExponent);
rsa = RSA_new();
RSA_generate_key_ex(rsa, keySize, bn, nullptr);
FILE* fp = fopen(fileName, "w");
PEM_write_RSAPrivateKey(fp, rsa, EVP_des_ede3_cbc(), passphrase, 10, nullptr, nullptr);
Этот код работает, как и ожидалось, но теперь меня попросили сохранить закрытый ключ без защиты парольной фразы.Есть ли способ получить функцию PEM_write_RSAPrivateKey
, чтобы не использовать пароль?Один из вариантов, который я попробовал, состоит в том, чтобы изменить вызов функции следующим образом:
outcome = PEM_write_RSAPrivateKey(fp, rsa, EVP_des_ede3_cbc(), nullptr, 0, nullptr, nullptr);
Но это приводит к тому, что пользователю предлагается ввести кодовую фразу (что в точности соответствует заявленной в документации функции PEM_write_RSAPrivateKey).Я также попытался использовать обратный вызов парольной фразы, который возвращает ноль (чтобы показать, что парольной фразы нет), но это приводит к PEM_write_RSAPrivateKey
возвращению ошибки.
Что еще можно сделать, чтобы закрытый ключ хранился вфайл PEM без ключевой фразы?Я предполагаю, что это должно как-то быть возможно, потому что я могу сделать это, используя команды openssl, такие как: openssl genrsa -out tmsPrivKey.pem 2048
.