2

CString から RSA 公開鍵を読み取ろうとしています。ファイルから実行する前は簡単で、次を使用していました。

RSA *PEM_read_RSA_PUBKEY(FILE *fp, RSA **x, pem_password_cb *cb, void *u);

しかし、今はこの方法を使用できません。これが私が使用を考えた理由です:

RSA *PEM_read_bio_RSA_PUBKEY(BIO *bp, RSA **x, pem_password_cb *cb, void *u);

BIO *bpしかし、引数と CString を渡す方法がわかりません!

4

2 に答える 2

1

bio(3)ドキュメントから

BIO は I/O の抽象化であり、基礎となる I/O の詳細の多くをアプリケーションから隠します。アプリケーションが I/O に BIO を使用する場合、SSL 接続、暗号化されていないネットワーク接続、およびファイル I/O を透過的に処理できます。

あなたの場合、BIO_s_mem(3)が適切なタイプだと思います

メモリ BIO は、I/O にメモリを使用するソース/シンク BIO です。

BIO *BIO_new_mem_buf(void *buf, int len);
...
BIO_new_mem_buf() は、buf で len バイトのデータを使用してメモリ BIO を作成します。len が -1 の場合、buf は null で終了していると見なされ、その長さは strlen によって決定されます。BIO は読み取り専用状態に設定されているため、書き込みはできません。

したがって、C文字列では、これは次のようになります

char rsa_key[1024];
...
BIO *bp = BIO_new_mem_buf(rsa_key, -1);
RSA *rsa = PEM_read_bio_RSA_PUBKEY(bp, ...);
于 2013-01-24T13:30:14.620 に答える
0

OpenSSL の BIO は、ファイル ハンドルに似ています。それらのペアを使用して、2 つのソケットを使用する場合と同じように、互いに安全に通信します。

here いくつかのサンプルコードを含む詳細な説明

于 2013-01-24T13:25:56.727 に答える