Azure IOTHub - параметр сертификата (путь к файлу) в соединении HTTPS с C SDK - PullRequest
0 голосов
/ 08 мая 2018

Я пытаюсь установить связь HTTPS с Azure IOTHub через IotHub C SDK. Я прошел образцы, предоставленные лазурью. Где они на самом деле хранят сертификат или закрытый ключ в static const char и передают их в IoTHubClient_LL_SetOption () вместе с дескриптором клиента IotHub. Но для меня у меня есть сертификат на моей локальной машине вместе с закрытым ключом. Я не хочу читать эти файлы и хранить их в параметре. Так есть ли способ передать путь к файлу в качестве параметра функции без чтения файлов?

Когда я искал некоторые решения по сети, я обнаружил, что у них есть этот интерфейс в их c # SDK:

var cert = new X509Certificate2("/file/path_to_certificate", "123");

Пожалуйста, дайте мне знать, если возможно передать путь к файлу в качестве параметра, используя IOTHUB C SDK, как C #, или есть какой-либо другой интерфейс, который я могу использовать, не читая файлы.

Ссылка: https://github.com/Azure/azure-iot-sdk-c/blob/master/iothub_client/samples/iothub_ll_client_x509_sample/iothub_ll_client_x509_sample.c

1 Ответ

0 голосов
/ 09 мая 2018

IoT Hub SDK для C не предоставляет метод для этого. Он предоставляет служебные функции в x509_schannel.c . Вы можете использовать библиотеку OpenSSL, как показано в следующем коде.

Использовать OpenSSL:

static X509 *load_cert(const char *file)
{
    X509 *x=NULL;
    BIO *cert;

    if ((cert=BIO_new(BIO_s_file())) == NULL)
        goto end;

    if (BIO_read_filename(cert,file) <= 0)
        goto end;

    x=PEM_read_bio_X509_AUX(cert,NULL, NULL, NULL);
end:
    if (cert != NULL) BIO_free(cert);
    return(x);
}

Кстати, вы можете скачать исходный код openssl и скомпилировать библиотеку для использования в проекте Azure iothub SDK.

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