OpenSSL PEM_read_bio_X509_AUX возвращает «ошибка: 0906D06C: процедуры PEM: PEM_read_bio: нет начальной строки» - PullRequest
0 голосов
/ 11 июля 2019

Я пытаюсь декодировать сертификат, используя 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

Есть указатель / подсказка, что я делаю неправильно / отсутствует?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...