Azure IOTHub — параметр сертификата (путь к файлу) в соединении HTTPS с C SDK

Я пытаюсь установить связь 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

0

Решение

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.

0

Другие решения

Других решений пока нет …