ereOn ereOn - 1 month ago 24
C Question

Extracting public key from private key in OpenSSL

I need to extract the RSA public key from a RSA private key using OpenSSL.

I'm currently using

RSAPublicKey_dup()
passing the
RSA*
private key to get the public key. However, while the call seems to work, I cannot load (or use) this public key using the openssl command-line tool.

If I generate the public key using the command-line tool ("
$ openssl rsa -in private.pem -pubout > public.pem
"), I can use it and it works like a charm.

Do you guys know how I can get this work ? Maybe another function ? The OpenSSL documentation is quite hard to browse...

Thank you.

Answer

I managed to make this work using PEM_write_bio_RSA_PUBKEY() to write the PEM data to a in-memory buffer, then using PEM_read_bio_RSA_PUBKEY() to get a new RSA*.

Now the generated public key can be used ;)