4

公開鍵とモジュロを格納するx509形式の証明書は次のとおりです。

const unsigned char *certificateDataBytes = {/*data*/};

OpenSSLとCを使用して、RSAオブジェクトに変換するにはどうすればよいですか?私はいくつかの方法を試しましたが、それを動作させることができませんRSA_public_encrypt

4

1 に答える 1

12

RSA *構造への公開鍵を意味していると思います。

証明書はバイト単位であるため、DER でエンコードされたバイトの場合は、最初に X509 * 構造に変換する必要があります。

 X509 * cert;
 EVP_PKEY * pubkey;
 //length is the length of the certificateDataBytes in terms of bytes.
 cert = d2i_x509 (NULL, certificateDataBytes, length);
 pubkey = X509_get_pubkey (cert);

証明書に RSA 公開鍵がある場合は、次のようにして RSA 公開鍵を取得できます。

 RSA * rsa
 rsa = EVP_PKEY_get1_RSA(pubkey);

 //Now rsa contains RSA public key. Use it.

 //After use, free the pubkey
 EVP_PKEY_free (pubkey);

これがあなたの目的を解決することを願っています。証明書のエンコーディングが異なる場合は、別の関数を使用してください。X509 * を取得したら、残りの手順は同じです。

于 2013-03-21T04:04:56.753 に答える