PEM_read_bio_PrivateKey возвращает NULL - PullRequest
0 голосов
/ 30 сентября 2018

У меня есть файл JSON, содержащий закрытый ключ (скачанный из Google Developer Console для учетных записей служб).Для построения JWT, когда я пытаюсь загрузить закрытый ключ как структуру EVP_PKEY, используя PEM_read_bio_PrivateKey(), он возвращает NULL (ошибка).

Код

const char *private_key = 
   json_object_get_string(json_object_object_get(token_file_obj, 
                                                   "private_key"));
printf("Private key --> [%s]\n", private_key);

/* Not sure whether this is needed, just added all three in case needed X-D */
OpenSSL_add_all_algorithms();
OpenSSL_add_all_ciphers();
OpenSSL_add_all_digests();

BIO *bio = BIO_new_mem_buf(private_key, (int) sizeof(private_key));
if (bio == NULL) {
    printf("Bio is null **** \n");
    return FAILED_OPERATION;
}

EVP_PKEY *pkey = PEM_read_bio_PrivateKey(bio, NULL, 0, NULL);
if (pkey == NULL) {
    printf("Failed operation error code %d\n", errno);
    return FAILED_OPERATION;
}

Вывод

Примечание: Я изменил закрытый ключ, скопированный с выхода.

Private key --> [-----BEGIN PRIVATE KEY-----
MIIEvAIBADANBgkqhkiG9w0BAQEFBASCBKYwggSiAgEAAoIBAQC9UzuLuU7z0XTS
aixN0uQSGxxw+Ngbm2CyRr01Fm3Zoi4Df1yoVJKxRLscJgzv4hkVzGXsniUIVuqY
peeZ9VAPdqmx1Oz3w/xPUcy6clINTRgg+/xKUQetuxplN4EY9YuQYp8PVqHO3AiZ
WE+VufX0saITyikMCGvIcNdfEky/Kf7CtniEKw1g0eHzbHdxk06wzYmvHxodVwC0
mf8lQ62uFNvw3t0TVaENm0B64NSL+7uCHPZICxJNW352eKgLxisOgV7v6xIYlFz/
O5xoThkRoychsc338/3Pscqd6HVeQkSG/T4lQTl2TFVwJHEF422d8d9ybXFQ7Xe/
qPbhd2A1AgMBAAECggEACtHDHSLHp4jgiXbOVds3s+4vA5iQ5xD712xR+0LvH6kT
qJ51TlhY8r74B22IPzw3TUbbS0ilWqLm8LbIc8SwYNXZ8EL4ENe3J0xILB6E4GQ3
vQjRe+jCDNRct4ySuNutcGCmcOC1SgZKioLgt3CDZQqytblPm7Oufyutry3zS1hQ
ntgqTbhRaI4PyUaq1b0kytoCdOvDpyfxmFBCIUcWnB6S599FG2i3mMzC2a9Fi8p2
swnYIihicdVOHBDOLVJ7kcpugP6ffZRwDc9MKxLwxgV0QwQiqWp/9r+HwYKanQjg
/R8GsPrfxyLPgN4ylA+1QdpPXeIR3AS2xw47v8HDQQKBgQDhGYcTdV1Ikoif1uKV
YYUprGbkS57kCU+uXaP2Cy1ZZJo7WP5OOc9Qp2meL7e17FL6GasxkJTmL1yzRwZD
3sXrokpGq9NCAptlOP9OsCaW1a24D1SpJuuOsyeub2YnfgyO2LWWXMsfMpAv5gqT
lSQJy1SNyuffzS+t2yUdAA/f9QKBgQDXUIL1V4GKYqHAnDnD9aNf68GNSCT4wPSp
QBcAtYZRD2re9lXgGQOwyw8N1YQvPw7tW+YK6lCwz2GAQjZcTnLvT6S6+AY2f9KL
UKTZ9G84wdAguU58qf4AU/3QlIkqTjmR7plrL/60vgNK974JG/Ndm/c9X9uTC+nA
9ECsVz6XQQKBgCy6A8rsARMQerE342HHNMxpAzDNjc7Fwt1kodWbtvESOkscjbtB
ZV4jRas21AwD3yDuxMNedRefxY2hyS7nLvB5GMUeEyYEmpfsUV5zRdemsZPnB+1s
XFXIZ1QTsnqaYyhnCv3Lhli2lUvPK77TXYvMqQpbjOM9RAIJj0BJ6N2ZAoGAOP+K
OXvoBCKKGVgB/rsXDbx2V3VCvEswOWHK9RgYv3qqWu2xHArjLDkE+i+Mt4kk5XbP
dhJDXBr5/58HjvYBfRKDVC92TZUW4mRtz3jivI6qDw+fFGdX4zRY24+GpBljKhuU
p4hkD+rBKmZc+0JX8W7pS2kF0m5z6e1+9WB/JEECDGGGE234F2dkDyPlSRfQaJMk
gf/S0Oh6tRiXcgRBRoD2523H7VU6mCy0fOc7yvVvUu2aAIWbnrJ0GwWuiB5XcsoP
9IlW6lUvCzm1FG2j1gEzU53IHE4nV9/QFnjwmrTGp863G1sGp4J8j4IGN9rebkzd
UwOpaDRE32RuQyFfP/tMqA==
-----END PRIVATE KEY-----
]
Failed operation error code 0

То, что я пробовал

  1. Заменил \n в закрытом ключе из файла JSON с символом новой строки и сравнил его с закрытым ключом, напечатанным с помощью printf ()Оба имели одинаковую контрольную сумму.
  2. Удалили -----BEGIN PRIVATE KEY----- и -----END PRIVATE KEY----- из закрытого ключа и попробовали - Не работает.
...