Создание пары ключей для RS256 c ++ openssl - PullRequest
0 голосов
/ 10 июля 2020

У меня есть код, который должен генерировать пару ключей для 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?

...