使用openssl从x509 char数组中提取RSA公钥

bla*_*305 3 c openssl

这是一个x509格式的证书,用于存储公钥和模数:

const unsigned char *certificateDataBytes = {/*data*/};
Run Code Online (Sandbox Code Playgroud)

使用OpenSSL和C,如何将其转换为RSA对象?我尝试了几种方法,但我无法让它工作RSA_public_encrypt

dop*_*ime 10

我认为你的意思是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);
Run Code Online (Sandbox Code Playgroud)

请注意,如果证书具有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);
Run Code Online (Sandbox Code Playgroud)

我希望这必须解决你的目的.如果证书编码不同,请使用不同的功能.一次,你得到X509*,休息步骤是一样的.

  • 不要忘记通过调用```RSA_free```释放````RSA*```! (3认同)