Есть две функции OpenSSL, которые могут помочь вам достичь этого.
PEM_read_bio () может читать ваш файл сертификата в формате PEM (или любой файл в формате PEM, если на то пошло), и разбивать его на заголовок и данные.
Вас впоследствии интересует содержимое, полученное в data
указателе, закодированное как base64 в длинной строке. EVP_EncodeBlock () может дать вам это, предоставив это содержимое в качестве второго параметра.
Грубая схема вашего кода:
ret = PEM_read_bio(bio, &name, &header, &data, &len);
if (!ret) {
// error
}
// Make sure b64block is allocated to contain at least
// 4*ceil(len/3) + 1 bytes
blockLen = EVP_EncodeBlock(b64block, data, len);
// b64block now contains the desired base64 in blockLen relevant bytes,
// plus a null-character
// Don't forget to OPENSSL_free the name, header and data pointers