функция CertStore_InstallClientCertificate

Заголовок: #include <applibs/certstore.h>

Устанавливает сертификат клиента, состоящий из открытого сертификата и закрытого ключа с указанным идентификатором. Затем идентификатор можно использовать для ссылки на сертификат в других функциях. Если сертификат любого типа уже установлен с тем же идентификатором, он будет заменен новым сертификатом.

int CertStore_InstallClientCertificate(const char *identifier, const char *certBlob, size_t certBlobLength, const char *privateKeyBlob, size_t privateKeyBlobLength, const char *privateKeyPassword);

Параметры

  • identifier Идентификатор сертификата.

  • certBlob Указатель на большой двоичный объект, содержащий открытый сертификат в формате PEM. Большой двоичный объект должен содержать только содержимое между -----BEGIN... тегами и -----END... . Например, теги для сертификата: -----BEGIN CERTIFICATE----- и -----END CERTIFICATE-----.

  • certBlobLength Длина большого двоичного объекта сертификата, не включая символ конца null.

  • privateKeyBlob Указатель на большой двоичный объект, содержащий закрытый ключ в формате PEM.

  • privateKeyBlobLength Длина большого двоичного объекта сертификата, не включая символ конца null.

  • privateKeyPassword Указатель на массив символов с завершающимися значениями NULL, который содержит пароль закрытого ключа. Длина массива должна быть меньше или равна CERTSTORE_MAX_PRIVATE_KEY_PASSWORD_LENGTH байтам. Пароль требуется, если privateKeyBlob зашифрован.

Ошибки

Возвращает значение -1 при обнаружении ошибки и задает errno значение ошибки.

  • EACCES: операция запрещена, так как в манифесте приложения не задана возможность CertStore.

  • EAGAIN: компонент certstore ОС еще не готов.

  • EFAULT: certBlobпараметр , identifierили privateKeyBlob имеет значение NULL.

  • EINVAL: identifier параметр не завершается null, certBlob или privateKeyBlob содержит недопустимые данные.

  • ENOSPC: недостаточно места в хранилище сертификатов для этого сертификата.

  • ERANGE: certBlobLength значение или privateKeyBlobLength равно нулю или больше CERTSTORE_MAX_CERT_SIZE либо privateKeyPassword длина больше CERTSTORE_MAX_PRIVATE_KEY_PASSWORD_LENGTH.

Можно также указать любой другой errno вариант. Такие ошибки не являются детерминированными, и нет никакой гарантии, что такое же поведение будет сохранено при обновлении системы.

Возвращаемое значение

Возвращает значение 0 для успешного выполнения или -1 для сбоя. В этом случае errno задается значение ошибки.

Замечания

Допустимый идентификатор должен быть уникальной строкой от одного до CERTSTORE_MAX_IDENTIFIER_LENGTH символов в длину. Следующие символы допустимы в идентификаторе:

  • От "A" до "Z"
  • от "a" до "z"
  • От "0" до "9"
  • "." или "-" или "_"

Осторожностью

Так как идентификаторы сертификатов являются общесистемными, az sphere команда или вызов функции, добавляющий новый сертификат, может перезаписать сертификат, добавленный ранее командой или вызовом функции, что может привести к сбоям сетевого подключения. Настоятельно рекомендуется разработать четкие процедуры обновления сертификатов и тщательно выбирать идентификаторы сертификатов.

Дополнительные сведения о том, как Azure Sphere использует идентификаторы сертификатов, см. в разделе Идентификаторы сертификатов.

Требования к манифесту приложения

Манифест приложения должен включать возможность CertStore.