У меня есть код, который должен генерировать пару ключей для rs256, но они не подходят для этого алгоритма. Вот код:
using BN_ptr = std::unique_ptr<BIGNUM, decltype(&::BN_free)>;
using RSA_ptr = std::unique_ptr<RSA, decltype(&::RSA_free)>;
struct key
{
std::string priv;
std::string pub;
};
key get_token()
{
size_t pri_len;
size_t pub_len;
char* pri_key;
char* pub_key;
printf("Generating RSA (%d bits) keypair...", 1024);
fflush(stdout);
RSA* keypair = RSA_generate_key(1024, RSA_3, NULL, NULL);
BIO* pri = BIO_new(BIO_s_mem());
BIO* pub = BIO_new(BIO_s_mem());
PEM_write_bio_RSAPrivateKey(pri, keypair, NULL, NULL, 0, NULL, NULL);
PEM_write_bio_RSAPublicKey(pub, keypair);
pri_len = BIO_pending(pri);
pub_len = BIO_pending(pub);
pri_key = (char*)malloc(pri_len + 1);
pub_key = (char*)malloc(pub_len + 1);
BIO_read(pri, pri_key, pri_len);
BIO_read(pub, pub_key, pub_len);
pri_key[pri_len] = '\0';
pub_key[pub_len] = '\0';
printf("\n%s\n%s\n", pri_key, pub_key);
key m_key;
m_key.priv = pri_key;
m_key.pub = pub_key;
RSA_free(keypair);
BIO_free_all(pub);
BIO_free_all(pri);
free(pri_key);
free(pub_key);
return m_key;
}
Как правильно сгенерировать ключи для rs256?