1

C/C++ で RSA キー ペアを作成し、それを文字列にエクスポートして操作したいと考えています。

キーの作成に成功しました

rsa = RSA_generate_key(bits, exp, NULL, NULL);
if(RSA_check_key(rsa)!=1){
    std::cout << "Error while checking key" << std::endl << std::flush;
}

pkey = EVP_PKEY_new();
EVP_PKEY_assign_RSA(pkey, rsa);

この時点から、PEM_write_PUBKEY() と PEM_write_PrivateKey() を使用して、秘密鍵と公開鍵をファイルに書き込むことができます。しかし、私がやりたいのは、秘密鍵と公開鍵を pkey から変数に直接取得することです。PEM 形式が望ましいです。すでに見回しましたが、適切な機能が見つかりませんでした。ヒントはありますか?

4

1 に答える 1

5

PEM 表現が本当に必要な場合はPEM_write_bio_RSA_PUBKEY()PEM_write_bio_RSAPrivateKey()(対応するものと共にread) と が必要な関数です。それらにメモリ BIO を与えて、メモリ バッファに書き込むようにします。

BIOたとえば、呼び出すことでメモリを作成できます

BIO * b = BIO_new(BIO_s_mem());

呼び出してメモリバッファを取得します

void * buf;
BIO_get_mem_ptr(b, &buf);

BIOたとえば、次のように呼び出して、既存のメモリの周りにメモリを作成することもできます。

BIO * b = BIO_new_mem_buf(buf, 9001)

ただし、結果BIOは読み取り専用になります。

于 2012-08-16T15:27:50.087 に答える