I am using the following to get the PEM certificate for a connected session in openssl C. What I need is to get a base64 encoded certificate.
if(this->ssl) {
X509 *cert = SSL_get_certificate(this->ssl);
EVP_PKEY *pubKey = X509_get_pubkey(cert);
LOG_INFO("Public key is " << BN_bn2hex(pubKey->pkey.rsa->n));
}
Any information on how can I achieve this would be helpful.
You should use i2d_X509 function to get DER encoded certificate. Then use your favorite base64 encoder and encode it to PEM. Do not forget to add -----BEGIN CERTIFICATE----- and -----END CERTIFICATE----- if you want it proper way.
Here you may find example on how to encode with OpenSSL itself. In using OpenSSL you may simplify things by using i2d_X509_bio function to put DER encoded data directly into BIO.