Я пытаюсь декодировать сертификат, используя API OpenSSL, но получаю ошибку 'ошибка: 0906D06C: процедуры PEM: PEM_read_bio: нет начальной строки'
Я вызываю функцию Lua (пусть скажем, декодировать (строка: pem), принимает сертификат в виде строки в формате pem) из кода C ++.У меня есть функция обратного вызова для этой функции декодирования, в которой, используя код OpenSSL x509, я считываю сертификат и пытаюсь получить некоторые поля и помещаю результат в стек Lua.
Вот моя команда для создания сертификата
openssl req -newkey rsa:2048 -new -nodes -keyout key.pem -out csr.pem
openssl x509 -req -days 365 -in csr.pem -signkey key.pem -out server.crt
предоставляя server.crt в виде строки
cert << "\"-----BEGIN CERTIFICATE-----MIIC9T...-----END CERTIFICATE-----\"";
И декодируя его как
const char* PEMtoX509(char* PEMcert, X509** x509cert) {
BIO* membio = BIO_new(BIO_s_mem());
if (membio == NULL) return "out of memory";
auto return_value = BIO_write(membio, PEMcert, static_cast<int>(strlen(PEMcert)));
if (return_value <= 0) {
BIO_free(membio);
return "BIO_write() failed";
}
char err_buf[256];
*x509cert = = PEM_read_bio_X509_AUX(membio, NULL, NULL, NULL);
if (px509 == NULL) {
ERR_error_string_n( ERR_peek_error(), err_buf, 256);
BIO_free(membio);
}
, проверял значение BIO_write также
BIO_write return value=1288
Есть указатель / подсказка, что я делаю неправильно / отсутствует?